Tuesday, February 19th, 2008
Spydentify is a new experiment/side project of mine. It fills a niche that I first identified over at the Typophile Type ID Board: people love looking a pictures and trying to figure out what’s in them. The site’s interface is designed to be as addictive as possible, with a neverending, rapid flow of interesting images, big, shiny buttons to click, and instant feedback on your actions. I’m going to add more ego-stroking, viral-spreading and moderation features soon.
The interface also follows the MVC pattern I laid out in this article. It uses one static HTML file, all dynamic data is loaded through XMLHTTPRequest (AJAX, for those of you who speak Web 2.0), and all HTML generation is done via JavaScript manipulation of the DOM. The backend uses Pylons, which gave me a chance to learn Pylons, Paste, Routes, SQLAlchemy, FormEncode, and Mako. And comments are rendered with my own PottyMouth.
I also designed the logo all by myself.
Check it out.
Monday, February 11th, 2008
First glimpse of my new font, “Breuckelen,” inspired by my time in New York this past summer:

Monday, January 28th, 2008
Great passage from a great article, The Autumn of the Multitaskers, by Walter Kirn:
In the days of rudimentary chemistry, the mind was thought to be a beaker of swirling volatile essences. Then came classical physical mechanics, and the mind was regarded as a clocklike thing, with springs and wheels. Then it was steam-driven, maybe. A combustion chamber. Then came electricity and Freud, and it was a dynamo of polarized energies—the id charged one way, the superego the other.
Now, in the heyday of the microchip, the brain is a computer. A CPU.
The early psychologists also described the mind in terms of hydrodynamics. I wonder what the next metaphor will be — I’m surprised that the brain as world wide web, full of ephemeral interconnections and communicades, between actors who rise and fall in influence and activity, hasn’t surfaced as a metaphor yet (not that such a metaphor would necessarily be any better than the old ones). Maybe that metaphor is not simple enough.
Update 2008-02-20: My friend Kelly pointed me at Your Brain Works Like the Internet, which shows that this metaphor is present in the wild.
Friday, January 25th, 2008
The Internet Explorer team has announced a meta tag that instructs Explorer 8 to render the page as if it were a previous version of Explorer. The idea is to maintain the exact same rendering, bugs and all, of previous versions of Explorer, so that layouts designed for older renderers never change.
(more…)
Thursday, January 24th, 2008
Conversation between music nerds, overheard, 2037:
A: “What kinda music do you like?”
B: “Oh, mostly Folkwave and Waltzcore these days. I used to be into Dark Country, but then it got dumb.”
A: “Yeah, me too. I like a little Punk-Hop and Crackabilly, but you know, the scene is so tired.”
B: “When did this Soft Metal thing start getting popular again? It’s so, like, 2033.”
A: “That and Polkabilly. Nerds.”
B: “Laaame.”
Sunday, January 20th, 2008
or, how I learned to stop worrying and love the XMLHTTPRequest…
If you’ve built a website in the last few years, most likely you’ve adopted an architecture similar to Model-View-Controller, or MVC. If not, well, either your website is terribly simple, you haven’t had to modify it yet, or your code is spaghetti and you should be fired. Just kidding. (Or maybe you’ve come up with an even better architecture, in which case you should share your insights with us mere mortals.)
(more…)
Friday, January 18th, 2008
I’ve largely stopped reporting bugs to Ubuntu because of the condescending and dismissive attitude from their developers.
I cut my Linux teeth on RedHat back in 1998, and soon after settled on Debian as the best of several flawed but promising choices of Linux distributions. When I switched to Ubuntu 4.10 in October 2004, I was excited by the promise of a distribution with the quality of Debian and frequent releases and a focus on the desktop.
Today I stumbled across what unfortunately seems like another typical example of what happens when you report a bug to them: aumix in Ubuntu 7.10 was compiled wrong, such that it won’t even launch. Recompiling the source package without making any changes to the source fixes the problem. Instead of just doing that, the Ubuntu developers spent far more time and effort bickering on the bug report and justifying their inaction by referring to official protocol. Shallow thoughts outlines the issues with aumix and contains this quote:
(more…)
Monday, January 14th, 2008
This is the first in a series of first impressions that I’m going to write each time I learn a new language or start using a new set of tools. I hope to keep track of what I thought and reexamine each in a few years. It will be interesting to see how my opinions change over time. This post is about Java. As I’ve been working in Python for the last few years, that colors my opinions about Java quite a bit.
(more…)
Sunday, January 13th, 2008
I just rewatched Farscape’s Peacekeeper Wars, the miniseries that followed the fourth season. The show was intended to run for five seasons, and the story was left unfinished after the fourth. The miniseries tried to finish up the story, but it left a lot of loose ends. (Don’t keep reading if you haven’t watched all of Farscape — the rest of this post contains some major spoilers.)
(more…)
Friday, January 11th, 2008
I agree with all twelve of Damien Katz’s Signs You’re a Crappy Programmer (and don’t know it). I’d even add two more signs:
- You want to reinvent the wheel.
You look forward to implementing all the building blocks of your program without first checking for libraries and packages that can do most of the job for you. You are so excited about building an object-oriented email-sending library that you don’t even notice that the language you’re using already has all the email-sending functions you’ll ever need in its standard library. This is a failure to focus on getting the task at hand done, and it’s also a variation of talking just to hear the sound of your own voice. Get over it.
- You use language constructs without really understanding what they are for.
You use multiple inheritance from a large set of empty classes, or multiple empty interfaces, as configuration “flags” for your classes, and then test for the flag’s presence with issubclass(). Or you encapsulate related data into an object, and then write a function that takes that object as an argument and operates on it, instead of a method on the object. Or you buffer input and output between short strings and regular expression operations. You are just like those annoying people who simultaneously overuse and misuse some big word like obsequious or audacious. Get a manual, and learn the language you’re speaking.
(more…)