Summer of Code has now practically ended. I’ll post a more detailed look at my original plans and actual accomplishments soon, for now I’ll just say that I’m fairly happy with the results: some things we’re left undone, but other unplanned features got implemented. What I’m wondering is how the rest of Maemo SoC went — according to Mathieu Blondels last post he’s doing ok (although that was a month ago), but the other two projects seem to have been dropped in the mid-term evaluation.

Smoove “Instant Desktop migration” and the Ruby bindings project have had no activity at all as far as I can tell (there’s some progress on the Ruby front, but it seems unrelated). Now, a sample size of four means that we can’t draw too much conclusions, but a half-way failure rate of 50% still seems high — compare with Gnome’s 2 out of 29 = 7%. What went wrong?

Eminently employable

Conveniently at the same time as SoC ends, I’ve found out that I won’t be getting either of the two jobs I’ve applied for. Naturally the application processes took about nine weeks to finish… So, if you’re looking for a developer or development support person with any/all of these qualities (preferably around Helsinki), let me know:

  • Involved with maemo from the beginning, familiar with development on the platform
  • Understands open source tools, processes and communities
  • Experience in closed and open source development in several languages on multiple platforms
  • Lots of knowledge and hands-on expertise in Geographic Information Systems

Full time, part time, freelance — I’m not too picky as long as the job is interesting.
Contact information
LinkedIn profile

Finally got the release out the door! More information at the home page, and here’s a link to Geoclue status applet install file (for IT OS 2007) for the impatient:

ac_install_icon.png

This isn’t the major release (except for me, this being the Summer of Code evaluation release): Geoclue position API is going through some changes at the moment and the next release will probably be a lot more more interesting. Still, feedback from users and developers is very welcome!

I thought some usage advice might be nice too, so here goes: Geoclue tries to abstract the source of the data away and provide just generic location data, but unfortunately that doesn’t always work like magic (not yet at least)… Here are some tips if you’re not seeing anything useful when you select different position providers:

Hostip

  • visit Hostip with a browser and click “Make a correction” if your location is not shown or is wrong.

Plazes

  • Plazes is the most useful provider for frequently visited places with wifi. See my earlier post on why getting started with it is currently a bit difficult.

GPS

  • gps only provides coordinates, which are currently not shown on the status applet. You’ll need to use “geoclue-position-example gpsd” on the command line or try the home applet from the garage download page, if you want to see the output.
  • If you do not get any results, make sure you own a bluetooth gps device and that it’s on and paired (using Control Panel –> Bluetooth)

Resource use

I’m always worried about the resource use of things I install on my tablet and I’m pretty sure I’m not the only one, so I guess I should talk about that too:

  • geoclue position providers get started only when requested
  • currently the providers stay running indefinitely
  • CPU use is minimal, I have not observed memory use much yet

Wrapping up

August 12, 2007

I promised some screen shots of plazes-enabled geoclue. Well, this is what I see when I connect to the wireless network of the summer cafe just around the corner here:

plazes-cafe.png

When the connection is made, the plazes position provider checks if the plazes.com database knows the location of the MAC address of the router. If plazes.com has a “plaze” with that MAC address, geoclue emits current_position_changed and civic_location_changed D-BUS signals with all the details so all applications interested in location information find out about the change immediately. I think this’ll work very nicely for commonly visited places.

At the moment I’m working on a usable manual position provider, a kind of backup position provider for the inevitable situation when there are no automatic providers available. That wasn’t as simple as I assumed (anything with user interaction is tricky to get right…), but should be done in a day or two. The rest of the week is reserved for wrapping things up before the Summer of Code deadline, August 20th: bug fixing; new releases of geoclue, the statusbar applet and the demo app (finally uploading to the Extras-repository); documentation and uploading everything to code.google.com.

In case anyone’s wondering: I definitely won’t be going away when Summer of Code ends. Geoclue is just getting to the point where it is interesting: It’s already usable and there’s a growing interest from 3rd party developers. I’m now quite familiar with the code base and have several improvement ideas.

Interested in the position API? Take action now!

Speaking of improvement ideas… if you’re interested in the Geoclue positioning API you should take action right now: We are (or mostly Keith Preston is) making some needed changes in the API and now is the time to voice any concerns or wishes — the plan is to freeze the position API after this. Take a look at the current API definition and comment on the mailing list.

Going plazes

August 2, 2007

I’ve been working on a couple of Geoclue features that, when combined, will start making things interesting:

Feature 1: Plazes support

Plazes.com supports querying “plazes” with a MAC address of the router you’re connected to. This means that at home I get this output from a geoclue test program:

jku@loki:~$ geoclue-position-example plazes
You are at 60.196908 24.87822
Country: Finland
Locality: HELSINKI
Postalcode: 00330
Street: Solnantie 24
Text: Jussi's home

Plazes.com-support for Geoclue is actually not totally new — the original python version has existed for some time already. It’s awfully nice though: the location accuracy can be way better than anything ip-based positioning can offer (block-level vs. city-level).

Feature 2: Internet Connectivity Monitoring

All positioning providers that use web services can monitor internet connection events if libconic is available. I have this working with the hostip backend already and it’s quite nice:

  • no network latency when an application needs the location information
  • enables “new location”-events without polling all the time

So?

If a user goes through the trouble of creating plazes* at most common locations (home, work, regular cafe), geoclue can provide fairly accurate location information and event notifications (“New location: Max’s Cafe”) wherever she goes. This is the point where Geoclue is already useful to application developers…

*) creating a plaze is easy, you can do that at http://www.plazes.com. Unfortunately adding the MAC address to the plaze is not — at least not on linux. I’m hoping Maemoplazer can do it, but haven’t been able to check: it keeps refusing to start.

I’ll finish these features and package them by next week. will post screen shots then. Questions or comments are welcome: use the geoclue mailing list.