Entries in category “Meta”

65 entries in this category. See also: Feed icon feed of entries in this category, list of all entry categories.

For hire

Update: I am (as of August 2018) once again gainfully employed.

Since a slightly-wider circle of people know this now, it’s time to just go public with the news: my last day at now-former employer was toward the end of January. At the time I told a few friends, but wasn’t in a huge rush to find something else immediately; I’d been getting ready to depart for a little while, and there were some things (a bit of travel, catching up on some open-source projects, and a bunch of writing ...

Entry published April 11, 2018. Read full entry.

Making mistakes

A couple weeks ago when I was writing what became pwned-passwords-django, I tweeted about a weird issue I was seeing when running the tests for part of it. As it turned out, I’d overlooked something important, and the fix ended up being a one-line change. But that kicked off a little side discussion about the importance of being open about these kinds of “trivial” mistakes; it’s easy for newer or less-confident programmers to do something like that and start feeling stupid, unqualified and all sorts of other bad things. But ...

Entry published March 20, 2018. Read full entry.

On degrees

Lately there’s been a recurring discussion on various social-media outlets about the relevance of academic degrees to a career in programming. Specifically: is a degree in computer science (or some other field perceived as related) a necessity for a career as a programmer? If not, is it still a good idea to have one?

I’ve jumped into a few such threads on Twitter, but I have complex thoughts on the topic, and 140-character or (now) 280-character chunks of commentary don’t really work for that. Luckily, I have a blog and it ...

Entry published January 8, 2018. Read full entry.

Destroy all hiring processes

Finding work as a software person kind of sucks sometimes.

Actually, let me strike the “kind of” from that sentence. It just sucks, full stop. Plenty of people have complained that being on the hiring side of the equation is terrible — we don’t have any reliable ways to identify people who know how to code and do it well. And it’s true: we, as an industry, suck at this. Even among the most common demographics for developers (American, male, white, skewing young and middle-class background), we are absolutely abysmal at ...

Entry published October 19, 2015. Read full entry.

News and such

First things first: though I announced this sort of quietly at the time, I should probably announce it publicly as well: after four years as part of the MDN development team, my final day at Mozilla was early last month. There are some parallels to the last time I moved on, so I’ll link to that in lieu of writing it all over again. For the moment I’m enjoying a summer vacation, but I’m at the stage now of starting to talk to folks about my next career move, so ...

Entry published July 20, 2015. Read full entry.


We are a society of laws. At times those laws are good; at times they are bad. At all times, they are the laws and we are a society of laws.

The stewardship of the laws, and the judgment of which are good and which are bad, in the United States is entrusted by our Constitution to the Supreme Court. The tradition, in the English-speaking world, of making even the sovereign power of government subject and subservient to a framework of laws, dates back centuries. It was famously articulated in England ...

Entry published March 31, 2014. Read full entry.


Reminder for people who try and think it’s a bug: Persona, on this site, is for me to be able to log in and post entries. As such, you will not be able to log in to this site, since you don’t have an account and can’t create one. This isn’t a bug, it’s intended functionality — site owners can control whether accounts can be created, and by whom.

So, last week I mentioned in passing that my next project for this site would be implementing Persona for authentication. Since I ...

Entry published September 5, 2013. Read full entry.

Catching up

For a while now I’ve been pretty embarrassed by this site. Not by the visual design, or the functionality (though some bits have been lost along the way, for reasons that will become obvious in a moment), but by the fact that it was old. As in, over five years old. It was running on a bunch of ancient code that I’d written a long, long time ago, on an ancient Subversion checkout of Django — for the historians in the audience, it was pre-queryset-refactor — and was, frankly, not ...

Entry published August 26, 2013. Read full entry.

Napoleon’s battle plan

So, right up-front, let me just say that May is one damn fine month to quit your job.

As previously noted, I’d been in rather an epic funk, and once my last day was over and all the paperwork was filed, I went on a mission to spend my summer doing anything other than sitting in front of a computer. I traveled a bit, saw friends both old and new, indulged some of my non-tech-related hobbies, read some books and was an all-around lazy bum. But August is growing old ...

Entry published August 21, 2011. Read full entry.

Quo Vadimus?

I’ve been in a rather epic funk for quite a while now, and for most of it I didn’t know why. I just knew that I didn’t really feel motivation to do much of anything. No motivation to deal with things at work, no motivation to work on Django or any of the open-source projects I’m involved in, no motivation at all. I’ve basically been treading water. This wouldn’t have been surprising if it had happened, say, last year or the year before (both of which involved fairly heavy stuff ...

Entry published April 27, 2011. Read full entry.


So, life has been eventful lately. There was DjangoCon, which was awesome even though I came away deeply unhappy with how my talk turned out; due to a lot of hectic things going on, it fell far below the standard I usually like to enforce for myself. I’ve got a couple things cooking for PyCon, though, which will hopefully make up for it. Things are starting to ramp up for the Django 1.2 development cycle, which is looking to be chock full of awesomeness. There’s quite a lot of ...

Entry published October 14, 2009. Read full entry.

An update on the book

So, the repository for the second edition of Practical Django Projects is not yet done, but due to the general clamor I’m opening up public access; you can browse it, or check out a copy of the code, from its page on Bitbucket. You’ll probably want to have a look over the README file displayed on that page, since it provides helpful information on how the repository works.

Right now the first three chapters’ worth of code (covering the first project in the book — a very simple content-management system) are ...

Entry published July 7, 2009. Read full entry.

Second edition

So just after lunch today a box arrived, containing copies of the second edition of Practical Django Projects, which went through final editing about a month ago (Apress tends to be pretty quick at getting the book printed and shipping). Since I assume that means other people will be getting copies of the book soon, I’d like to cover a couple important bits of information.

First of all, the second edition (as the cover proudly declares) covers Django 1.1. Which hasn’t yet released. There are three actual bugs still open ...

Entry published June 23, 2009. Read full entry.

Slicehost is smarter than I am

So this afternoon I took a little break from running unit tests to head to the store and pick up a couple things. When I got back, I noticed I was no longer on IRC, and my client was reporting it couldn’t connect to the bouncer I run to stay online. I tried to SSH in to see if the bouncer had died, and discovered I couldn’t connect.

And couldn’t ping the box.

And couldn’t get this site to come up in a browser.

This site’s hosted at SliceHost on a nice beefy ...

Entry published June 3, 2009. Read full entry.

Second editions galore

Adrian announced today that he’s working on revising The Definitive Guide to Django to produce a second edition that covers Django 1.0, which is awesome news for anyone who’s used the book as a guide to learning Django.

In the same vein, I’d like to announce something that’s been unofficially mentioned a couple times but never fully clarified: I’m busy working on the second edition of Practical Django Projects, which will also cover Django 1.0 (and maybe a feature or two from Django 1.1, depending on how the ...

Entry published January 9, 2009. Read full entry.

Oldest files meme

Doug Hellmann has brought a meme to my attention, and I’d be remiss in my duties if I didn’t act upon it.

Here’s how it’s supposed to work. Save a copy of this Python script, say as a file named oldest.py:

#!/usr/bin/env python
"""Print last-modified times of files beneath '.', oldest first."""
import os, os.path, time
paths = ( os.path.join(b,f)
                    for (b,ds,fs) in os.walk('.')
                    for f in fs )
for mtime, path in sorted( (os.lstat(p).st_mtime, p ...

Entry published January 3, 2009. Read full entry.


I’m sitting here in Building 40 at Google, waiting for this morning’s first DjangoCon keynote to start, and getting ready for the Django technical design panel which comes immediately afterward. Naturally, I’m taking advantage of the down time (and Google’s bandwidth) to upload my slides from yesterday’s talk. If you’ve seen/read the slides from the version of this talk I gave at PyCon, I can tell you that there are now 40% more slides and they’re all new material.

And, of course, the whole deck of slides is CC-licensed ...

Entry published September 7, 2008. Read full entry.


So, as I let the dust settle from the most controversial changes I made in the redesign (and tweak some things and watch my stats in response to the constructive feedback I’ve gotten), I’d like to address the other big change that people have been asking about: why I switched (switched back, actually) from XHTML 1.0 to HTML 4.01.

The short and sweet reason is simply this: XHTML offers no compelling advantage — to me — over HTML, but even if it did it would also offer increased ...

Entry published June 18, 2008. Read full entry.


Back in March when I read about Ryan Tomayko’s redesign, I had two immediate reactions:

  1. Wow, that’s hardcore!
  2. I should try that myself sometime.

Of course, at the time I was busy working on a book and so couldn’t really spare much effort for doing redesign work. Once that was in its final stages, though, I sat down and started thinking about what I could do to reduce the amount of cruft hanging around my weblog. Many revisions later, I have something I’m close to being happy with; of course, I don’t think ...

Entry published June 15, 2008. Read full entry.


Following up on last weekend’s housekeeping announcement: hopefully you’re noticing that things look a little different around here. There’s a lot going on, and a lot to write about (expect that in coming days), but in summary:

  1. A nice, fresh look for the site. My focus this time around was on minimalism and clean design, emphasizing content as much as possible. See Ryan Tomayko’s recent redesign work for my inspiration.
  2. Upgrades and improvements to most of the applications I’m using. These will find their way into proper releases eventually, but for now ...

Entry published June 13, 2008. Read full entry.

Kick me

On a recent plane ride, I was watching an episode of The West Wing which had flashbacks to the original campaign which set up the Presidency on which the show is based. There’s a scene in that episode where Abbey Bartlet — the eventual First Lady on the show — is talking to some of her husband’s campaign staffers about whether her husband is ready to really run the campaign and be President. The dialogue is classic:

JOSH: Well, is he going to be ready?
ABBEY: You bet your ass he ...

Entry published June 7, 2008. Read full entry.

Housekeeping notice

A minor heads-up: going to be doing a little maintenance this weekend, which means that this site will be seeing some downtime as I upgrade a few things. I’ll most likely just turn things off for a bit while that’s running, but you may occasionally see an error page if I forget or if I manage to screw up.

Everything should be back to normal by Monday.

Entry published June 7, 2008. Read full entry.

django-registration 0.5

Just a quick note: I’ve bumped django-registration to version 0.5. New in this version are Italian and Serbian translations, registration at the Cheese Shop (so you can now do easy_install django-registration) and a few bugfixes.

Notes you might care about:

Also: I’m considering taking my ...

Entry published June 5, 2008. Read full entry.

Book notes

A few notes about the book:

Entry published June 3, 2008. Read full entry.

And that’s a wrap.

I just finished reviewing and annotating the index for the book, and sent it back. And with that, I believe it’s finally done; soon it’ll be in the hands of the printer, and sometime hopefully next month you’ll be able to visit your local bookstore and pick up a copy.

My immediate plans include flying back east tomorrow to watch a couple of dear friends get married, and hopefully spending the next few days without interacting with any computers in any way.

After that… I’ve got a lot of things to write ...

Entry published May 28, 2008. Read full entry.


As a general rule, the things I write fall into two categories: long-form (for the medium of blogging, that is; the book is “long” in a very different sense), in-depth pieces which tend to be either tutorials on various aspects of working with Django or op-ed bits on web development and the Web in general, and short-form tidbits which mostly consist of a thought or two. Typically I never post the latter, because it always feels like a waste: if I could give it a more thorough treatment, I’ll hold ...

Entry published April 29, 2008. Read full entry.

Minty fresh

For a while now I’ve been really disappointed with the state of web stats.

When I moved over to my shiny new server back in September of last year, I ditched Mint because it requires PHP and MySQL, neither of which will ever, under any circumstances, be allowed on my box. So I started fishing around for something else; most other host-it-yourself stats packages were, frankly, crap either in terms of what they tracked or the interface they presented it in, which led me to look for a hosted solution.

I tried ...

Entry published April 19, 2008. Read full entry.

More slides

I gave a quick talk at the Django open session last night, and I’ll be giving it again here in a few minutes as a proper lightning talk, briefly walking through the process of some of the database-backed journalism projects we do at the Journal-World (specifically this feature on crime reports at the local university campus).

Slides are already online. If you’re at PyCon and want to hear the talk, come to the ballroom.

Entry published March 16, 2008. Read full entry.


I just finished my talk, which apparently included a bonus live transcript on IRC by Justin Lilly, and I think it went pretty well considering how much ground it had to cover and how nervous I was up until the moment when I started talking.

If you aren’t at PyCon, or if you are but didn’t come to the talk, or if you just want to download them and mash them up, my slides are online:

Since it includes several CC-licensed photos, and since I’m a fan of open ...

Entry published March 15, 2008. Read full entry.

Where to find me at PyCon

My flight arrived in Chicago a while ago, and despite an attempt by the hotel to screw it up, I’m currently sitting in my room enjoying a beer before bed. Here’s my plan for the next few days:

Outside of these predictable time slots, I’ll probably be all over the place; I haven’t yet made up my mind ...

Entry published March 12, 2008. Read full entry.

Advertising and me

Recently I received an email from a company that’s in the online advertising business; they run a network that places targeted ads on a collection of sites, and wanted to know if I’d be interested in running them here. I just finished writing a reply and, since I’ve gotten a couple such offers in the recent past, I figured it’s probably time to make a public statement of my policy toward ads on sites that I personally manage. It’s very simple:

I don’t run ads, and don’t plan to.

I don’t personally ...

Entry published March 11, 2008. Read full entry.


Between normal work, working on the book, working on my upcoming PyCon talk and working on a couple little things on the side, I haven’t had much time for blogging lately, especially about Django. But I’ve built up a collection of little things that need to get posted, so I’m just going to start dumping them out here and then get back to not having any free time :)

A django-registration update

I’ve bumped django-registration up to version 0.4p2; the new package doesn’t add any new features, but it does ...

Entry published February 10, 2008. Read full entry.

Media moves

As of sometime this weekend when the DNS change propagated, all static/media files for this site migrated over to Amazon’s S3 storage service; when I relaunched back in September, media was coming off a Joyent BingoDisk account. While a change in media serving technology really isn’t all that sexy or exciting compared to some aspects of web development (or as popular as writing about whatever Microsoft is doing today), I’d like to take a moment to talk about this move, why I decided to go with S3, and point ...

Entry published February 7, 2008. Read full entry.

The why and wherefore

So, let me straighten a few things out.

First off, this is my personal blog. What you see here is me speaking my own personal mind, and I neither represent nor want to represent anything larger: not Django, not Python web development, not my employer, not anything except me and whatever I feel like writing about. This is an important point to keep in mind, because I don’t have any claim to represent anything else:

Entry published December 31, 2007. Read full entry.

Speaking and writing

First off, if you’re going to PyCon (Chicago, March 14-16), make some room on your schedule; there are several interesting talks on Django scheduled, including one by yours truly.

The description of my talk on the PyCon site is somewhat pithy on account of space restrictions, but conveys the general idea of what I’ll be talking about; flexible, reusable Django applications are one of my pet topics, and I’ll be covering some techniques and best practices picked up from a couple years of real-world work with and on Django. It probably ...

Entry published December 12, 2007. Read full entry.

A couple updates

Today marks two releases, both numbered 0.4, of django-registration and template_utils.

The new release of django-registration is largely a matter of policy; there’s no new functionality or features, but there is one backwards-incompatible change: the validation of passwords (verifying that the same password is entered in both fields) has been moved to the clean() method of RegistrationForm, which means that the error message from a password mismatch is now accessed via form.non_field_errors() instead of form.errors[‘password2’]. It’s a relatively easy change to make in your templates, but ...

Entry published December 9, 2007. Read full entry.

My streak ends

First up, the bad news: my streak of one Django-related post per day in November is going to come to an end tomorrow. Some Thanksgiving plans (technically pre-Thanksgiving by a week, but nothing wrong with celebrating a little early) I’d had which were first on, then off, and are now on again, will be taking me out of town and probably offline from tomorrow morning through Sunday night. I toyed with the idea of putting together four entries and post-dating them to show up at the right times, but things ...

Entry published November 14, 2007. Read full entry.

Another django-registration update

This one’s just a quick heads-up, but if you’re following django-registration you’ll want to take note: I’ve been doing a series of minor releases since 0.3, and it’s now up to 0.3p5.

There have been a few bugfixes since 0.3 that you’ll want, and also some important changes:

Entry published October 7, 2007. Read full entry.

iPod touch

When Steve Jobs announced the iPod touch at the beginning of the month, I knew I wanted one: it looked like the perfect little device for my assorted mobile needs. I spent a week or so thinking it over, then placed an order, and Friday morning as I was stepping out of the shower a FedEx delivery guy rang my doorbell to deliver it. I’ve spent the last couple of days playing with it, and so far I’m quite happy. What follows are my observations, which may or may not ...

Entry published September 30, 2007. Read full entry.

django-registration update

For those of you who are using/following it, I’ve just pushed out django-registration 0.3. The basic workflow of the application is still the same:

  1. User signs up for account.
  2. User receives activation email.
  3. User clicks link in email to activate account.

But under the hood quite a few things have been rearranged to make the application cleaner and more extensible, and there have been a couple of backwards-incompatible changes for anyone using an older version. Here’s how it breaks down.

Backwards-incompatible changes

You’ll now need to create one extra template — registration/activation_email_subject.txt ...

Entry published September 19, 2007. Read full entry.

Django, Accelerated

As of yesterday, this site is served from a Joyent Accelerator, running Django via Apache/mod_python backed by a PostgreSQL database. This setup probably isn’t for everybody, but if it’s right for you (and only you can make that call), here’s how I got everything running.

First things first

Make sure you’ve taken preliminary steps to secure your Accelerator before you do anything with it; this means things like setting up key-based SSH authentication and turning off password-based login, disabling SSH logins by root, etc.; the Joyent wiki has a “getting started ...

Entry published September 4, 2007. Read full entry.

Honey, I’m home

If you’re seeing this, congratulations: the DNS changes have propagated and you’re seeing this site, in all its redesigned glory, at its new home: a Joyent Accelerator.

This took quite a bit longer than I’d expected, largely because — while ostensibly working on redesigning the site and re-writing the blog application which powers it — I kept feeling the urge to spin off various bits of functionality into their own generic, standalone applications. Now I’m finally putting all that work to good use, and does it ever feel good.

Oh, and ...

Entry published September 3, 2007. Read full entry.

A quick survey

As you’ve hopefully noticed if you’re following things in the world of Django, the Unicode branch merged today, which means that Django is now safe for Unicode at every level (pending any bugs which need to be fixed). That’s great news for users of Django.

But it also means that developers of Django-based applications need to be aware of how Django handles Unicode and watch out for boundaries between Django and any bits of software which aren’t so enlightened.

Which is where you come in.

Over the past couple of months I’ve spun ...

Entry published July 5, 2007. Read full entry.

Hacking comments without hacking comments

Way back when I first set up this site, and threw together a minimal blog application to power it, I didn’t bother much with enhancing Django’s comment system. But later on, when I started getting a lot of comment spam (trivia: as of this moment, 15,153 comments have been posted here, and 14,406 of them — roughly 95% — have been spam) I realized I needed to do something, and quickly hacked Django’s comments application to add moderation.

At the time it seemed a reasonable thing to do ...

Entry published June 25, 2007. Read full entry.

django-registration update

I’ve just packaged up version 0.2 of django-registration; there are two big changes since the initial release which are worth mentioning (and which are, of course, covered in the documentation supplied with the download):

  1. The key_generated field was removed from the RegistrationProfile model, so you’ll want to drop the corresponding column in your database if you upgrade.
  2. A mechanism for automatically creating custom user profiles during signup was added; check the documentation for notes on how it works.

Also, a few bug fixes and minor enhancements went in; there’s a changelog in ...

Entry published May 29, 2007. Read full entry.

Software Update

Back when I first launched this site (about a year ago now), I mentioned that I’d someday release the blog application I’d written to power it. So far I’ve been held up by two large problems:

  1. The application itself was written using an SVN checkout of Django from April of last year, back when the codebase that became the Django 0.95 release was still known as “the magic-removal branch”.
  2. Some features (notably, a couple things I’ve done with comments) relied on hacking the source of Django itself.

So I’ve been on a ...

Entry published May 28, 2007. Read full entry.

Django template utilities

In the course of working on a couple personal projects (which will be released eventually), I found myself factoring out a lot of common code and making it more and more generic, until one day I realized I had a whole separate application just waiting to be documented and bundled.

So here it is: template_utils, a collection of generic and useful tags, filters and other tools related to Django templates. Full documentation is on the project wiki at Google Code, and distributed with the download.

Even though I’m using most of the ...

Entry published April 12, 2007. Read full entry.

Quote of the day

Jeff is on a mission to find view functions and template tags in our software which don’t have useful docstrings (and hence don’t have useful auto-generated documentation in the Django admin). The result (copied from IRC):

<jcroft> congratulations to ubernostrum: weblogs wins the award for the most well-documented Ellington app
<jcroft> which is especially impressive, given that it’s also the one with a fuck lot more views than any other

Jeff diplomatically declined to publicly shame the author of the worst-documented Ellington application…

Entry published April 10, 2007. Read full entry.

Django snippets

Just in case you’re not subscribed to the Django mailing lists and/or aren’t at PyCon, today I launched a little side project I’ve been working on: djangosnippets.org, a site for Django users to share useful bits of code.

There are still a few things I’m working out (like feeds), but on the whole I’m pretty happy with it :)

Entry published February 25, 2007. Read full entry.

PyCon 2007: the prelude

So, I’m in Dallas, eagerly awaiting the beginning of the non-tutorial bits of PyCon 2007; I got here around 4:15PM (after a lovely flight where I was inadvertently bumped to first-class), and already things are rocking; I just got back from dinner and drinks with some folks who are doing really cool stuff with and to Django. Already got some interesting ideas and things to continue fleshing out, and I’ve got another four days to spend here.

If anyone’s looking for me, I’m lounging in my room in the Courtyard ...

Entry published February 22, 2007. Read full entry.

Be liberal in your HTTP Accept…

Ever since I started using Joe Gregorio’s mimeparse module to help with my OpenID delegation, I’ve been treated to a first-hand tour of the various things people have thought it would be good to stuff into the HTTP Accept headers their applications send. So, naturally, I’m going to start a gallery of some of my favorites.

So far the winner in the “is that really what you meant” category is what appears to be the default header sent by Java’s HTTP connection classes:

text/html, image/gif, image/jpeg, *; q=.2, */*; q ...

Entry published January 12, 2007. Read full entry.

OpenID delegation under Django and lighttpd

There’s been lots and lots and lots of buzz around OpenID in the last couple weeks, which makes me happy because OpenID is a pretty darned cool system. Simon is doing all sorts of cool things, and Sam Ruby wrote up wonderful step-by-step instructions for OpenID delegation, which lets you use your own domain name to sign in with OpenID even if your OpenID is hosted somewhere else.

I sat down tonight and worked out how to set it up here, because that’s a nifty and useful trick; Sam’s Apache rewrite ...

Entry published January 8, 2007. Read full entry.

Merry Christmas

It’s Christmas Eve and I’m sitting at home with my family, and the most appropriate thing I can think of to do is to quote William Makepeace Thackeray:

My song, save this, is little worth;
  I lay the weary pen aside,
And wish you health, and love, and mirth,
  As fits the solemn Christmas-tide.
As fits the holy Christmas birth,
  Be this, good friends, our carol still:
Be peace on earth, be peace on earth,
  To men of gentle will.

Merry everything.

Entry published December 24, 2006. Read full entry.

Status update

I know I haven’t been writing much lately, and that I haven’t been keeping up with useful Django articles as much as I should be, but there are reasons for that.

So I’m going to change course a little bit and focus on some non-Django stuff for a little while. I’ve got a backlog of miscellaneous things I’ve been writing and rewriting and I’d like to get them out the door; plus, between holidays, work, significant Django changes (mostly having to do with newforms) and some other stuff, I’m going to ...

Entry published December 10, 2006. Read full entry.

My site is smarter than I am

Looking through my stats today, I found an incoming link from a blog written entirely in Chinese. Now, I don’t read Chinese (I know about half a dozen words of Mandarin, but couldn’t begin to pronounce them with the right tones), so I ran it through Babelfish and found that this person was — apparently — commenting on how “comforting” my site was to him.

This left me somewhat befuddled, until I went back and looked at the comment he’d left here, and then at his screenshot of, sure enough, Chinese ...

Entry published November 22, 2006. Read full entry.

Comment problems

So it seems that something’s broken somewhere in all the hacks I do to the comment system, because every attempt to submit a comment is now met with AkismetError: missing required argument.

I’m working on it.

Update: commenting still won’t work, but apparently I’m not the only person running into this bug. I can’t find any notes regarding changes to the Akismet API, but that feels like the most obvious reason why this is suddenly happening.

Updated again: and just like that, things are working again. Judging from a couple other people ...

Entry published November 12, 2006. Read full entry.

How I got here

I’m not a formally-trained programmer. I wasn’t a computer science major in college (my degree is in philosophy), and my first job after graduation didn’t involve programming (it was phone-based customer service at a health-insurance company). But here I am, developing software for a living.

I’ve never written a compiler. I’ve never hand-tuned something by dropping in bits of assembly, or even by writing C extensions for an interpreted language. I’m too young to have ever hacked on a Lisp Machine. But here I am, developing software for a living.

My language ...

Entry published October 16, 2006. Read full entry.

Heads up

If you’re a regular reader of my blog it will be purely remedial reading, but an article I wrote about Django is up at Sitepoint as of this morning.

Go forth and spread the good word.

Entry published October 11, 2006. Read full entry.

Tool Wars

A long time ago, in a land far away, there lived people who were called “carpenters”, and their jobs consisted, in part, of the following tasks:

Now, the last one was particularly problematic, because it usually involved pounding a small metal connector — called a “nail” — through one of the pieces of wood and into another. Many carpenters working in small shops had to resort to ...

Entry published September 3, 2006. Read full entry.

A Web 2.0 service idea

One of these days, someone should start a socially-based translation service for blogs.

You see, it’s not uncommon, this being the World Wide Web, to get incoming links from articles written in languages you don’t necessarily speak; for example, my recent post about accessibility got attention from a German-language blog and, sadly, I don’t understand more than a few words of the language (I also got linked up by a French-language blog, but I can get by in French).

So a pretty cool service might work like this:

  1. You sign up, and list ...

Entry published August 28, 2006. Read full entry.

Trying something new

Following up on yesterday’s feed subscription housecleaning, today I noticed that, if you buy a NewsFire license before day’s end you’ll get a nice bonus: Inquisitor thrown in free of charge.

Well, hot damn!

Inquisitor is really the big win for me here; I’m trying to get into the habit of using Safari as my day-to-day browser, since I’m doing lots of JavaScript stuff and — though this is in no way a knock against Dave Hyatt and the WebKit team, or the KHTML team — I’ve always tried to have a ...

Entry published August 20, 2006. Read full entry.

Some long-overdue cleaning

It had gotten out of hand and out of control. It was impossible to deal with, and impossible to do without. It was eating more and more of my time every day, and finally I just had to kick it to the curb.

That’s right, I’m talking about my feed subscription list.

The new world order

Screenshot of my subscription list in NetNewsWire Lite, showing nine folders of feeds

It took about half an hour, but I’ve successfully pruned and reorganized my subscription list; where before the subscriptions pane in NNW Lite was a sprawling single list of pretty much everything I’ve read over the past ...

Entry published August 19, 2006. Read full entry.

I’m going to predict this now

Assuming they’re both still on TV in 2008, Jon Stewart and Stephen Colbert will both run for President. In different parties.

Entry published August 18, 2006. Read full entry.

Quick note for pydelicious users

If, as I do, you use pydelicious to handle automatically posting links to del.icio.us, you’ll want to take note of the fact that the switch of the del.icio.us API‘s location, previously announced, has happened.

It doesn’t look like pydelicious has updated (and given the spamfest that is their Trac, I wonder if it’s being maintained), so in the meantime here’s the quick fix:

Crack open pydelicious.py, and change lines 91 and 94 to reflect the new API locations; line 91 should become

DWS_HOSTNAME = 'https://api.del ...

Entry published August 15, 2006. Read full entry.

And away we go

So. That whole May 1 reboot thing? Yeah, it didn’t happen. But that’s OK, because the extra time let me get a little better run up to launching. But here I am, and here I’ll stay.

As anyone who knows me should expect, I’m now very happily powered by Django; developing the blogging app that’s behind this site was a lot of fun, and a whole lot easier than writing a blogging app has any right to be. I’ll write that up sometime in the not-too-distant future, and once a few ...

Entry published May 18, 2006. Read full entry.