E-Scribe : a programmer’s blog

About Me

PBX I'm Paul Bissex. I build web applications using open source software, especially Django. Backstory: In the 1990s I did graphic design for newspapers and magazines. Then I wrote technology commentary and reviews for Wired, Salon.com, Chicago Tribune, and lots of little places you've never heard of. Then I taught photographers how to create good websites. I co-wrote a book (see below) along the way. Current story: I am helping turn a giant media corporation into a digital enterprise. Feel free to email me.


I'm co-author of "Python Web Development with Django", an excellent guide to my favorite web framework. Published by Addison-Wesley, it is available from Amazon and your favorite technical bookstore as well.


Built using Django, served with gunicorn and nginx. The database is SQLite. Hosted on a FreeBSD VPS at Johncompanies.com. Comment-spam protection by Akismet.

Pile o'Tags

Stuff I Use

bitbucket, Django, Emacs, FreeBSD, Git, jQuery, LaunchBar, Markdown, Mercurial, OS X, Python, Review Board, S3, SQLite, Sublime Text, Ubuntu Linux

Spam Report

At least 235007 pieces of comment spam killed since 2008, mostly via Akismet.

Remote workers and how to keep them

I've been working as a remote software developer for over five years now. I gather that some outfits do this better than others. In case they're useful/inspirational for anyone else, I want to highlight the key things that have made this workable for so long. The key idea: Treat your remote workers as first-class, full-fledged members of the team.

Wednesday, January 20th, 2016
+ +

I Remember the Web: altavista.digital.com

First in an occasional series where I show how old I am by reminiscing about the '90s World Wide Web.

Do you remember the Altavista search engine? I don't mean the thing that Yahoo bought and buried. I mean the original 1990s version.

Altavista was an exciting game-changer when it arrived at the end of 1995. Web search had a lot of room for improvement. Altavista's two standout attributes that crushed the competition (e.g. WebCrawler) were its size and its speed.

I recall Digital saying it was partly intended as a demo of the powerful hardware they had dedicated to it. But in any case it was a huge leap in usability.

Then Google came along and added better relevance while also being vast and fast. I didn't find Google to be an obvious Altavista-killer at first, but over time it kept improving substantially while Altavista did not.

Saturday, November 14th, 2015
+ +

The good old TRS-80 Model III

TRS-80 Model III I've been reflecting recently on my twisty path from being a kid with a computer to being a grown-up who is (apparently) a bona fide software engineer.

My first computer was a TRS-80 Model III. It had a 1MHz 8-bit Z-80 CPU, 64KB of RAM, and two 5.25" floppy disk drives (after upgrades).

I used it to play games, write papers, and learn how to write software (mostly in BASIC, though I eventually learned Z-80 assembly language. I even got a Pascal compiler from somewhere but I barely knew what to do with it).

Some notable differences from the young person's computing experience of today:

Thursday, August 20th, 2015

Does Python scale?

(This is another thing I found myself writing on Quora and wanted to keep. The question was "Does Python have any scalability limitations?")

"Scalability" is a term people like to throw around, but the less specific you are as to what you mean by it, the less substantial the answers will be. It is not a simple linear measure on which languages can be given some numerical score.

Languages and their implementations do have certain inherent performance characteristics, but in order to understand their relevance to your needs you have to get specific about your needs.

You will always be able to find stories where people used technology X and found it "didn't scale". Sometimes this is because they didn't know, or chose not to pursue, certain performance optimizations. Sometimes this is because technology X was a poor fit for their problem.

(If you're into programming language esoterica, the technical feature of Python that gets the most attention in performance discussions is the Global Interpreter Lock.)

If it suits your project, use it. There's not some hidden performance ceiling that's going to suddenly appear and crush you. The Python system I work on serves 20+ million pages per day.

Friday, July 31st, 2015
+ +

What makes a good developer?

(Somebody on Quora asked about "traits that the best programmers seem to have". Here's what I said.)

Breadth of understanding. They are not dogmatic. They have used (at least in passing) more than one language, framework, operating system -- and understand the strong points of each.

Communication skills. They can explain their decisions. They can write code reviews. They can discuss their code.

Understanding that engineering is about tradeoffs. There is never an absolute "best" answer; there are always many choices each with their own sets of pros and cons.

Pragmatism. They focus on delivering functionality and have a suspicion of "clever" code.

Understanding that most of our work is maintenance. They write code to be read, and they aren't afraid to refactor when it will make code easier to work with.

Monday, July 27th, 2015