Archive for June, 2009

Unseen Constraints

Friday, June 26th, 2009

I picked back up a project for a friend. It’s a decidedly non-spiffy business-logic sort of problem, which makes it hard to keep focus on outside of a work environment, but it’s something that would make a world of difference to her.

I decided to use WPF, because I haven’t done anything other than trivial exercises with that technology. We’d talked about platform (Windows XP) and whether she was allowed to install stuff on the work computer (yes).

I decided, and got her agreement, to send her very frequent releases. In addition to all the usual reasons to do this, I thought it would be a good mechanism for keeping my focus on the problem. I started with the smallest possible release: a program that opened a window, installed by an installer.

Almost immediately, we hit a bump: I’d expected to need to upgrade the version of .NET on her computer to 3.5. I hadn’t realized that, since it was also the only cash register, the computer could not be rebooted during the work day. Downgrading the technology used would not be fun, since the computer had no versions of .NET whatsoever. The next few work days were going to be long ones, so she had no interest in sitting in the store with me for an extra hour after her shift was over, nor could she leave me in the store alone to do the installation.

We’re completely changing the technology stack and going with a Web-based solution. Total time lost, between making the first release and researching the no-reboot issue: one hour. Woohoo!

Project Euler

Monday, June 15th, 2009

I’ve known about Project Euler for a while, but I made the mistake of trying to use it as a vehicle to learn F#. Last week I started solving the problems with Haskell, which is vastly more fun. I highly recommend this method of recreation.

Also, this is officially the best-ever method of Fibonacci-number computation: fibs = 0 : 1 : (zipWith (\a b -> a + b) fibs $ tail fibs)

the ICFP contest and teams

Wednesday, June 3rd, 2009

I got reminded recently that the ICFP (International Conference on Functional Programming) contest is coming up. The previous two years, I did it with a team of friends and had a blast. It’s a 72-hour programming contest, with the goal of presenting interesting problems that are best solved by functional programming techniques. (2007′s contest succeeded, in spades. 2008′s was more iffy.)

In 2007, my programming team had been through one grandiose spare-time programming project, and had started on the next. We worked well together, and placed 28th. (Corn Worf Strategy, named after a misspelling of an injoke from the first grandiose project project)

In 2008, we’d started to drift apart. It had been a while since we’d given up on the second grandiose spare-time project (we stopped to consider a weighty technical decision, everyone’s personal life blew up, and then the usual US December distraction hit). We didn’t do as well that year. It’s hard to say where exactly we placed, due to the complicated scoring system used, but we were somewhere near the middle of the pack (Pear Programmers, a joke from ICFP 2007 that was hilarious when we were all strung-out on hard thought and sleep-dep). We disagreed more and fought more. We separated into separate groups and individuals more. We simply didn’t work as well together. As individual programmers, we were all stronger than we’d been the previous year, but as a team, we were weaker.

I’m probably going to do the ICFP contest again this year. I don’t think the band’s going to get back together for it. It’s likely that I or we will do far worse than in previous years. My focus on terrifyingly clean code and Paul’s ability to write parsers for anything and Josh’s knowledge of high-abstraction-level Haskell libraries and Jesse’s willingness to bludgeon stuck problems with cloud-computing aren’t nearly as helpful without the communication and trust and interconnecting knowledge we all had.

I’ve never been on a professional team that worked together as well as we did during that first contest, even when it was two hours from deadline, we had no idea of how to move forward, nobody had had enough sleep/food/water, my back had pretzeled from slouching on a couch for days, and everyone had become incredibly annoying. I would move mountains for a chance to be on a team like that again.