## Garmin Mapsource: When You Just Don’t Care If the Software Works

Tuesday, January 31st, 2006

Friday I installed one of my Christmas presents, a complete set of 1:100000 scale topo maps of the U.S. for my Garmin eTrex Vista GPS receiver. I’d rather use the more detailed 1:25000 maps I bought from James Associates; and I’d rather use my Mac to load them onto the GPS unit; but Garmin won’t document the protocol for uploading maps; and that protocol doesn’t seem to have been effectively reverse engineered yet; so I had to boot Windows and load them from the PC using Garmin’s own MapSource.
(more…)

## iPhoto Tip 1: Batch Change

Monday, January 30th, 2006

Have you ever taken 173 pictures of your dog and wanted to quickly set the title of each one to “Spot playing”? That is, have you ever wanted to add the same title to several pictures at once in iPhoto? You can shift-click and command-click to select multiple pictures but as soon as you do that the Title field disappears so you can’t change any titles.

It is possible to do this though. However the option is a little hidden. (more…)

## Intel Macs as Servers

Friday, January 27th, 2006

I’ve been thinking about getting an Intel Mac to replace the old Linux box that serves this site. However, a lot of software hasn’t been ported yet, and Rosetta emulation is slow. How much server relevant software is yet native?

## Experimental Programming

Monday, January 23rd, 2006

One advantage of test-driven development I’ve rarely seen emphasized is that it enables experimental programming. This was recently brought home to me while I was working on XOM. Steve Loughran had requested the ability to use a NodeFactory when converting from a DOM document. It was a reasonable request so I set off to implement it.

My first iteration satisfied Steve’s use-case. It was actually a fairly major rework of the code, but the test suite assured me that it all worked and I hadn’t broken anything that used to work. However, Wolfgang Hoschek quickly found a real bug in the new functionality I had added; and things got a little sticky here.

To satisfy John Cowan, the DOMConverter uses some fancy non-recursive algorithms. This enables it to process arbitrarily deep documents without stack overflows. However the algorithm is far from obvious; and even though the code is well-written it’s hard to come back to it a couple of years later and figure out just how it works.

But this is where test-driven development really shines: I don’t have to understand the code to fix it. (more…)

## Braceless if considered harmful

Monday, January 16th, 2006

There are some things I’m reluctant to write about because everything that needs to be said about them has long since been said. This post falls into that category. Peter van der Linden explained what I’m about to say in Expert C Programming: Deep C Secrets years before Java was released, and I have nothing to add to what he wrote. Nonetheless very few C or Java programmers got his message so it’s worth saying again, and repeating until the community finally learns.

Always use braces on multiline if statements