Entries in category “Misc”

40 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.

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.

Things and stuff

I’ve been awfully busy lately, but also thinking about a lot of stuff. Since microblogging is no longer really a thing I have access to (Pownce, I miss you), that means doing periodic brain dumps, yay!

Conferences and costs

Over the past few months there’s been a pretty significant conversation starting about tech conferences and “paying” speakers (where “paying” typically means at least providing a free ticket to anyone giving a talk). Which is a topic full of complicated thoughts for me.

On the one hand, the obvious argument: there’s significant overlap ...

Entry published May 5, 2016. 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.

Good tools

Apparently we’re in one of those every-couple-of-years cycles of everybody and their brother rushing to adopt/encourage others to adopt the hot new programmers’ text editor. This time around it’s Sublime Text, which, though I haven’t personally tried it out, does seem to at least be a very nice editor. If you were just starting out and needed a quality text editor, I think you could do a lot worse than Sublime Text. However, I would still, and will still, recommend that you also at least try out one of ...

Entry published April 5, 2013. Read full entry.

reddit takes a new direction

Several months ago, reddit shook with the news that longtime subreddit /r/jailbait — dedicated to, well, you can probably guess — had been shut down by its own moderators. Yesterday, reddit shook again, with the news that a variety of other subreddits, arranged on similar topical lines, were being shut down by reddit’s admins.

Predictably, this has caused a shitstorm. It has also caused calls for bans of other subreddits which have nothing to do with sexual fetishes involving children. There are, of course, plenty of subreddits devoted to ...

Entry published February 13, 2012. Read full entry.


Abraham Lincoln, remarks for the dedication of the cemetery at Gettysburg battlefield, November 19, 1863:

Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.

Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived and so dedicated, can long endure. We are met on a great battle-field of that war. We have come to dedicate a portion of that field, as a ...

Entry published November 19, 2011. Read full entry.

A stateful problem

Update in June 2019: This old post is getting some traffic, so I should point out that the former django.contrib.localflavor is now distributed as a separate package, rather than bundled into Django itself. Also, please note the date on this post, and the fact that it discusses Django 1.3; as I write this edit, it is nine years later and the current release of Django is 2.2.

So, this week we dropped some security updates, which you should definitely check out if you haven’t seen them yet ...

Entry published December 24, 2010. Read full entry.

The news done broke

(or, “Dear Louise…”)

Once upon a time, Jacob wrote a wonderful insider’s view of how our election coverage works, and noted that basically the whole thing’s held together with baling twine and duct tape. That was 2006; it’s now 2010 and midterm elections are upon us again. As I write this I’m actually at my desk at the Journal-World office, and for the first time tonight nothing’s actually broken. So I’d like to update Jacob’s post with the story of how we do things now.

That little feed on the TV screen ...

Entry published November 2, 2010. Read full entry.


Step 1: pip install django-funserver

Step 2: Add “funserver” to your INSTALLED_APPS.

Step 3: Run manage.py funserver.

For best results, don’t do this on a real server.

Code is here, for those interested.

Entry published November 1, 2010. Read full entry.

On branching

Back in 2008 I posted some rambling thoughts on distributed version-control systems, largely in response to the huge amount of hype surrounding such tools (particularly git). Then at PyCon last year, amid even more hype as it was announced that Python will switch from Subversion to a distributed tool, I gave a lightning talk reflecting on what I’d picked up and seen during the intervening eight months.

It’s now been a year and a half since that original blog post; in that time I’ve switched all of my personal projects from ...

Entry published February 2, 2010. Read full entry.

When licenses attack

Jacob posted twenty questions about the GPL. Zed followed with an explanation of why he placed Lamson under the GPL. This has provoked some discussion around the internets, some of which I have read and some of which I’ve ignored.

Unfortunately, there’s a lot of noise drowning out useful discussion, much of it centered around alleging — directly or indirectly — that if you ask questions about how the GPL interacts with other licenses, you must be trying to “get around” the GPL, or take someone’s GPL code and use it ...

Entry published July 14, 2009. Read full entry.

A fun little bug

About two months ago, I quietly wrote and released a little Django application which generates cross-domain policy files for Flash (if you’ve never encountered this aspect of Flash, here’s an introductory article on how it works). I’ve done a bit of hacking on it in my spare time, and I’m pretty happy with it as an example of a simple, tightly-focused application; sometime soon I hope to write a bit more about the development process behind it, because it provides a useful real-world guide to some of the abstract best ...

