As you may have guessed from my previous posts on my new company/project LocalStream and iterables-support, the two topics are related. A lot of the open source work I’ve been doing on GitHub lately actually relates to LocalStream. The post on iterables-support was intended as the first in a series of posts that highlight the different GitHub projects I’ve created while working on LocalStream. In the second post of this serie, I want to highlight GeoKV, a persistent key value store for geospatial data that is optimised for processing and iterating over this data.
I just got back from Baltimore where I had a nice hotel room on the 21st floor with a view on the Baltimore skyline and harbor. In other words, I just had to shoot some nice panorama pictures. This afternoon I spent some time stitching them together. There are various tools you can use for this. There is the Canon specific stitch assist; there’s a commercial tool called panorama factory which I used long time ago and there is the photo merge included with photoshop. None of these tools are really up to the job, especially when stitching photos that are not perfectly aligned. So I spent some time searching for alternatives and stumbled upon a nice open source tool by the name of Hugin. Hugin is a frontend for a whole bunch of, mostly, commandline tools. These tools are very powerful and to be honest, I don’t understand most of them. But that’s what the frontend is for.
Make no mistake, this is a tool for the professional. It delivers excellent quality but has rather poor usability and requires a specific way of working that is discussed in detail on the Hugin homepage. Actually, the process is rather easy. First you tell it what image to use as a reference point for exposure and stitching the other images to. Usually this is one of the images in the center of the panorama. Then you need to define a bunch of control points for each image pair in the panorama. A control point is a clearly regognizable feature in both images. You define one of them by clicking on the feature and then you click in the other image roughly on the same spot and Hugin will try to find the corresponding feature where you clicked. They recommend a minimum of four control points per image pair.
The next steps are about optimizing and tweaking the control points a bit. Essentially what happens in this stage is that Hugin tries to fit the images together using various algorithms. Once the preview looks more or less like what you want you go to the stitch panel and set it to work. I just stitched 9 images of the Baltimore skyline (zoomed in) and the result are great (click for full version):
Ok, this version has been compressed a bit. The photoshop file on my harddisk is a whopping 219 MB (15826×2435 pixels). It is composed of 9 8 megapixel photos and is extremely rich in detail. I had to downsize it a little to squeeze that down to 245KB :-). As you can see it is pretty hard to find the seams, yet there are 8 of them. This is pretty much close to a 170 degree view.
Update: a must have if you are going to use Hugin is autopano which produces a hugin project file with automatically recognized controlpoints. It’s a separate tool but not having to manually identify controlpoints is of course a real timesaver.
Lots of stuff has been released or is about to be released. Enough to warrant a little blog post about this stuff.
The 2.0 version is a nice improvement over 1.1. OOo 1.1 sucked IMHO but 2.0 might convince me to actually use it. If only they fixed the bugs I reported four years ago on crossreferences (not implemented properly). Without fixes for that, I can’t write large, structured content in it (i.e. scientific articles). But still, quite an improvement. Importing of office stuff now actually works. I managed to import and save an important spreadsheet at work and removed about 9 MB of redundant data in the process (no idea where this came from), which makes working with the file over the network a lot less frustrating.
Also it seems to actually be able to work with word documents without seriously messing up layout and internal structure (and its a lot faster on large documents). In short, compatibility now works more or less as advertised for the past four years (1.1 didn’t, even for trivial stuff). It’s still quite ugly though and lots of usability challenges remain unaddressed. Looking cool is not a product feature, nor is blending in with your OS. It remains the poormans alternative to MS Office.
Update. It looks like I was wrong about not messing up word documents. I did some roundtrip editing on a document written in word and OOo thoroughly messed it up. It turns out it doesn’t handle documents with adjusted page settings. It applied the page settings for the title page to the whole document. As a concequence it looks like shit, all the headers and footers are in the wrong place. It’s a lot of work to fix it too.
I spent some time with a release candidate and decided not to use it. The reasons were a mix of poor documentation and a dislike of the structure it tries to enforce on everything you do. I’m pretty sure the ideas behind it are ok but it just doesn’t feel right yet. In short it didn’t pass the fifteen minute test they put on their website: the documentation keeps telling you how beautiful and useful maven is without actually telling you anything about how it works. Some crucial things are lacking like explaining how these dependencies actually work, where the repository where it magically pulls all these jar files from is, how to set up your own repository, etc.
In the end I prefer the more verbose nature of ant. I have a lot of experience writing ant build files now. I’ve even written a few ant tasks at work. I happen to both like and need its flexibility a lot. I don’t see how maven solves any of the more non trivial stuff I do it (other than allowing me to use ant).
The assumptions maven is based on are IMHO incorrect. First of all it is tool centric, if you don’t structure your projects the way it likes you’ll have lots of trouble trying to get it to do anything useful (that means it won’t be used where I work now or any other place that has an existing, complex project). Secondly it solves a lot of easy stuff that is not really a problem with ant and not much else. Compiling, generating javadoc, etc. is not that hard with ant. In fact, most of the time I reuse the same tasks for that (by importing it). And, finally, maven just adds complexity. I find maven projects hideously complicated in their structure. I’ve seen quite a few maven projects and they all spread their source code over numerous modules in nested directories. I don’t want to structure my projects like that. But the most important thing is that maven doesn’t actually solve any problem I have.
Nice to finally see this arrive. I expect this to have some consequences for the use of commercial databases in the next few years. At work our customers still prefer commercial stuff like oracle or mssql. Increasingly this has more to do with irrationality than actual features that are actually used. Performance certainly has little to do with it. Nor does scalability. Our webapp is a few dozen simple tables with some optional stored procedures. The latter are what have kept us from fully supporting mysql though arguably they are not required in our app.
Firefox 1.5 RC1
The release candidate should be ready right about now or very soon anyway. Beta2 has worked flawlessly here, as did Beta1. See my earlier review of the beta for more details.
As posted earlier, since a few days, I am the proud owner of a 60GB color iPod, which as of today is already obsolete. Nevertheless a few impressions.
My previous mp3 player was a shitty Philips 128 MB memory stick with even worse software (tip, don’t install it at all). The only nice thing about it (at least conceptually) was the fact that the volume controls were integrated into the flat chord you use to hang the thing (or yourself) from the neck. That was a slightly geeky, cool thing. Of course 128MB was way too little and the insistence of the thing to not keep track of what song you were playing and to play the first song of an album last was especially shitty.
The iPod on the other hand lives up to its reputation as a genuinely cool thing. What I was worried about most (the menu system) turns out to be a well designed, easy to use tool that does exactly what I want: expose my music which is organized on artist and albums as such and allow me to play albums from start to finish, the way the artist intended them to be played.
It came in some well designed packaging. Everything about it just looks cool. No cheap plastic but nice minimalistic, elegant design. Everything about the package screams: this is an expensive designer thingy and you know you just gotto have it. Once you open it the experience continues. The contents of the box are well designed. No styrofoam in here but nice white cardboard and again functional use of the available space in the box. Packaging is something you throw away but this packaging had me impressed as being elegant, beautiful and almost a waste to open and discard. If Apple understands one thing it is that the first experience matters.
The hardware itself looks really nice. It has a shiny chrome body with a nice white front. Except from a lock button on the top, right of the headphone connector the only controls are the disc in the center. The disc is a touch sensitive control with a round button in the middle and four buttons under it north, east, south and west. The north button is the menu/back button, the center button is the ‘ok’ button, east and west are next and previous and south is play/pause.
Navigating the menus works like this you stroke the dial clockwise to scroll down and counter clockwise to scroll up. The center menu ‘selects’ an option, the menu button backs you out of nested menus. So you stroke down to artist, ok, the pixies, ok, doolittle, debaser, ok and you are listening to one of my favorite albums. While it is playing you can go back to the menu by clicking menu four times and then navigate to settings, eq and adjust the sound.
Now one thing had me puzzled for a while: where’s the volume control? It took a manual to figure it out: while the song is playing, stroke the wheel to change the volume (clockwise for up, counter clockwise for down), easy and intuitive but people won’t figure this out by themselves the first time.
That’s the good part. Now the bad part: the photo feature of the color ipod sucks. I have a nice photoalbum at photos.jillesvangurp.com. Mirroring this to the ipod seemed like a good idea so I pointed iTunes to the root of my photo directory which contains well over a thousand large jpeg photos.
Problem #1: the photos take up more space on the ipod than on my harddrive. Apparently everything is copied full resolution to the ipod + some thumbnails.
Problem #2: the iPod screen is tiny and not very suitable for viewing photos. The screen on my camera is smaller and much better for this.
Problem #3: the ipod is incapable of recursive directory structures characteristic of well organized photoalbums. The first time I tried this, all my photos ended up one huge folder. Navigating from 1999 to 2005 took quite a while ‘stroking’ the disc.
Problem #4: it doesn’t use the meta information attached to the photos.
Clearly the first generation color iPod is a missed opportunity in doing anything useful with the color screen. Other than that, I am really happy with it. The sound quality is good, the head phones are decent. I connected my sennheiser headphone to get a better impression: excellent, clear sound.