Ever since it came out in November 2009 I wanted a Nokia N900. Many reasons made
me buy one, some reasons made me wait until this month. Maemo, it's OS, is almost
exactly what I wanted, a real GNU/busybox/Linux. I can do a lot of stuff with it
because it's, I think, the closest to a mini computer with an integrated GPS,
camera, cellular network modem, WiFi and can act both as an USB master or a
slave. I don't know about the N950 or the N9, but really this is a tinkerer's
dream.

So far I haven't done much with it, most of my personal time is being invested
in something else, but I've been using it mainly as an in-car computer and a
WiFi-to-LAN router. The latter will be the subject to another post, but I want
to concentrate on the former in this post.

As an in-car computer right now I want two things: navigation and audio player.
The audio player is done; so far the media player that comes in the... phone?
computer? I'll say computer. So far the media player that comes with the
computer is enough for me. Maybe sometime I'll do a `satyr` skin for Maemo and
port the beast to it, just for the heck of it.

Also it has the OVI maps, the default app for navigation, which from what I have
heard, is very good, but it needs a data connection to work. I don't want to
buy a data plan yet, and also there are places where there is no good data
coverage. You might not even get enough signal to make a call or even send an
SMS. So I want something that can cache maps locally in the computer.

The answer is actually somewhat complex: marble, monav and OpenStreetMap. Marble
is the KDE map viewing application. It can show several types of maps, even from
several celestial bodies. It can talk to a GPS to record and save tracks, and to
monav, which is a routing application that uses OSM data. Of course, Marble can
use OSM's tiles. And the good thing about both is that they can use data cached
on the computer, which means no data link needed, at least not all the time.

Installing them in Maemo is as simple as selecting them in the App manager
(although I suggest to install and use Faster Application Manager, which is no
so far from a mix between a smartphone store and, let's say, aptitude). Both are
in the `extras` repo.

Once they're installed, the next logical step is to donwload monav's data. For
that you open marble; from its menu you select «Routing», then «Configure».
There you can select Monav, and «Configure». There you can download routing maps
per country. Download all the ones you want, but remember it takes space and
some time to uncompress.

As for the maps themselves, you can select the tileset you want (so far the
common Mapnik and OSMaRenderer are available). Marble will start downloading and
caching tiles from OSM's servers. You can even use «Download Region...» to
download the tiles for a certain region or route in an interval of zooms.
Becareful about this, because OSM's servers will ban you for a little while if
you pull too much info.

So now I have an almost complete offline map and routing solution. I still have
to investigate how to add voices (so far it's mute). I also found a couple of
problems with this setup. The most "simple" to solve are UI ones: the navigation
instructions have too much text and too small icons, and while having the
navigation widget on, you lose the zoom controls. Luckily my dock leaves the
volume/zoom hardware buttons free, so I can zoom with them (who needs
multitouch :).

But the most prominent one is the map itself. Both Mapnik and OSMaRenderer are
too confusing for in-car navigation, they have too much detail, and minor
streets are not clearly distinguished from the blocks themselves. Mapnik in
particular has a very low contrast, which also makes it hard to read in plain
daylight.

Enter CloudMade. I still don't get much what CloudMade is exactly for, but one
thing I know: it's very easy to create tilesets from OSM data. First I browsed
the styles already in the site and I found one called «Almost Ordinance Survey
25k». I took it and modified it heavily. I named it «daylight in-car navigation».

Then I found out that it wouldn't be easy to use the tiles with marble. At least
I got to find the right settings. Next chapter will be about using OSMaRenderer
locally.