Entry published June 26, 2009. Read full entry.

Django 2.0

So apparently some folks doing business as “Vyper Logix Corp” are peddling a thing they call “Django 2.0”. I’m not going to link it here since they don’t deserve the Google bump, but if you’re interested you can follow the link in Jannis’ tweet where he mentioned it. In fact, with any luck my Google juice will pop this article up above them.

Django 2.0” is, apparently, built on the Django 0.96.2 codebase, which is rather interesting since that means it could be missing:

Entry published January 18, 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.

Generic inlines and Django history

The other day at work I stumbled across my first opportunity to use a relatively-new feature in the Django admin, one which turned what had looked like it would be a fairly nasty task into, basically, a five-minute job (plus staging, testing and deployment, of course, but that happens no matter how long it takes to develop the code). I’ll get to the specifics in a minute, but first I want to give a little bit of background on what, exactly, I was working on, since it’s sort of a ...

Entry published December 4, 2008. Read full entry.

What’s next?

What happened today:

Each State shall appoint, in such Manner as the Legislature thereof may direct, a Number of Electors, equal to the whole Number of Senators and Representatives to which the State may be entitled in the Congress: but no Senator or Representative, or Person holding an Office of Trust or Profit under the United States, shall be appointed an Elector.

What happens next:

The Electors shall meet in their respective states, and vote by ballot for President and Vice-President, one of whom, at least, shall not be an inhabitant of the ...

Entry published November 5, 2008. Read full entry.

Let’s talk about DVCS

So, a few years ago all the cool kids were switching from CVS to Subversion. These days, all the cool kids are switching from Subversion to some form of distributed version control; git and Mercurial seem to be the ones with the largest market shares. This switch is being accompanied by a simply deafening amount of hype about DVCS and how it’s a revolutionary new paradigm and will completely change the way people work and… well, the usual stuff.

Over the past few months I’ve tried out both of the popular ...

Entry published July 28, 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.


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.

I don’t normally do memes

But this one was geeky and interesting enough to be worth it:

$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s\n",a[i],i}}'|sort -rn|head
   75   cd
   64   ls
   34   ssh
   29   python
   21   rm
   21   hg
   20   svn
   18   man
   18   less
   17   screen

Entry published April 10, 2008. Read full entry.

Batteries sold separately

At first glance, Google’s App Engine looks like a great way to build the next big web application; you get access to a massively scalable infrastructure, you get access to a huge existing authentication system, you get baked-in stats, you get all sorts of cool goodies.

Oh, and you get Python, which is a great language for writing web applications, and I’d be remiss if I didn’t take some pleasure in Django being available out of the box.

Personally I don’t really care one way or another about hosting code with Google ...

Entry published April 8, 2008. Read full entry.


Once upon a time, I was doing a server setup at work, installing all the various prerequisites and utilities to support the things we use. One part of that involves installing Jing, which we use for XML validation; Jing is written in Java, and so we use gcj (the GNU Java compiler) to compile it for use, ending up with a nice little binary we can call from anywhere.

