Hack Night

A few days ago, I posted a matrix of great ways to spend time. Simon liked the idea, so last night, we held a Hack Night - a concentrated pair-programming sprint to make something cool.

We both wanted to play around with the Google Maps API. What better way to learn how to use it than to prototype a new interface for his voice messaging system that would allow users to select phone numbers by drawing polygons?

I'd told him about the point-in-polygon algorithm some time ago. (Hooray, formal computer science education!) He found a Perl program that implemented the algorithm, and had also put up a simple experiment using Google Maps and draggable markers.

While he wrapped up some other stuff, I brought myself up to speed by quickly flipping through tutorials and mailing list archives. I must've browsed through fifty or a hundred pages - not reading for full comprehension, just indexing it so that I'd know what was out there and where to find things.

Along the way, I found several resources that were just what we needed. Several mailing list posts spoke highly of PostgreSQL's geometric operations, which meant that we could replace the Perl script with a very efficient SQL operation. I also found a user interface that was exactly like the design Simon wanted to make.

Assembling the pieces was really easy. We ripped out the code we didn't need and tweaked the script to do what we wanted. It was a lot of fun pair-programming with him. I still haven't gotten the hang of his keyboard layout, so he did most of the typing. (The keyboard was straightforward QWERTY, but the Powerbook layout means I hit the function keys by mistake all the time.) I kept an eye out for little errors and thought about what to do next. Sometimes I kicked him off the computer in order to try something out. (When I had to hit Ctrl-Option-Shift-S to save the file over FTP, I grinned and suggested that Emacs would be far less RSI-inducing.)

Great results for a two-hour Hack Night. We wrapped up at midnight because I had breakfast plans, so I couldn't stay up too late. We couldn't help talking about ways to optimize it, though - using a synthetic integer primary key to speed up joins, denormalizing the database, etc. It was a lot of fun working on that with him, and I look forward to other Hack Nights.

So yeah, I'm a geek's dream. <laugh> And this Hack Night thing? Well worth repeating. Maybe we can hack on my research prototype next...

On Technorati:

Random Emacs symbol: nobreak-space - Face: Face for displaying nobreak space.