Fishpool

To content | To menu | To search

Tag - Maemo

Entries feed - Comments feed

Tuesday 9 March 2010

Smartphone platforms comparison - a developer perspective

Having for years used Nokia phones, lately S60 phones of various generations, with a fair amount of experience of the iPhone/iPod Touch OS and lately having used both the Nokia N900 (Maemo OS) and the Google Nexus One (Android) devices as well, I can't avoid comparing these together. As a developer, I'm not really that interested in what they look like today, because today's devices are not what a developer needs to target for applications - rather, what can one determine of the platforms' future from looking at their past?

I can't make any comparisons to the Palm Pre (WebOS), Windows Mobile or Blackberry devices, since I have no first-hand experience of any of them. However, of the four platforms I know to some degree, not only is iPhone still clearly in the lead, but it looks to have the most predictable future as well. iPhone OS 3.1 no longer misses any significant functionality and has gained all the important bits without giving in on the level of platform polish, and the application market is humongous. Its only real weakness is the draconian control Apple enforces, and the crazy restrictions that results in. Those issues are well documented by a recent EFF post outlining the contents of the iPhone developer program contract.

The imminent launch of iPad is the first time the platform starts to experience any kind of real fragmentation in terms of a application development target. At this point that fragmentation looks like to be minimal - with the iPhone, iPod Touch and iPad all sharing the same OS, same UI, practically same inputs and outputs and differing only by what networks are available for communication and what size the screen is, developers are not going to have a hard time at all in developing for all three devices.

That is quite unlike the situation on the other three platforms (Symbian, Android, Maemo). The fragmentation of the Symbian market is a matter of some notoriety. Basically, the same app will not work on phone models launched 9 months apart, or sometimes even on simultaneously launched devices, due to differences in the OS, let alone differences in the form factor, screen size, input mechanisms, and so on. With already two major revisions announced, this trend is only going to continue, and the base OS is already nearing 15 years old, if traced back to the first 32 bit EPOC it evolved from, though I believe the first S60 UI version came out in 2002.

Android is beginning to suffer from the same disease. Not only are the devices on the market each a running different base OS version with different features available to applications, but nearly all of them are also customized by their manufacturers or network carriers with little regard to compatibility (nor in fact could they have any regard for it, since none of them have any previous experience maintaining a platform). And of course each one has a different form factor. However, the most surprising feature of the platform (as a recent Nexus One user) is that even though Android is barely two years old, it already carries with itself a legacy of inconsistent UI controls. What exactly does one do with an indirect-control pointing device (a trackball) on a device capable of direct control via both a touchscreen and motion sensors? Why are the built-in applications (never mind those available on the Android Market) full of menus, "select an object and execute a function on it via a separate control" type UIs clearly inheriting baggage from the decade before touch screens, and other clunky hacks, when there's a rich base to copy from in the iPhone UI design library of 150,000 applications?

So, what about Maemo? I bought a few years ago the very first Maemo device, the N770 Internet Tablet. I've seen and played with every device since. All of them up to the N900 carried the same "windows and menus" baggage Android is suffering from, but the refreshed UI in N900 got rid of most of that. Not entirely so, but enough that I can state with confidence that the N900 UI is more modern, more designed for the touch screen than Android is. However, Maemo's weakness is that of a platform - there's none. Every version of the OS thus far (five iterations on the market) has broken compatibility with the previous. Now, that's to be expected and somewhat forgivable as long as it's in developers-only mode, essentially being beta tested. It's hard to call N900 a beta test any longer. What's worse, is that Nokia has publicly stated that the next device, whatever it's name, and regardless of whether its OS is called Maemo 6 or MeeGo whatever, is also going to be incompatible with the current one, and applications will require a re-write. This is no way to build a developer base.

So, what do we have to look towards to as application developers, trying to figure out what platform to target when working on our next mobile applications?

iPhone, a consistent, easy to use platform with a stable technical roadmap and little legacy baggage, but saddled with an unpredictable owner who's just as likely to deny you from doing business at all than to support you in it?

Symbian, full of legacy, and with a refreshed, incompatible platform to launch maybe next year?

Android, fast-growing, but already full of clunky hacks, and fragmenting faster than than anyone's seen before?

