29 January 2010

MapBuddy 0.2, libchamplain 0.4.4 and 0.5

What a big release week!

First, a quick update to MapBuddy:

  • Translations (French, Spanish, German, Swedish, Polish, Slovak)
  • A “Add to addressbook” button on merchant’s window (with the help of Jonathon Jongsma)
  • A precision circle is drawn around your position
  • Kinetic scrolling is turned on

Then, a bigger update for libchamplain 0.4.4:

  • API clean up (with API backward compatibility): champlain_view_set_size should have never existed
  • Fix to make Python bindings work out of the tarballs!
  • Use shared paths by all tiles consumers on Maemo devices to store tiles (saves bandwidth)
  • Load tiles in a spiral manner from the centre (thanks to Jason Woofenden)
  • Optimizations resulting in
    • Faster start-up
    • Smoother scrolling
    • Energy savings (by doing less computations)

Then, a huge update for libchamplain 0.5:

  • First development release with new APIs:
    • Local map rendering (Google Summer of Code of Simon Wenner)
    • New Map Source mechanism à la Pipe and Filter (Jiří Techet)
13 January 2010

OpenStreetMap mappers band to improve Haiti’s map

In order to help people, free and widely available maps are a good tool to rescue parties.  Many users of OpenStreetMap have organized a wiki page to manage the work that needs to be done to quickly improve OpenStreetMap for this part of the world. Thankfully, Yahoo has high resolution imagery of the region making it possible to trace the streets.  Note: remember that only Yahoo imagery can be used, as OpenStreetMap has a signed derivative work permission with Yahoo.

If you know how to edit maps, maybe you can land a hand! CrisisCommon also has other resources.

Follow-up: Mikel Maron has before and after images along with more info.

Slippy Map

12 January 2010

One more map app for the N900

Well, I finaly got my hands on a N900 (given as a Christmas gift by Collabora to Gabriel).  This gave me the occasion to observe first hand that the Ovi Maps, while having a lot of features, is slow and that the Hildon Emerillon port is less than perfect.  It is hard to use with fingers and feels alien to the platform.

To solve this, I created Map Buddy: a map application specifically designed for Maemo 5.  It is quite simple to use and works out of the box (no configuration or selection of plug-ins required!).  It also has something other apps don’t: it uses web-services to provide business search capabilities.

Here’s the use case I built Map Buddy upon: you just arrived in Montréal and want to find a sushi restaurant.

  1. You start Map Buddy, it will be centred on the place you closed Map Buddy on.  You can click on the “Center on me” icon on the bottom left, and it will centre the map on Montréal ‒ remember you are in Montréal for this example! By the way, your position is marked by a blue dot. Later version will display the precision too.
  2. To search for businesses, you have to switch in business search mode, tap on the magnifying glass to do so.
  3. Enter sushi in the search bar and press enter! The map will be populated with markers representing the places tagged with sushi (powered by Praized Media, a Montréal start-up).
  4. To get the name of the place, tap once on the marker.
  5. To get the complete details about a place, tap once on the name: a new window will be opened with the business’ address, phone number and web site if available.  Map Buddy even provides a call button!
  6. To clear the search results, tap on the trash can in the search bar or do a new search.

It’s that simple!

Map Buddy includes a place search so that if you are looking for Pizza in New York, you don’t have to scroll from San Francisco to New York to get there.  Select the Place search mode, enter New York in the search field and press enter.  A picker dialog will be opened to let you select the correct New York.

To switch to other maps, click on the layer icon, it will bring up the list of possible maps to display.

I hope you like it!  Try it today! WARNING: Installing Map Buddy in this early stage requires adding the extras-devel repository which might install unstable software on your device.  Try it at your own risk or if you are a professional ;-)

NB: Praized Media only has strong data sets for Canada and United States.  They plan to sign business partnerships to get data for Europe in 2010.  In the mean time, you can directly add businesses using this form.

NB: Help is appreciated to translate it!

4 January 2010

Can you spot what’s new?

Yes! Libchamplain now has a scale! It was long overdue. In fact, I first started to work on it way before libchamplain 0.2.2 was even released (1.25 year ago). It got impeded by more important features and bug fixes. Two or three months ago Tollef Fog Heen took over the branch and added the magic required maths to compute the scale. I then took over his work (as he was quite busy and I wanted this too) to provide the final result.

