2005 — 2012
A quick tip to automatically regenerate your Sphinx docs as you make changes.
Since moving to the country a year ago my weekends and evenings have turned into project time. I’m a cheapskate, so I’ve been buying and repairing lots of used tools and making a lot of my own parts. This means I’m constantly looking for some random specific bolt, or a piece of plastic some particular size, or something similarly specific and esoteric. So I starting maintaining a list of the places I go to when I need supplies. It’s really for my own reference, but I figured it might prove useful to someone, so why not put it online?
Recently, tech conferences have started publishing a new kind of document: a code of conduct or anti-harassment policy. Attendees are being explicitly told that they’re expected to follow these policies. I think this is important.
A quote from P.J. Eby about PyPI and groupware in general.
Is there a market for paid Django apps?
Even after all theses years REST best practices still elude me sometimes.
Are you looking for an awesome web development gig? Then you should come work for me at Revsys. We’re hiring a full-time Python/Django developer.
I’m looking for some help-desk style software with some very specific features.
The second part in my series about building a build farm for Django with Buildbot. Starting in this part I’ll be looking at some actual code.
Part 1 in my series on a complex Buildbot setup. This time: some background.
Frank and I held our first “office hours” last week; the transcript is now available.
Next month I’ll be teaching two new one-day classes, both of which evolved from common questions we get here at Revsys. Each class is going to be offered twice, once in LA and once in Boston.
Learn you how to roast a bird. It’s worth it, I promise.
Since 1.0, Django’s supported model inheritance. It’s a neat feature, and can go a long way towards increasing flexibility in your modeling options. However, model inheritance also offers a really excellent opportunity to shoot yourself in the foot: concrete (multi-table) inheritance.
On Twitter, I asked, “what’s your favorite third-party Django app?” Eight hours later, I’ve got about 50 replies. Let’s take a look.
What does “web scale” mean, anyway?
A quote from Peter Norvig on programming languages.
A quote from man tar.
A quote from Mark Shuttleworth on the dangers of tribalism.
A quote from Guido van Rossum on commit privileges.
How to work around a PyPI outage.
Backwards compatibility is a pain sometimes.
Every large project has ‘em. Doesn’t make it any nicer.
I had the pleasure of being on a forms panel at PyCon 2010 chaired by Brandon Craig Rhodes. To get a stable baseline, Brandon asked each of us to provide code showing how each forms toolkit might tackle a common forms problem: dynamic forms. Here’s my solution for Django.
Secret W3C member lists? Anonymous holds? What is this, the Senate?
Ubuntu 9.10 installs PostgreSQL with a default encoding of SQL_ASCII. This is stupid. Here’s how to fix it.
If you really want to produce great documentation, it needs to be edited.
How to develop a great technical writing style.
Tech docs can take a bunch of different forms ranging from high-level overviews, to step-by-step walkthroughs, to auto-generated API documentation. Unfortunately, no single format works for all users; there’s huge differences in the way that people learn, so a well-documented project needs to provide many different forms of documentation. This is the first in a series of posts that’ll cover the art of writing good technical documentation.
I travel quite a bit. This means I’ve often experienced a particularly geeky form of pain: the frustration of missing that one cable or power adaptor I really need. This has happened to me enough times that over the years I’ve grown into something of tech readiness geek. My travel kit now has all sorts of adaptors and cables; I thought it’d be amusing to dump out my travel bag and actually enumerate all this crap.
In March of 2007, I attempted to measure the size of Django’s community. That March turned out to be a major inflection point in Django’s growth: the release of 0.96 brought a lot of new features — testing and the new forms library being the critical ones — and those in turn brought in a lot of new users. Growth since then has been at a much faster pace. Today I thought it’d be interesting to review the same metrics I used back then. I was quite curious to see what’s changed, and by how much.
The web development community owes Rails and the Rails community a debt of gratitude. I think we should all step back from our personal preferences and plainly say thank you, Rails, for all that you’ve done to move the state of web development forward.
What’d you do the day you started your job? Got your commit access to the company’s source control, right? Wait, what?
Last night Rackspace Cloud had some downtime. Reading post-mortems is always instructive, so let’s see what we can learn from Rackspace.
Last week, I wrote on Twitter that “closed-source software gets worse with each release (Microsoft, Adobe, …). Open-source software gets better (OOo, Ubuntu, …).” Here’s where I try to expand on that quip.
These people are a cancer and must be destroyed.
QFT: “In short, if there’s a difference, it’s not the sex, it’s the sexism. Anyone who can’t acknowledge this is a bigot and a twit.”
My friends and former co-workers at Whiskey Media are looking for a developer to join their team.
Links to a bunch of simple forking network servers inspired by I like Unicorn because it’s Unix.
Porting Ryan Tomayko’s simple prefork network server into Python. You know, because it’s there.
I’m teaching a Django “Master Class” in Washington, DC on October 16, 2009.
In which copyright law makes collaborating on open source code more difficult than it should be.
The history and future of Python web development. A talk given at PyCon Argentina and PyCon Brazil, 2009.
Remember: today’s the last day to sign up at early-bird pricing for my week-long Django course in Kansas City. You can save $500 if you sign up now.
Twenty questions about the GNU Public License.
An overview of how Django handles authentication via sessions.
On being professional.
A comedy in which I try to remember how to import some code into SVN.
Need an experienced Python/Django developer? A good friend of mine needs a new gig.
I got a lot of great feedback on my buildout tutorial I posted last week. In general, the comments there have some excellent tips, tricks, and extra pointer, so check ‘em out. After reading the comments and a few more I got over email, I thought I’d share a selected grab-bag of updates, hints, and details for those fooling around with Buildout and Django.
Over the weekend I put together django-shorturls, the latest in a series of small plugable Django apps I’ve written. This time, though, I used zc.buildout and djangorecipe to build, test, package, and distribute the app, and (with the exception of a few annoyances) it’s an exceedingly civilized way to develop an app.
Python has one package distribution system: source files and setup.py install. And easy_install. Python has two package distribution systems…
The main part of getting Django working on alternate Python VMs was fixing the various assumptions we made about implementation details of Python.
Starting today I’m joining Frank Wiles — a good friend and fellow Lawrencian — at his consulting firm, Revolution Systems, LLC. I’m really excited to be working with Frank: he’s a great guy, and a crazy-smart developer and sysadmin.
There’s only one perfectly safe way to allow untrusted users to enter raw HTML. You’re not going to like it.
Excuse me while I shed a few tears for my former employer. How the mighty have fallen.
and why you should be, too.
What happened to the web standards descriptivists?
Since it comes up a lot, I thought I’d spend a bit of time writing up my thoughts on what“django.contrib“ really is, and what including a package in it really means. In a nutshell, django.contrib contains optional, de facto standard implementations of common patterns.
The traditional view of languages — human or computer — is that they’re a tool we use to express thought. But modern literary and linguistic theory holds that it’s a two way street: our thought drives our language, but the language we use leaves an indelible imprint on our thought processes.
Lessons from The Elements of Typographic Style: rhythm and proportion.
The minimalism bandwagon’s leaving — jump on! Jump on!
Some REST “worst practices.”
There are some great roundups of the content at PyCon out there; this isn’t one of them. See, I have this notebook (Moleskine FTW!) I carry with me everywhere, and now it’s chock-full of note from PyCon; this is a braindump.
A look back at the years I’ve spent a the Journal-World, and an announcement about the future.
“… supporting only Ascii is uninternational to a point that’s almost offensive …”
I’ve got a couple of sweet upcoming speaking/teaching gigs coming up, and now I’m going to pimp them out.
A general impression of how CouchDB fits into the big picture of the Web.
I’m playing with CouchDB tonight. Here are some first thoughts, as they occur to me.
I’ve been following with interest as Derek Willis explores Caspio, a sort of hosted data-driven web app tool for journalists. This post started out as a comment on his blog, but soon ballooned.
Prompted by recent reading on cryptography and computer security, I’ve been rethinking my pretty lax personal security plan. Taking to heart the lesson that the best security is open, I ‘m posting my plans publicly for comment.
A few words about salt.
Like everyone else, I got sick of looking at Marker Felt on my iPhone. So I did something about it.
Acrobat Reader blows ass.
There’s a fun thread over at Poynter’s Online-News mailing list about what the future might hold for digital journalism. I thought I’d post my contributions here as well.
I’ve always thought that the sign of a healthy Open Source project is a vibrant ecosystem around that project. That’s why I’ve been thrilled to see that there are a bunch of cool third-party Django add-ons popping up. I thought I’d take a few minutes and give a shout out to some of my favorites.
I’m extremely excited to announce our new internship program here in Lawrence. Starting this summer we’re going to be hiring interns to join our kick-ass team and learn the ropes.
So here’s a question I get asked a lot: “How big is Django’s community?” Read on to see me fail to answer this question.
“Be liberal in what you accept.”
Watching Wikipedia slowly die is sad, but there’s apparently a lesson here.
I got ripped off by Engadget, and I all got was this lousy t-shirt.
Wait, I didn’t even get one of those…
Inspired by Titus (who was in turn inspired by brian d foy), here’s what I hate about Python. I completely agree with Brian that you can’t trust any advocate who doesn’t know enough to find stuff to hate. Given that I spend a lot of time advocating Python, writing down what I hate seems a good exercise.
Quotes from PyCon.
Really, I couldn’t care less who’s got a bigger penis.
I’ve been trying to make outstanding fried chicken for about four years, and I think I’ve finally got it. I don’t mean to toot my own horn, but I just made the best damn fried chicken I’ve ever had, and it wasn’t even all that hard. If you like the crispy stuff and aren’t afraid of phrases like “heat a quart of oil to 375°”, read on…
I swear, sometimes this programming thing is really just the digital equivalent of baling twine and duct tape.
Want a job? We’re hiring a sysadmin.
If Guido gets to Pronounce, I do, too.
Part one of my thoughts after attending the Open Source Convention.
Lately a large number of questions posted to django-users have included phrases like “this is a show-stopper” or “this is critical”. I think it’s worth my time to point out that this is a lousy method of getting developers to do what you want. It’s the online equivalent of threatening to take your ball and go home, and is about as effective.
Here, then, some advice on the right ways to get your pet bug fixed quickly.
I got Dugg, I got reddited, and all I got was this lousy t-shirt.
Warning: This post contains profanity. Read on at your own risk.
The dog ate my DSlite.
I just found this in my django-ego-feed: 23 excuses: Simple Django View for Dynamic Text Replacement
I’ve been using something similar to generate the titles for the site (look at the title above for an example), so I’m pretty familiar with the technique.
Andrew’s code over there is pretty good, but I’ve got a few improvements he and you might be interested in.
I’m about to print up some Django shirts to take to OSCON next month — got any ideas?
Some Django propaganda to keep us rolling on…
My post-lunch time waste hack of the day.
If you live in the Bay Area or will be in Palo Alto on April 27th, I want to buy you dinner.
Wherein we discover that at least one lawyer has a sense of humor.
As the saying goes, if it sounds too good to be true, it probably is.
So Sun’s giving away T2000 servers for free — maybe.
Here’s some links to the Django stuff I showed off at Pycon.
What Would Bill Do?
Here’s a simple class for a template tag that caches its output (with apologies to Chris Parnell and Andy Samberg).
Inspired by Guido van Rossum’s plea to be taught web frameworks here are (in no particular order) ten reasons why he — and you — should use Django.
After far too long, I’m finally done.
Since my last post hit the Dojo folks pretty hard for the lack of documenation, I’d be remiss if I didn’t point out that they now have a manual online.
After hearing some rave reviews of Dojo on django-dev, I finally got around to checking it out today. Here are my thoughts (with an obvious focus towards) using Dojo with Django).
And now a word from our sponsors.
Django handles lots of traffic with ease; Django sites have survived slashdottings, farkings, and more. Here are some notes on how we tweak our servers to get that type of high performance.
Besides the Django developer position I posted about yesterday, we’re also hiring a front-end web developer.
Want to work for the most innovative news organization in the country, if not the world? Want to join a team of the best and brightest online media developers? Want to get paid to create award-winning web sites?
Well, have I got the job for you: World Online is looking for a kick-ass web developer to join our team.
Here’s how to install lighttpd from source on Ubuntu in a pleasent, Ubuntu-ish way.
One of the questions asked at Snakes & Rubies was about what Django could learn from Rails (and vice versa). Once I finish wrestling Final Cut Pro to the ground you’ll be able to see how Adrian and David answered the question, but in the meantime it got me thinking about some cool features of Rails that are worth ripping off… er… being inspired by.
I use and love allofmp3.com, but the site lacks an RSS feed of new music. So I created one.
As I was going over some notes on our internal wiki, I ran across a list of rejected names for the framework that become Django.
When a job listing says it requires knowledge of web standards, don’t bother applying if you haven’t changed your markup since 1998.
My take on Microsoft versus Linux.
My fiancée’s kick-ass pancake recipe — somewhere between a crêpe and a pancake.