Or Maemo, approaching a state of polish but unable to maintain direction for the length of one device cycle?

I think we're all going to miss the days of Java mobile games development before this is over.

Friday 28 August 2009

Why mobile computers are a bad idea

After my last night's posting, I had a small exchange with @moximilian and @jludwig about my claim that calling the N900 a computer is BS and nobody wants a computer. Somehow, Nokia has gone from calling the N-series devices "multimedia computers" a couple of years back to "mobile computers" today, but it's a totally horrible thing to do from a market positioning point of view. I suppose I should clarify my reasoning a bit.

This is how I imagine the thought process has gone: Nokia, an engineering-led manufacturer of fixed-function devices (phones) has had the ambition to "put the Internet in your pocket" for quite some time. So far, so good. Now, an engineer designs a brilliant package of a high-performance programmable microprocessor, significant amount of working memory and storage memory, and a rich set of input and output mechanisms. To an engineer, this fits the definition of a computer, thus it must be a computer.

However, that is not how the world at large sees computers. The general understanding of a computer is a device which requires constant management, is at risk from viruses and other malware, produces incomprehensible error messages and, despite being a window to the wonderful new world of Twitters, Facebooks and all kinds of information and entertainment, is best left alone when at all possible. Yes, the computer industry has made great progress in the last decades in making their produce more approachable and human-friendly, but it's not there yet. Apple, for all its faults, is generally regarded as the gold standard in "computers for the normal people". Yet who hasn't seen a Mac or even an iPhone (once loaded with applications, at least) bug out in the most bizarre of ways?

Computers don't have any built-in value of their own. The value is completely attached to the applications, services and solutions to which they provide access. If it was left at that, and calling something a "mobile computer" would be simply a bad choice of marketing titles, I wouldn't mind. However, as long as the engineers working on the future devices think it's desirable to think of them as computers, they will carry the problems I mentioned along to future devices, because that's what computers do.

The device in your pocket is a terminal, a window onto the services of the Global Computer, and a flexible access point to things no one has yet to invent. It is programmable, it does have memory, and it can compute. Even so, lets not call it a computer.

Thursday 27 August 2009

Reflections on Nokia Maemo

Earlier today Nokia announced their first handset based on what is likely to be their mobile operating system of the future - the Nokia N900 Maemo. I didn't think I would bother to pay attention, but somehow, I ended up doing so anyway, and this post is a result of that time spent thinking about it. I like quite a few things about it, but can't avoid being deeply bothered by other aspects. I hope by writing this I can make some small contribution to its future.

Why do I care? After the frustrations and disappointments with Nokia devices in the past years, I've tried not to. However, they're impossible to ignore in Finland, I have family reasons to hope this road leads to something good, and it's an attempt to make an open platform -- and I care about open platforms. Why do I feel qualified to comment? Well, because this is not really about devices, it's about software. And software is what I've always done, and managing software organizations is what I think about daily.

There's lot to like about the N900. I haven't seen, let alone played with one, but as far as the specs go, it's a pretty nice set of hardware. Same performance as the iPhone 3GS (which also makes it faster than any Android device announced), 3D acceleration, lots of storage (and a memory card slot), and, as a welcome change from many other Nokia devices, completely standard connectors (3.5mm audio, micro-USB tethering and battery charger). On the hardware side, the only thing not to like about it is the lack of a finger-usable, multi-touch display. This device, like all the other Nokia devices before it, require a stylus or at least long fingernails. It makes up for that by being really high resolution.

It's also based on an open source, Linux-based operating system Nokia has been developing for several years with community participation, Maemo. This makes it more attractive to me on a personal level than iPhone (which is way too closely guarded and controlled by Apple), Palm WebOS (open, but little track record), or even Android (open, but built out of pieces which have far less common with normal Linux than Maemo). It should be fairly clear that all four mentioned are way ahead of things like Symbian S60, which clearly needs to be taken behind the shed and put out of its misery, not matter what Nokia's representatives say about it official capacity.

On a more professional level, the inclusion of Flash 9.4 in the platform is a big deal. I'm anxious to get hold of one and see how much work it is to make Habbo work on it. This could be the first handset capable of technically running it (enough performance, enough resolution, good enough software), though obviously tuning our service to a mobile device would still need work on UI and other pieces.