Since all the changes are backward compatible, I’ll soon release a libchamplain 0.4.3 with the scale disabled by default (to ensure the same visual behaviour as before upgrade). To display a scale, an application just has to change the show-scale property to TRUE.

#if CHAMPLAIN_CHECK_VERSION (0, 4, 3)
g_object_set (champlain_view, "show-scale", TRUE, NULL);
#endif

The scale also supports other exotic units than the SI/metric ones. It can display miles and feet, if you’re into that. :) By the way, the scale will automatically switch from kilometres to metres when it makes more sense. That was quite more complex to do with miles and feet as they are not simply a power of 10. Set the scale-unit property to CHAMPLAIN_UNIT_MILES to get miles.

You can limit the width (in pixels) of the scale with the max-scale-width property.  If you watch closely, the scale will adjust itself right away when you move the map.

9 November 2009

A new plugin to lead them all :)

In the last weeks I (among other things) worked on a new plugin repository (vastly inspired by EOG‘s) for third party plug-ins for Emerillon.  There are currently 4 plugins being worked on and not all of them should be distributed with the base Emerillon application. Enters emerillon-plugins.

It currently has 1 plug-in.  This plugin is one that will be useful to Montréalers: it displays the status of the Bixi network.  Bixi is Montréal’s self-serve public bike system.  Apparently its design is so good — the bike system, not the plug-in :) — that it’ll be implemented in both London (UK) and Boston (USA) very soon.

So the plug-in is quite simple: you have a drop down list where you select to see available bikes in stations near you or available docking stations.  The map is updated instantly to display the new values.  The markers on the map change in size depending on the available bikes/docks.  The information is automatically updated every 5 minutes.

After all the legal verifications, this plug-in is now free for everyone to share.  It should serve as a good example of what you can do with Emerillon and libchamplain.  It is the first piece of code (that I am aware of) to demonstrate ChamplainMarker sub-classing to implement unique look & feel.

Disclaimer: This plug-in has been independently developed by Novopia Solutions and is not in anyway related to or endorsed by Bixi, the operator of Montréal’s public bike system.  Bixi is a trade mark of Société de vélo en libre-service.

Un greffon pour mener la voie :)

Ces dernières semaines, j’ai travaillé sur un dépôt pour greffons (très fortement inspiré de celui d’EOG) pour les greffons de tierces parties pour Emerillon.  Il y a présentement 4 de ces greffons en cours de réalisation et ils ne devraient pas tous faire parti du paquetage d’Emerillon.  C’est pourquoi il y a maintenant emerillon-plugins.

Ce dernier compte un greffon.  Ce greffon en est un qui sera très utile aux Montréalais: il affiche l’état du réseau Bixi.  Bixi c’est le réseau de vélo en libre-service de Montréal.  Son design est si bon — le réseau de vélo, pas le greffon :) — qu’il sera bientôt disponible à Londres (Angleterre) et Boston (États-Unis).

Le greffon est très simple: une liste déroulante vous donne l’option de visualiser les vélos disponibles ou les points d’ancrage libres.  La carte est immédiatement mise-à-jour pour afficher la nouvelle information.  La taille des points sur la carte change en fonction du nombre de vélo ou de points d’ancrage.  L’information est téléchargée depuis les serveurs de bixi à toutes les 5 minutes.

Après toutes les vérifications légales, ce greffon est maintenant librement disponible pour tous. Il sert de très bon exemple de ce que vous pouvez faire avec Emerillon et libchamplain. C’est à ma connaissance le seul code qui existe qui sous-classe ChamplainMarker afin d’implémenter un rendu unique.

Avis: ce greffon a été développé de manière indépendante par Solutions Novopia et n’est pas lié, supporté ou approuvé par Bixi, l’opérateur du système de vélo en libre-service de Montréal.  Bixi est une marque de commerce déposée de la Société de vélo en libre-service.

14 October 2009

Back from Boston with an Emerillon release

So I am finally back from the Boston Summit, a unique occasion to get updates on latest developments, and I am releasing Emerillon 0.1 for distributions eager to package.

