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…

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

You can comment with Disqus or you can e-mail me at sacha@sachachua.com.