The boat monitor is sending twitter updates (firebolt_log is my user name), but I'm not ready to post that code yet.
I got an SD card shield from sparkfun to save the GPS data as the boat sails around. I didn't realize when I ordered it but it got some bad reviews for not being 3.3V compliant. I added voltage dividers to divide the 5V inputs to the shield down to 3.3V, using 150Ω and 330Ω resistors. It seems to work fine, even at the default high speeds. Here's a picture of the voltage dividers; using tiny resistors let me put them in place of the header pins (I did solder pin legs onto the resistors so they fit in the holes better). The 330Ω resistors go from the circuit board to ground (black wire), the 150Ω resistors go from the circuit board to the arduino.
I'm using the adafruit sdfat library, because it was the first one I got to work. To make the sdfat library work on the sparkfun shield, you need to change the SS pin in the library definitions to match the shield (arduino pin 8), and you need to make sure that the Atmel's SPI port SS pin (arduino pin 10) is set to be an output. I've attached the library here, so far I've only tested the read and write functions, so there may yet be bugs.