Mandatory Greyhound rant

With a 3 hour delay on departure (making a total of 5 hours of wait in Boston’s 10 ℃ station), we managed to arrive 5 hours late in Montréal, due to a defective heater in the bus.  Add moving everyone at 5 AM from that defective ’70s bus to a freezing ’90s bus with actually less seats than the previous one, and the fact that there was enough people to fill 3 buses in Boston, but only 54 managed to leave on the first one and you’ve got a complete picture of the fiasco.

I am not going to run in too much details but all this could have been so easily avoided.  The delays were due to the fact that the bus that was supposed to bring us had been delayed at the US border.  Fine, shit happens.  What is not fine is that they waited until our expected departure time to get a replacement driver (since he had busted his legal driving time).  See, it takes about 5 hours from the border to Boston.  Knowing he was going to be late (and therefore busting his hours), the driver should have called his manager, which should have prepared a replacement driver for the next departure in 10 hours! But none of that happened.  And, to top it all, there were no Greyhound dispatcher to be called by the Boston station employees to inform them of a missing departure bus.  Complete utter fail.

Emerillon 0.1.0 release

Now for the fun part.  With all that time on hands, I created 2 new plugins for Emerillon (Copy a link of the current view to online maps, and display map position in statusbar) and cooked a release including all the 5 submitted translations.  Woot! Grab the release here.  This is a preview release with no guaranty on plugin API stability.  See the complete announce email.

Before anyone asks, I am using the gnome-colors Shiki-Wize theme.

For those who missed the original announcement: Emerillon is a map viewer. Aiming at simple user interface, Emerillon is a powerful, extensible application. It features OpenStreetMap based
maps. Use it to browse maps, search the map for places, placemark places for later quick access and more!

There are even packages of this release for Ubuntu Hardy from Mathieu Trudel.  See his blog of the install instructions.

6 October 2009

Announcing Emerillon, the map viewer

Didn’t I foretell you there’d be more announcements?  Here’s one: Emerillon.  It is pronounced Ey-may-ree-yon. It is destined to be GNOME’s Map Viewer.  You will quickly recognize its sister apps: Eye of Gnome, Evince and GEdit. After all, they share a lot of design concepts.

Why another map application do you say? Simply because none of them is free AND targeted at the Gnome desktop AND has ease of use in its (visible) goals.  This project should be easy to use for anyone, not only for mapping geeks.

Emerillon is an application designed to be extended.  There is a number of small specialized map applications that were created in the last year, I have hope this one will be the catalyst of the development efforts.  Out of the box, Emerillon comes with 2 plugins: a search and a placemark plugin.  There are numerous plugins ideas : a GPX viewer, GPS integration, Telepathy integration (both to share the app and to display your friends location), a plugin to display the position under the mouse cursor, a plugin to display personal markers and I have two special ideas that I want to keep for myself to implement :) Other ideas are welcomed too!

Emerillon is a project originally started by Marco Barisione in October 2008.  Due to various reasons, it remained dormant for almost a year, until I decided to take over and push it forward.   Turns out, Marco had laid out very good UI base on which I built upon.

Visit http://www.novopia.com/emerillon/ for more screenshots and details.

Kudos to be given

Emerillon is built of code inspired by other projects and very cool libraries.  Early on, Marco borrowed Evince‘s sidebar.  This sidebar is so nice and clean that it should be part of Gtk+! The problem is that this code is GPL but Gtk+ is not.

Another quite common widget in Gnome apps is Epiphany’s spinning throbber.  Again, it is GPL’d and the code has to be copied from apps to apps.

I am not going to kudo libchamplain ;) Lets say I have found API omissions that will need to be addressed for Emerillon to work perfectly. Who needs a “selected” signal after all? :) Still, libchamplain was quite necessary to build this app.

Emerillon’s plugin system was faster to implement than I expected when I got this idea.  But thanks to Ethos, it was a simpler task.  Ethos is a complete (Gedit/EOG alike) plugin architecture in a library.  It even provides UI widgets to manage the plugins.

