Maemo5 Calendar — is it cruel joke?

I was using many different mobile devices during last years. Some were GSM phones, some were PDA, now I use Nokia N900 which tries to join both functions.

When I saw calendar on N900 I thought: Is it some cruel joke? But then I got to simple conclusion: designers and developers never used anything newer then Nokia 5110 and never saw (or heard) about PDA devices. I do not see other reason for creating such brain damaged application.

What it supports? Simple events in few local calendars with simple repeat, simple only predefined alarm times, todos (without priority). User gets unusable month view + nearly not usable week view + agenda view. And desktop widget which does not allow any configuration. Probably even PalmOS 1.0 DateBook was more advanced (I would have to check on PalmPilot 5000 which I have in basement).

What it lacks? List would be quite long but I will list few most important things:

  • custom alarm times (I like 1:15 alarm times) — now it does not even display such properly
  • edition of repeatable events without breaking repeat cycles
  • extended repeat possibilities (like: 1st Tuesday in month, every 3rd Saturday)
  • remote calendars
  • portrait view
  • configurable work hours in week view
  • day names in date picker (PalmOS like chooser instead of iPhone like rolling lists maybe)
  • search function
  • attendees support

What makes situation even worse is amount of reported bugs against Calendar. Many of them got resolution ‘MOVED’ which is other word for WONTFIX as it looks like everything which lands in so called ‘brainstorm’ area of website is on a list of things to forget.

So far there is only GPE calendar which can be used instead of Maemo one but this one does not have working alarms (without running it in background or using ugly GPE summary widget). Platform is so niche that there will be no commercial application to fill that hole and that’s sad. And I do not require port of PalmOS Agendus (the most advanced PIM I ever used on mobile devices) but something usable.

What makes a good developer board?

During FOSDEM 2010 I had discussion with Ulf Samuelsson from Atmel and few other guys about developer boards. What is required on them and what should be avoided. Some time later I had a talk with one person about new OMAP3 based board and what I would like to see on it. So I decided to write something in public.

So far I used mostly ARM developer boards from ST Microelectronics/ST Ericsson, Atmel, Cirrus Logic, Intel, Simple machines, Bug Labs, Texas Instruments. Some were better then others etc. But what ideal developer board should have? Let me try to create a list:

  • 2 serial ports (one can be null modem, second should have RTS/CTS/DTR lines)
  • working Ethernet not placed on USB bus (so it works when USB does not)
  • powered USB host port (more then one would be great)
  • USB device port
  • JTAG connector
  • one power input — +5V or +12V — other should be forbidden as those ones can be taken from PC PSU which can power multiple devices at same time
  • SD/MMC slot — even if it is over slow SPI (like on Sim.One — 250KB/s max)
  • GPIO pins
  • I²C bus
  • SPI bus
  • keypad with Up/Down/Left/Right + Enter at least
  • easily reachable reset button (pins to short are acceptable as micro switch can be put on them)
  • few LEDs controlled by system
  • all connectors put on one or two edges of board — top one + one of side ones are ok (Atmel at91sam9m10-ekes for example)
  • mounting holes (so board can be mounted on A5 sheet holder for presentation at stand)
  • backup battery for RTC
  • U-Boot
  • quite fresh kernel (not NHK-15 due to 2.6.20 kernel which is 3 years old now)

What to avoid:

  • female serial port connectors (Atmel NGW100) — most devs will find 3 null modem cables before straight one
  • flat cables which connect “debug boards” with main board (Openmoko phones, NHK-15 from ST Ericsson)
  • RJ45 connectors for serial console (Sim.One) — DB9 or properly done USB->RS232 adapter on-board are best
  • placing connectors on all edges (BeagleBoard — but it had to be cheap)
  • non standard bootloaders (U-Boot is what I prefer)
  • Ethernet on USB (Bug 2.0) — it is hard to use when you have problems with USB Host
  • jumpers (Atmel boards)
  • non standard connectors (Bug r1.2 and it’s Handylink crap — next versions use iPod connector which is easier to use)

I am trying to not cover should developer board contain display with touchscreen or not as it depends on type of board. But if screen is present then more then QVGA (320×240) would be nice (WVGA anyone?). Some kind of video out connector can also be used but would be nice to have one of VGA/DVI/HDMI so normal PC monitor can be used — Composite video and S-Video require searching for some kind of TV…

Which boards are my favorites? There are few:

  • FriendlyARM with WVGA screen — cheap product which gives access to everything needed to start with embedded Linux
  • Atmel AT91SAM9263-EK — my first own developer board
  • BeagleBoard Cx — has own problems but I like the power of it

Another job change

Since OpenedHand was acquired by Intel I worked with few customers. The biggest one was Bug Labs Inc. with which I spend lot of time on hacking Poky Linux and OpenEmbedded to make their BUG devices prosper in hacking community.

Thanks to developers there Java land is not so strange for me (not that I started to like it) and I know which projects exist in that area. Many of changes done for BUG landed in OpenEmbedded metadata and helped other projects. Last release of Poky ‘pinky’ (stable branch which we used with R1.4) was done due to out improvements and bug fixes (we got credit on them). It was great time and I really enjoyed it.

The open source companies have this nice feeling — developers work on code to make it better and better (as other people look at code) and are friendly to own employees and contractors.

What next? My first job where my experience from OpenEmbedded will be used in a project which does not derive from it. Yes — no OpenEmbedded, no Poky Linux. But it will be GNU/Linux still and still ARM architecture.

In 3 weeks from now I will work for Canonical as Foundations OS Engineer. The goal is to make Ubuntu/ARM fly on supported devices (armv7a only). This will be full time job but I hope that will have possibility to do some OE related things from time to time.