However, like I wrote above, there's also plenty that bothers me. First of all, unlike most people probably realize, this is actually the 4th Maemo device in about as many years that Nokia releases. First was the Nokia 770 Internet Tablet, essentially an early adopter test device. Then came N800 -- running an updated OS which required applications to be ported to it, but which never was officially released for the 770 (putting the early adopter developers in a rather awkward position). Less than a year later N810 added a physical keyboard and an OS upgrade (which fortunately could be installed, with some difficulty, on the N800). That was quite a long time ago, though.

In the meantime, Maemo has been completely reinvented. The original UI toolkit has been switched to QT, which Nokia bought in the meantime, and all of the (rather limited quantity) applications require significant rework to be compatible with the OS release on the N900. The public reasoning for this compatibility break has been pretty weak -- "to ensure compatibility with S60", which also is moving on to QT framework. Why is this weak? Well, because the transition over on the S60 side also requires all of the (somewhat more numerous) applications developed for that platform to be significantly reworked. In other words, Nokia broke compatibility on both its old smartphone platform and the new platform at the same time, and offered little transitionary compatibility layers to either side. Not for the first time, either. S60 applications have been broken between upgrades several times before, too.

This track record is highly worrying. Despite their years of practice and ambitions to have a lively third party mobile applications market, Nokia has clearly not grasped the importance of a stable platform to the developers they mean to attract. This lack of understanding of one of the most basic requirements is enough to counter pretty much everything I wrote about Maemo versus its closest competitions a few chapters earlier.

Contrast the above to iPhone OS 2.0 to 3.0 transition. Sure, a few things did change. However, developers were given months of notice ahead of time, and the changes, apart from added functionality, were all pretty minor. Of course, Apple has a long history of making major upgrades while retaining forwards compatibility, with the Mac OS 68k to PowerPC, then to OS X, then to Intel CPU transitions.

It's also taken a LONG time for this device to be announced. I don't know, but I get the feeling it's something like a year late. The break in launch schedule between N810 and N900, the amount of changes in the Maemo platform, and the design of the device compared to for instance the N97 all scream "last year" to me. Besides, everyone knew this was coming ages ago. In the time between the launches of N810 and N900, Apple has managed to update the iPhone twice. This lack of predictability in the release cycle doesn't bode well for the next device in the line.

There is nothing more important for progress in software development than cycle time. The only cost-effective, productive way of making software today is to get feedback on it often, and the longer it stays unreleased, the more the feedback is late when it comes. This seems to be another area where Nokia has not been able to shake off their "we make hardware" mentality. Unline hardware, software can be updated with no extra cost. That's an advantage nearly everyone else has learned to make use of, and Nokia, if they truly desire to become a software and services powerhouse, has to finally take to heart.

N900 is not an "iPhone killer". I don't think it's meant to be. When its development started, it's unlikely the iPhone had even been announced. However, it's the best chance for Nokia to ever develop a device better than an iPhone. I hope they will - the world needs competition, and I would like to see Nokia be part in that. However, at this rate they will never catch up - Apple will have released two more major updates before the next Maemo device unless Nokia gets their act together.

I'm still hoping.

Friday 3 August 2007

Maemo Mapper and route quality

Finally a comment about the navigation routes. This is not really about Maemo Mapper, because it simply displays routes from Google Maps, but nevertheless the suggestions have at times left something to be desired. How it directly relates to Mapper is in the way it might help make corrections to these routes require less manual effort.

Once the route instructed to leave a regional road to turn on a foot path shortcut; fortunately, this instruction was obviously impossible to follow. A second time the route changed from a steep but drivable hillside road to a dirt track a few kilometers later; perhaps it would have indeed taken us to the destination, but only with a 4WD vehicle, so we needed to backtrack and find another road, not necessarily a trivial exercise in the narrow one-way street Sintra region.

In both cases little could be done about the error at that moment, but it sure would be nice to be able to feed this information back to the route database. Surely the track information would be valuable to at least Open Street Maps if not also Google Maps. I've heard Navteq also use a similar mechanism to improve their own route databases from tracks recorded by users' navigation computers, and this collective track mapping for sure is the future for how navigation will develop.

