Archive

Archive for January, 2008

Yahoo to Support OpenID

January 18th, 2008
Comments Off

The title says it all.  We really need to get OpenID support into DrProject

DrProject

We Get Requests

January 17th, 2008

As I mentioned a few days ago, we’ve started converting DrProject‘s interface to Dojo. We like the look and feel a lot, but were finding it very slow (several seconds per page, rather than half a second). Alex Russell was kind enough to explain what we were doing wrong, and to give me permission to post his explanation on the DrProject wiki.

DrProject

Where My Life Goes

January 17th, 2008
Comments Off

I’m supposed to spend 9-10 every morning getting my programming skills back up to par. Instead, I have become a mail relay.  Here’s a count of messages sent on business matters (not including stuff I did for DDJ or Beautiful Code, or personal email) in the past couple of years:
mailsent.png

I don’t have stats on mail I’ve read, but the counts are probably 10 times higher. *sigh*

Uncategorized

Structural Programming and Rational Metaprogramming

January 15th, 2008

I keep trying to put extensible programming aside, but it just won’t let me let go. (Yes, I know, the eighties want their lyrics back…) Most recently, Michael Feathers posted this piece about what he calls structural programming. As he says:

A structural program (or program snippet) is a program that is essentially a data structure on a page. The structure both dominates and conveys the semantics.

I realized years ago that this was the real difference between agile languages (like Python and Scheme) and sturdy ones (like C++ and Java): the former let you type in your data structures pretty much verbatim, and allows those data structures to include functions as easily as integers and strings. As a result, you really can work in the Turing Paradise in which programs are data and vice versa.

What’s holding us back now is our unwillingness to do more than overload operators. I can, if I try very hard, abuse this to create a mini-language that lets me type in things that look like decision tables—but Alan help me when I have to debug it. There’s a ton of good research waiting to happen here, and dozens of innovative products waiting to be built…

Coincidentally, I just saw a post from Diomidis Spinellis about rational metaprogramming. It has to lie at the heart of any extensible programming system; there are some interesting comments around his article that are worth following up.

Extensible Programming

A Delicious Harvest

January 15th, 2008
Comments Off

I’ve fallen out of the habit of using del.icio.us, but had occasion today to grub around through links I’d saved while I was still using it regularly. Some of them are still interesting:

Uncategorized

Why Dreamhost Isn’t Getting My Business

January 14th, 2008

I decided late last year that the time had come to host this site commercially (it currently lives on a little old machine sitting in some donated rack space in downtown Toronto).  My first thought was Dreamhost, but when I tried to sign up this morning, they insisted that I stuff my credit card details into my Google account for processing.  One less customer for Dreamhost…

Uncategorized

And Speaking of Community…

January 12th, 2008
Comments Off

As a follow-up to my previous post, I’d like to say “thank you” to all the people who proposed projects for my software consulting course this term. I’m sorry we weren’t able to find students to work on all of them, but I’m very excited by the ones we’re running:

Proposer Project
David Ascher Thunderbird Enhancements
John Adziovsky ClearCanvas Plugins
Scott Briggs GPU Programming
Mike Daly CT Surgery
Michael Feathers Feature Diagram Plugin for Eclipse
Karl Fogel Summarizing IRC Conversations
Shidan Gouran Jazinga VoIP Interface
Phil Hassey Galcon
David Humphrey A RAM Disk for Windows That Doesn’t Suck
David Janes Python Jabber Library
Zeev Lieber PHP SlashID Plugins
Ryan Lilien Molecular Visualization Using the Wii
David Martell Firebreak Optimization
Elsa Marziali Exercise Games
Oshoma Momoh One Week Out
David Raggett Slidy
Paul Salvini Houdini Plugins
Ian Spence Cognitive Games
Peter St. Onge Evolutionary Biology support
Michael Terry Wiki Stats
Jane Zhang Social Services Mashup

You can follow the students’ progress on the course web site, or drop by Molly Bloom’s at 191 College Street between 1:00 and 3:00 on Wednesday afternoons to listen to their elevator pitches and progress report, watch their demos, and heckle. It’ll be a good place to recruit, and you might even seen Galcon on the big screen.

Teaching

What “Community” Actually Means

January 12th, 2008

As I was coming out of the library today, I saw a guy in a white van scrape against a car parked on a side street while trying to make a tight corner. The guy in the van didn’t stop, but a passer-by went into the library, wrote down the van’s license plate number and his own phone number, and taped it to the car that had been scraped.  That got me thinking about the word “community”. It’s bandied around a fair bit in our field (as in, “open source community”); here’s what I think it actually means.
At least week’s code sprint, we decided to replace the navigation bar on the left side of DrProject with pull-down menus.  It looks more modern, it’ll keep the print view in sync with the web view, and did I mention that it looks more modern? We decided to use Dojo, in part because it has better accessibility support than its major competitor, Scriptaculous. Jeff Balogh spent two and a half days ramping up and prototyping; he continued with the conversion after flying back to Florida for school.

At quarter after three on Friday afternoon, David Wolever came into my office and said, “I’m not happy.” He’d been playing with Jeff’s new interface, and while it was very shiny, it was also very slow: up to four seconds per page load with the browser on the same box as the server. (No, this wasn’t the wiki parser bug resurfacing…)

I sent mail to Alex Russell and Kevin Dangoor at 3:25 pm.  At 5:09 pm, Alex sent an 800-word reply that began:

Looking at the drproject SVN, I can see some pretty straightforward opportunities to optimize.

Yes, that’s right: he had checked out our source code and read through enough to realize that we weren’t using

tags to load the Javascript, that we hadn’t made a layer for the widgets we were requiring, and that we hadn’t taken advantage of the Dojo build system’s ability to roll up just the widgets we needed into one bundle to reduce the number of requests.
Kevin replied a few hours later as well, but by that time Jeff was able to post the following timings:

  • Only dojo.js: 35 requests, 1 sec
  • dojo.js + dijit.js: 17 requests, 0.62 sec
  • dojo.js + dijit-all.js: 35 requests, 1.3 sec
  • dojo.js + drproject.js: 4 requests, 0.35 sec

Not bad at all.  No idea how long it would have taken to get there without help, but I’m very, very glad that we didn’t have to find out—that there was a community out there of people who believed that helping us with no immediate prospect of reward was just the right thing to do.

So thanks, guys—the next beer’s on us.

DrProject

I’ve Been Amazoned

January 9th, 2008

Scroll down on this page and play the video — I think it makes me look chunky, but Sadie says TV adds ten pounds…

Beautiful Code

Where the Puck Is, Part 5

January 8th, 2008

Imagine a world in which bookstores printed books on demand, then and there.  Sure, they’d keep a couple of copies of each volume on their shelves for readers to browse, but there’d be no trucks, no warehouses, no remainders… What kind of software is it going to need?  What’s the interface going to look like?  Will people choose chapters out of something like Safari to create one-of-a-kind collections (just as everyone now has their own CDs, rather than having to put up with the sucky track 3 on the B side of an otherwise great album)?

Twenty years ago, in An Imperfect Art, Ted Gioia traced the development of an aesthetic of imperfection in 20th Century jazz.  Recording made it possible for everyone to listen to perfect performances whenever they wanted to; musicians responded by evolving an aesthetics of imperfection that celebrated the slip and squawk and so-very-human moments of not quite getting around the corner but then somehow making it come right.  Will something similar happen to bookmaking?  Will we see the equivalent of DJs, whose special talent is sampling and remixing the printed word?  And if we do, what kind of software will they want?

Uncategorized