Now, we’ve standardized on Ubuntu for our servers, so installing gcj should be as simple as apt-get install gcj (or, more often ...

Entry published March 3, 2008. Read full entry.


My beloved Cubs went up against one of the best pitching teams in baseball, and forgot how to hit. Three games and they’re out, which is sad for me but good for you, because it means I can make unbiased predictions about the rest of the baseball postseason. So here goes.

NLDS: Rockies/Phillies

The Rockies are already up two games to none in a best-of-five series. As I write this Game 3 is scoreless in the third inning, but I expect this series to be over tonight or tomorrow; even ...

Entry published October 6, 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.

A tale of two redesigns

Newsvine launched a redesign, or possibly a “realign”, today, adding a number of useful features while staying true to what has, overall, been an attractive and successful layout. Criticisms in the discussion thread are met with haiku and promises to work on it. Result: pats on the back all round.

Fark launched a total redesign today, and the number of design sins not committed is perhaps the easiest thing to enumerate:

  1. It doesn’t have any glossy Web-2.0 reflections.

And, well, that’s about it. Criticisms in the discussion thread are met with a ...

Entry published April 25, 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.

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.

The Prestige

I read the book The Prestige a while back, because it looked really interesting. And it didn’t disappoint; what started out looking like a feud between late-nineteenth-century stage magicians — which would have been cool in its own right — quickly turned into something much deeper and much more involved.

And the movie didn’t disappoint. The particular events it uses to drive the plot are different, but enough of the overall plot is the same, and is presented in a compelling enough manner, to keep it lively. It was also nice ...

Entry published October 22, 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.

Friday fun

It’s the end of the week and, while I’ve got plenty of things I could write about, I’m sort of tired and burned out. So let’s just look at a couple things that went on this week.

Django performance with foreign keys

There’s been a bit of a to-do the last few days over a supposed performance problem in Django. I have a hard time classifying it as a “bug”, though — the whole thing centers around the fact that, to generate an HTML select box of possible choices for a foreign ...

Entry published September 1, 2006. Read full entry.

A modest proposal

As a lifelong baseball fan somewhat dismayed with the currently-available coverage of the sport, I’d like to propose a change to the structure of the major leagues which might make things a bit more bearable, especially as we head into the waning days of the regular season: all it requires is adding a third league. I know this will be controversial, but bear with me.

The problem

In any given area of the country, your televised baseball viewing choices are generally limited to:

  1. The nearest major-league franchise. In my case, the Kansas City ...

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.

Apropos of even less

One day real soon I’m going to start writing real blog entries again. But for the moment, I’m a bit too bogged down with various things, so I’m just going to continue sharing quick, amusing anecdotes.

Moments ago on IRC, Jeff posted one of the more amusing error messages we’ve ever come across:

tar: phpicalendar-2.22/phpicalendar/tmp/parsedcal-US%2520Holidays-2006: implausibly old time stamp 1969-12-31 16:00:00

Entry published July 25, 2006. Read full entry.

Apropos of nothing

So this morning we come in to work, and something’s wrong with all the chairs; they’ve been moved around or reset or something, because they’re not in their usual friendly-to-programmers-with-poor-posture configurations. We deal with it.

Until about thirty seconds ago, when Matt stood up and started trying out every empty chair in the office to see if he could find one that felt right. His reasoning:

Man, this Aeron’s throwing an ImproperlyConfigured!

Entry published July 24, 2006. Read full entry.

Independence Day

In CONGRESS, July 4, 1776.

The unanimous Declaration of the thirteen united States of America,

When in the course of human Events, it becomes necessary for one People to dissolve the Political Bands which have connected them with another, and to assume among the Powers of the Earth, the separate and equal Station to which the Laws of Nature and of Nature’s God entitle them, a decent Respect to the Opinions of Mankind requires that they should declare the causes which impel them to the Separation.

We hold these Truths to be ...

Entry published July 4, 2006. Read full entry.


For the second time, Mark Pilgrim has written up a list of his “essential” software (for reference, here’s the first time). It being Friday, the day when bloggers around the world veer off and post things of very little relevance to important world issues, I feel compelled to do the same.

Wherever I go, there they are

I work with two operating systems on a regular basis: Mac OS X and Ubuntu GNU/Linux. Obviously there are going to be some disjoints between the sets of applications I use on the two ...

Entry published June 30, 2006. Read full entry.

Levels of openness knowledge

Level 0

You were upset when you heard about the DRM “lock-in” of Apple’s iTunes Music Store, so you burned all those locked-up files to CDs, then ripped them back in Windows Media Player. As WMA. You can’t play them on your iPod anymore, but at least you can play them on all the other portable music players you own.

You blog on MySpace. But you keep links on your MySpace page to your old LiveJournal and your old Xanga blog, so people can still read all your old entries there if ...

Entry published June 25, 2006. Read full entry.

Upgrading to Ubuntu 6.06

I’ve been a Linux user for about six years now; I started out with Red Hat while I was in college, and then a little over a year ago I jumped ship to Ubuntu because smart people kept talking about how nice it was.

Overall, my experiences with Ubuntu have lived up to that; Ubuntu does an amazing job of being both a great development platform and a good desktop operating system. That’s no mean feat. So naturally I was looking forward to upgrading to the recently-released version 6.06, code-named ...

Entry published June 16, 2006. Read full entry.