Wednesday 1 August 2007

"Dad, are we there yet?"

Maemo Mapper has a few displays in addition to the primary map information. It can overlay the map itself with routes, tracks, and points of information, and show the current speed as well as way-point directions over the map. It also has a secondary display of GPS position information, including altitude and compass.

However, it's missing a couple of critical displays; the distance to the next way-point as well as to the end of the route, and an estimated arrival time to the end of the route. The first two are simple to provide, and in fact are available through the menus, just not as a constantly displayed overlay. The third one can be tricky; the travel time may not be included in the route information, or it may be inaccurate. Estimating it from average speed is the other alternative, also vulnerable to errors when travel conditions change. However, providing some kind of estimate is still a useful service to the user.

The readability of the overlaid information is not quite ideal in the challenging in-car circumstances. The blue dot signifying current position is small on the high-resolution display, and difficult to see in sunlight. Making larger and animated (I would suggest a rotating symbol of some sort; keep in mind also the suggestion about scaling its size according to position accuracy estimate) would help. The speed indicator flickers; whether this is due to lack of double buffering or otherwise, it's distracting. Finally, the route direction dialog also changes shape about once per second, sometimes laying out the direction on one line, sometimes needing to place the last word on the next. Not surprisingly, this draws too much attention to it (hopefully not from the driver!) as well as requiring extra effort to read.

Tuesday 31 July 2007

Maemo Mapper map display and UI

As a reflection of my previous description of a smarter way to download maps, I would also suggest that the display of the route would benefit from a slightly more automatic mode. The level of detail to display could well be chosen automatically based on a few parameters, such as current travel speed, distance from the next way-point, shape of the route ahead, and availability of detail maps. I realize the current design has preferred battery lifetime and has been limited by the hardware capabilities; however, these suggestions should not be greatly more demanding of the hardware.

A few such suggestions also come to mind; besides the semi-3D tilted map display I have read the author is considering, a "smooth zoom" function by map scaling would make the detail level selection a less jarring switch, especially when it was automatically chosen. In addition, at least this writer is challenged by having to read routes where the direction of travel is, for example, down-and-leftwards. Visualizing correct turn directions becomes an effort not always easy to afford while having to make quick decisions in traffic. The map doesn't need to be rotated in real time with 360 degrees of freedom to assist the user in these circumstances; simply turning it in 90 degree angles might be sufficient.

That is for how the display works; as far as how the program reacts to user input, a few small changes here and there might make also that better when considering that this is a program used while mobile and outside.

Tapping on the map currently centers the map on the point tapped, or if the tap is on a POI (or very close to it), brings up a small message box with the POI name in it. I would suggest to make tapping always perform the same actions; zoom in on the point tapped, and display POI or way-point data if available. Re-centering should be done instead by tap-dragging a point on the map; a function which currently behaves as if the screen had been tapped in the position where the drag ended and pen/finger was lifted, exactly the reverse of what such a gesture would be expected to mean (try it to understand what I mean).

