I noticed a book on the shelves at Scimatic last week called Small Memory Software: Patterns for systems with limited memory, by Noble and Weir. It took me a couple of minutes to realize why it seemed familiar: I reviewed it for Doctor Dobb’s Journal when it first came out. The topics are what you’d expect from the title—memory limits, adaptive compression, copy-on-write, and so on.
I liked the book when it first came out, and like it even more now. What struck me leafing through it, though, is how many of the patterns it presents are now important for large-scale computing because of the explosion in data set sizes over the past decade. (See for example Titus Brown’s recent post “The sky is falling! The sky is falling!“.) Nobody’s data fits in RAM any more, and everyone managing a data center has to worry about power consumption. In a way, it reminds me of how cosmology and subatomic physics are intimately intertwined.
Books
Asynchronous ActionScript now sucks a little bit less, thanks to this code from David Wolever. Check it out—he’d be grateful for feedback.
Uncategorized
Matt @ Mozilla’s post shows what people in the School of Webcraft course draw when asked to show how the Internet works. Some of these are very cool.
And on a related note: if you’re a (wannabe) cartoonist in the Greater Toronto Area and would like to get involved in a cool project, please give me a shout.
Uncategorized
Lambda the Ultimate recently had a nice summary of a paper titled, “Is Transactional Programming Actually Easier?” In it, Rossbach, Hofmann, and Witchel report a study in which 147 undergrads in an operating systems course solved problems using traditional concurrency control mechanisms and newfangled memory transactions. The result? Students reported that transactions were harder to use, but actually had fewer errors in their synchronization code when using them.
At the risking of sounding like a curmudgeon (yes, David, I’m looking at you), why the hell don’t we do more of this? Why don’t we apply usability testing techniques to programming language features? It’s easy to do in small cases, and as Microsoft’s Steven Clarke discusses in his chapter in Making Software, when done systematically, it can make programmers’ lives a lot better.
Research
We have made over 50 videos for Software Carpentry so far, and as part of reorganizing the site, we want to list their lengths beside their names. If they were text files, I’d use wc(1) to find their size—but what do I do for MP4 files? After a few false starts [1] I found ffmpeg‘s ffplay, and the following command:
ffplay -an -vn -stats ${filename} 2>&1 | grep Duration | sed -e 's/,.*//' -e 's/ *Duration: *//'
It isn’t pretty—my screen flickers uncomfortably as ffplay launches and closes down for each file—but it works.
[1] My first stop was Pyglet, but after installing from their DMG download on Mac OS X 10.6, every attempt to do anything more than import pyglet results in a QuickTime error.
Uncategorized
Andrew Louis has posted a great summary of the Fall 2010 UCOSP code sprint, which took place this past weekend here in Toronto. Over 50 students and mentors from all across the country spent two and a half days talking, coding, learning, laughing (sometimes at me), and getting to know the city and each other. This term’s projects include:
Andrew, Karen, Michelle, and Eleni did a great job of pulling everything together, and I enjoyed meeting the two students from Waterloo who have joined the team I’m working with, but it did feel kind of weird to be a bystander instead of in the thick of things. On the plus side, it was very cool to have an ex-student explain to me (very politely) why I’m wrong to insist that unit tests must always stay off-disk. Maybe the best way to summarize the overall goal of UCOSP is to say that we’re trying to turn students into peers; here’s hoping many more come back to correct me in future
.
Student Projects
Beautiful Code has raised a total of US$97,933.47 for Amnesty International so far.
Beautiful Code
Recent Comments