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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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:
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 ...
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 ...
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
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 ...
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 ...
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.
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 ...
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 ...
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:
And, well, that’s about it. Criticisms in the discussion ...
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…
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 ...
Matt, talking about the CPAN shell:
It reminds me very much of a very gentlemanly rapist. “Now I’m going to…”
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 ...
When a case of alleged design theft on the Web — the appropriation of one or more elements of a site’s design, without permission — is exposed, there is an elite group of mentally-challenged individuals who spring into action to defend said theft. Their arguments never vary; they stay the course and seem to assume that if they simply repeat themselves often enough, their lack of functioning neurons will be ignored.
Broadly speaking, these arguments fall into three categories. I pray you’ll forgive my abominable Latin grammar in describing them ...
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 ...
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.
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 ...
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.
In any given area of the country, your televised baseball viewing choices are generally limited to:
Assuming they’re both still on TV in 2008, Jon Stewart and Stephen Colbert will both run for President. In different parties.
I don’t honestly expect any of you to remember this, but some time ago, when I posted an entry talking about Python and Ruby (on which comments are closed because the post is over a month old — hopefully this weekend I’ll get around to turning on the auto-moderation stuff I wrote up), I received a comment from one “Mandy Owens”, who seemed to think that, for both technical and marketing reasons, Rails makes Ruby the better choice.
I replied and disagreed with several of her points, because I ...
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
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!
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 ...
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.
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 ...
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 ...
I was at the store last night and remembered that I needed shampoo, so I wandered over and took a moment to look at what they had. I’ve always been fascinated by one brand in particular: Clairol’s “Herbal Essences“, which was the first shampoo I ever saw in a transparent bottle; the color of each type of shampoo (there was one for each type of hair, one for each of several common conditions like dry hair, limp hair, and so on) was tailored to match a logo which ...
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 ...