Zooming out can also be supported; either by tapping on the center of the map (where instead of meaning "center and zoom in" it will mean "show more around this point") or if the tap-drag action covers a sufficiently large area of the display, zoom out to display both previously visible as well as the revealed area. This behavior has precedent in other applications, is quite predictable and easy to get used to (especially if the UI's feedback to the action is made richer by scaling up/down smoothly instead of a sudden 2x scale change. It should also be nicely forward compatible to a new mode if and when future tablets support multi-touch displays.

Downloading routes and maps in Maemo Mapper

Maemo Mapper currently has three methods of downloading map data; the immediate, "show map of current area and detail level", and the two ahead-of-time modes, "download multiple detail levels of this region" and "download multiple detail levels along a route". The routes themselves are also downloaded over the Internet, from a gateway server performing a format translation.

The drawback of these methods is that along practically any route, especially one that takes the user through municipal areas as well as countryside or highways, any one fixed selection of detail levels is either going to be a big download and memory requirement, or leave the user with lack of detail in critical intersections.

I think it should be possible to improve from this accuracy while reducing the number of decisions the user is required to make. The route information contains a rich level of data about the general shape of the route. In particular, there are the way-points and the distance between them, and the route data on a turn-by-turn basis for display purposes.

Just by using the way-points, downloading detail maps on the way-points themselves, and a level of detail relative to the distance when between way-points, is this selection already made not just automatic, but also richer for the end user. By also utilizing the route shape data, detail level could also be increased when the route takes sharp turns.

Finally, if any points of interest fall close to the route chosen, it would make sense to download a more detailed map around that point.

If Mapper is used in the same area for an extensive period, it might benefit of keeping records of the tracks taken (with significantly lowered resolution), and utilize a similar logic to the above for also keeping detailed maps of the frequently visited places and nearby locations. Of course the user is already likely to be able to navigate in such an area without the help of extensive maps; perhaps this information could be augmented with data about where has she tried to access the maps.

Monday 30 July 2007

Maemo Mapper GPS position accuracy

The first thing I noticed when enabling the GPS receiver with Maemo Mapper and walking about for a while, was that the track recording wasn't very useful if you're going in and out of buildings, subways, or similar obstructions.

When in a constrained space such as on a narrow alley or street with high buildings or when the receiver is just warming up, it's common for the position to jump around on the map quite a bit, with a messy result also in the recorded track. Since the GPS receiver can also give an indication of its positioning accuracy, Mapper should take this into account and not treat the position information on the same detail level. I would suggest that the display would show a lower accuracy position as a larger circle and move it only when the new position data falls outside the boundaries of this circle. This would also "average out" the error data in the track record.

Using Maemo Mapper

As I mentioned previously, I bought a bluetooth GPS receiver for the trip so that traveling in Portugal wouldn't need to be a constant peering of maps. Since I feel much more comfortable with things I can tinker with, and because such an alternative to closed GPS software exists through Maemo Mapper, I chose not to purchase a commercial navigation software package at all.

For those unaware of it, Maemo Mapper is a program for the Nokia 770 and N800 Internet Tablets that interfaces with OpenStreetMaps, Google Maps and Virtual Earth to provide an Internet-connected map browsing and navigation package. It depends on (gateway-translated) Google Maps for route information, and otherwise functions by downloading maps to a memory card cache.

This is a pretty cool program, showing what might be the disruptive future for navigation and location guides in a cooperative, Internet-connected world. It's also one of the more usable applications for the Nokia platform. I wish the platform in general was as well designed for its primary purpose as Maemo Mapper is. If a way to share the track records and point of interest data with others is found, I feel this application might become a category definer. Great work by just one author, John Costigan.

We've spent the last week walking about in Lisbon, driving in the countryside hill roads, and navigating around in the Atlantic coast. While I've used Mapper on and off before to consult maps, on this trip, thanks to the GPS receiver, it's finally become a constant companion instead of a curious diversion. With this experience, I've also seen where it currently (in version 1.4) falls short of a perfect experience. As I write those findings down, I will post them here as suggestions.

Google Maps POI

I wrote a tiny Perl program to process Google Maps' new My Maps KML files to a Maemo Mapper POI database (download). This should probably be converted to Python to be easily installed to the tablet itself, but for now I simply ran it on my laptop and then transferred the database over.

Tuesday 24 July 2007

Adventures in the world of air travel

Finally, safely if exhausted at the hotel in Lisbon. Us, that is, but not one of our bags. Naturally it would be the one with my toothbrush and painkillers to deal with the wrist. Since it seems I can't travel anywhere without an airline misplacing my baggage, I am starting to seriously question the point of packing in the first place.

This time the dubious honor goes to the combination of Finnair (Helsinki to Amsterdam) and TAP Portugal (Amsterdam to Lisbon), and in particular to the handling agency at the Lisbon airport, who managed to make a lasting impression with their total inability to deal with lost baggage complaints despite several employees seemingly dealing with the complaints. We finally left the airport an hour and a half later, having left a notice form but not receiving any confirmation that anything would be done. Sanna is pretty much convinced we'll never see that bag again.

On a more positive note, at least we know precisely where we are, thanks to the Bluetooth GPS receiver I bought at the airport. Finally I might have a use for the Nokia 770 where the built-in software and its limitations make no difference. Maemo Mapper is awesome.

- page 1 of 2