Emerillon’s search plugin uses librest to fetch its data from geonames.org.  Rob Bradford was right: it is now fun again to parse XML.  I mean really.  This library makes fetching web service data an easy task.

Fetch Emerillon from Gnome’s git today and give it a try!

2 October 2009

New beginnings

About a month ago, I left Collabora in order to bring new, different challenges in my life.  Today, I am announcing publicly that I have founded Novopia Solutions, a new player in free software.  Novopia’s long term goal will be to bring free and open source solutions to market that have yet to be penetrated by free software solutions.

While this is a field where there are plenty of FOSS solutions, the primary focus in the upcoming weeks will be on improving the geolocation solutions in GNOME.  Commercial support for libchamplain is of course on the list.

More to be announced later. :)

14 September 2009

libchamplain hits 0.4

About a month after its 1 year birthday, libchamplain hit the 0.4 mark – the first stable release of this new version.  It’s a Clutter based ClutterActor and Gtk+ widget to display street maps, cycle maps or other maps.  It comes with eye candy.

Special thanks to all contributors to this release (in chronological order of first contribution):
Pierre-Luc Beaudoin, Jonathon Jongsma, Lorenzo Masini, Packz Enoch, Thomas Van Machelen, Anders M-Pedersen, Stephane Delcroix, Denk Padje, Mike Sheldon, Emmanuel Rodriguez, Emmanuele Bassi, Lionel Dricot, Simon Wenner, Kritarth Upadhyay, Debarshi Ray, Paulo Cabido, Sjoerd Simons, Victor Godoy Poluceno, Javier Jardón, Patryk Zawadzki, Sebastian Reichel, Tim Horton, Frederic Peters, Cosimo Cecchi, Vincent Untz, Felix Riemann


Libchamplain in action in Eye of Gnome,
displaying a picture of Lübeck, Germany.

New in this release (since 0.2.10)

  • Support for custom map sources: embedding apps can define their own map sources and provide tiles for libchamplain to display.  This includes a way to list available map sources.
  • Zoom on double click is now configurable.
  • View keeps centred when you resized the view.
  • A way to convert screen coordinates to map coordinates: lets you interact with the map and its markers.
  • Cache tiles: downloaded tiles are cached.  The cache is intelligently validated against the server every 7 days for now.
  • Revamped marker API: Default markers now have a nicer look with rounded corners, nicer colors and a shadow.  The API allows easy image and label markers to be created.
  • Limit visible zoom levels: you can now limit what the user can view.
  • Feedback during loading: ChamplainView will emit a state change when loading resources from network providing better feedback possibilities to the user.
  • Line and polygon drawing API: You can now easily draw lines and polygon over the map.  This is useful for indicating routes or highlighting areas.
  • User Agent: libchamplain now identifies itself in HTTP requests
  • Marker selection support: libchamplain provides a helpful API when you want to let user select a bunch of markers (or only one).  This API has been designed with Gtk+’s selection API in mind.
  • Ported to Clutter 1.0: libchamplain now depends and use Clutter 1.0.  It allowed us to add the very nice in and out for markers.
  • Bindings: the API is now bindable.  Only the Python bindings works for now but that’s not because the Perl binder didn’t try hard to get some too, try having a baby close to a release! :)   C# bindings and C++ have been worked on but didn’t make it on time for the release.
  • Many bug fixes.

Plans for the future

Now that 0.4 is behind us, we already have a huge list of nice to have in 0.6 (due in same time as Gnome 2.30 or Gnome 3.0):

  • Smooth zooming and animation;
  • Rotation of the map;
  • Display cached tiles while downloading new ones;
  • Add a clustering layer: a layer where markers very close on a map will be merged into one marker;
  • An MVC API for layers: use ClutterModel and support GtkTreeModel as sources of Marker data;
  • Limit the visible area on the map;
  • Have the map wrap horizontally;
  • Have a nice dragging mode for markers;
  • Add a map scale;
  • Provide better accessibility;
  • Better cache policies;
  • Better animations;

And most importantly: local rendering of maps. This project is well on its way with the recent conclusion of the Google Summer of Code 2009.  Simon Wenner, which you probably read the progress on planet.gnome.org, did a marvellous job on this.  His work should be included in the first development release of libchamplain 0.5.