Thinking About Risk: Sidebar #3: Two Flavors of Medium Risk 🔗
When you look at a likelihood/impact risk matrix, you might notice that “medium” appears twice – once as high-likelihood/low-impact, and once as low-l [...]
a collection of dev rss feeds - blogroll
Posts
When you look at a likelihood/impact risk matrix, you might notice that “medium” appears twice – once as high-likelihood/low-impact, and once as low-l [...]
In the real world, accidents happen when a series of small missteps align to create severe consequences. This is something we call the “Swiss Cheese M [...]
Risk is usually defined as the product of two factors: Likelihood and Impact. However, some disciplines include a third factor: Exposure. What’s that [...]
So you’ve identified a risk — now what do you do about it? Here’s a simple framework to help frame discussions about risk mitigation. It’s intentional [...]
Welcome to a new series about how to think about risk. This series is a crash course, a high-level introduction to the most important concepts and ris [...]
If you — as an individual or a group — are re-assessing your digital security posture in light of the US election results, I’m available to help. I’m [...]
Applications are open for the 2025 Django Software Foundation Board of Directors – you can apply until October 25th. So, in this post I’ll do two thin [...]
What would the Django Software Foundation look like if we had 4x our current budget? [...]
There have been massive developments in AI in the last decade, and they’re changing what’s possible with software. There’s also been a huge amount of [...]
Sumana challenged me to apply the principles of Leave No Trace to engineering leadership, so here we go. [...]
A new principle I’m trying to follow: we should be paying more for independent media. How I got there, and a list of the media I’m paying for. [...]
I planned and started to write a series about personal productivity systems, but I’m abandoning the series. Here’s why. [...]
One of the main responsibilities of a leader/manager is helping their staff develop. Mentorship, coaching, and sponsorship are import tools in the sta [...]
I was invited on the Sustain podcast to discuss my recent rant about open source sustainability. I talked about my reaction to the criticism that open [...]
I was on the Django Chat podcast to about Django’s history, the creation of the DSF, my recent return to the DSF board and my goals there, and the thi [...]
I’ve been through close to a dozen reorgs. This article contains the advice I wish I’d been given earlier in my career when I didn’t yet have that exp [...]
Something missing from this series on estimation, until now, has been a discussion of how to “break down” a project into a well-defined task list. I’d [...]
If you have a problem with maintainers getting paid then you have a problem with me and I suggest you let that one marinate. [...]
How do you understand what engineers are doing with that time? How do you know if they’re working on the “right” things? Here’s how I suggest answerin [...]
Lessons learned and updates from a couple of years of executing on my philanthropic plan: finding and tracking organizations, continuing to wrestle wi [...]
I’m really proud of my track record building diverse teams. When I’ve been responsible for hiring, those teams have consistently been more diverse tha [...]
My playbook for managing technical debt. [...]
This is my preferred decision-making process – a version of the “document-discuss-decide” process that I called for at the end of the part 1 in this s [...]
The RFC process has been a huge success in defining the standards that run the Internet, but naively adopting this process for your company is a mista [...]
It’s never acceptable to yell at work. The norms of professional behavior call for a cool demeanor. It’s normal to have emotions at work, but there’s [...]
Managers often talk about performance as a static thing. We say that someone is a “high performer” or “low performer”, as if performance is a fixed at [...]
In a management Slack I’m in, someone responded to a list of commonly-recommended management books by asking, “are these people good managers though?” [...]
What are the major management behaviors that can help build trust? Management books often cover the importance of trust, but abstractly. There’s preci [...]
At a certain level of seniority – typically the Staff level for ICs, and the Director level for managers – you’ll be expected to fully own huge areas [...]
As companies start to roll out so-called “Return to Office” (RTO) policies, I’ve found myself disappointed by the hyperbolic arguments being made by r [...]
Most managers have internalized the idea that team growth, in and of itself, is a unalloyed good, and a sign of success. This is wrong, but it’s under [...]
Should you give unsuccessful job candidates feedback on what they did or didn’t get right? [...]
When is it the right choice to hire full-time staff, and when should you use consultants or contractors instead? The short answer: hire consultants fo [...]
When you’re hiring, try not to get caught in the trap of evaluating candidates based on their best possible performance. Look instead for consistency: [...]
A major personal accomplishment in 2022 – something I’m proud of – was creating a philanthropic framework. My wife and I intend to use this framework [...]
I received a ton of replies to my previous piece in “incompetent but nice” people. I’ve collected some of those replies, and some of my own follow-ups [...]
A question I’ve never been able to answer to my satisfaction: how do you manage people who are nice but can’t do the work? [...]
When you change jobs, ideally you’ll have the opportunity to brief your successor directly. But that isn’t always possible: you might get fired or lai [...]
Stop doing performance reviews based on the calendar year. Instead, schedule performance reviews around each person’s individual calendar — a year aft [...]
Patterns of short tenure are normal at the beginning of a career, but are more of a red flag in more senior roles. Here’s why. [...]
A pattern of short tenure – multiple short jobs over a small period of time – can be a red flag, but necessarily. I’ll dig into short tenure in this a [...]
On using Copilot as a writing assistant, and my complex feelings about the ethics of doing so. [...]
You tell me. [...]
In my writing about hiring and management, I often talk about role titles – terms like “manager”, “director”, “executive”, and so forth. I’ve found th [...]
If you’re ever an interviewer on a role I’m hiring for, there’s this one thing I’m going to ask you to do that might feel weird. After you conduct tha [...]
Software quality is more the result of a system designed to produce quality, and not so much the result of individual performance. That is: a group of [...]
Techniques for effective note-taking during interviews. [...]
There’s a Right Way to conduct job interviews: one-on-one, with a single interviewer per interview session. If you need multiple interviewers (you pro [...]
Most of the time, reference checks go very well: you only turn up information that confirms your decision to hire this candidate. But sometimes — mayb [...]
Part two of my reference check series, covering the nuts and bolts of conducting a reference check. When should you check references? How many? How sh [...]
Reference checking isn’t optional: it can save you from making a big mistake. Reference checks are your last line of defense against hiring a jerk. [...]
“What metrics should I use to measure my engineering team’s performance?” Believe it not, there is a Right Answer: the so-called DORA metrics. [...]
An edited transcript of a talk I delivered at the CTOCraft Hiring MiniConf. How do you make a job offer that’ll be accepted when other companies are o [...]
Answering a question from a reader: how do you deal with misalignment – arguments about skills, pay, etc. – when hiring? [...]
Dishonesty at work is wrong except when it isn’t. [...]
I’m starting a new series on professionalism: the set of workplace behaviors that are generally expected at work. These behaviors are largely unspoken [...]
A criticism of some of my writing is that it’s too mercenary. Some see my advice as coldly calculating, too focused on individual outcomes over collec [...]
Say you agree with me that exit interviews are dangerous for employees, but you’re a kind, empathetic manager who’s built a team with high trust. You’ [...]
It’s tempting to air your grievances at your exit interview. Don’t. There’s almost no upside to speaking up, and tremendous potential downside. Avoid [...]
I was on The Changelog, talking about work sample tests and hiring in general. Listen wherever you get your podcasts, or right here. [...]
Ask A Manager had a wild story a week ago. A company interviewed someone, hired him, but when he showed up for work … it was a totally different perso [...]
How do you develop an interview question that measures a core value? [...]
Patty McCord was Netflix’s first head of HR and a member of its executive team for 14 years. She (along with Reed Hastings, Netflix’s founder and CEO) [...]
A round up of my writing in 2021: what were my goals? How’d I do? And some statistics. [...]
This is the final post in my series on work sample tests. It’s a wrap-up post: I’ll address a few random points I couldn’t quite fit in elsewhere, and [...]
I’ve written about a bunch of effective work sample tests and the “rules of the road” that make them effective. One thing I haven’t talked about is co [...]
The work sample tests I’ve covered in this series so far all involve software development. But what about roles that don’t involve day-to-day coding: [...]
Tomorrow is Volunteer Responsibility Amnesty Day, a day to reflect on your responsibilities as a volunteer and, if any of them are too burdensome, set [...]
For most software engineering roles, the best work sample test will be some combination of the exercises I covered earlier in this series. But not eve [...]
If you’re hiring engineers, some candidates will already have code they can share: side projects, open source, and so on. It’s silly to ask those cand [...]
I tend to prefer asynchronous work sample tests. The flexible scheduling of asynchronous exercises (i.e. “work on this whenever you like”) works bette [...]
Coding homework is my default work sample test: I use it for all engineering roles unless it’s obvious that another kind of exercise is better. There [...]
What makes a work sample test “good” – fair, inclusive, and with high predictive value? Here’s my framework: eight principles that, if followed, give [...]
Good hiring processes try to maximize inclusivity and predictive value, but unfortunately, work sample tests bring these goals into conflict. There’s [...]
Earlier this year, I wrote a series on interview questions. Good interview questions are one key to hiring well, but they’re not the only key. Today, [...]
If you want to be a good manager, you need to accept that your behavior is under a microscope. You need to watch your behavior carefully and pay atten [...]
If you’ve used marijuana, can you still get hired by the Federal Government? Yes, but it’s complicated. I’ll try to explain… [...]
Three simple tricks product I’ve picked up that help me be more than completely useless when I need to wear a Product hat. [...]
Salaries in tech are going up, and many people are looking for new jobs or reevaluating the ones they have. However, many tech workers have no idea wh [...]
Wrapping up my series on delegation with an example: how to delegate meeting attendance. [...]
Some managers think delegation is easy: you just ask someone on your team to go do a thing, then kick back with your feet on the desk until it’s done. [...]
Broadly speaking, there are two management styles: people-oriented and results-oriented management. Taken to extremes both styles have failure modes, [...]
To make delegation most effective, tell people the results you want, but let them decide on how to achieve those results. [...]
Your gut instinct is probably to wait to delegate some work until you’re fully confident that the person can handle it. This is often a mistake. Inste [...]
My foundational principle of delegation: “give away your toys”. Look to delegate the work you love, not the stuff you dislike or dread. [...]
Most managers know that delegation is part of their job, but the vast majority of management texts are incredibly non-specific about what delegation m [...]
My list of “Probably Are Gonna Need It” security features for your web app – things that you should build up-front, not wait until you need them (when [...]
Team Topologies (Matthew Skelton and Manuel Pais, 2019) is, essentially, a book-length treatment of the Inverse Conway Maneuver. I recommend this book [...]
For an organization to succeed – to reliably and consistently deliver great products that customers want – Product and Engineering need to work well i [...]
You’ve made and committed to a timeline, but your estimate was wrong. The timeline’s going to slip. Now what? [...]
Sometimes, it’s more important to be able to produce a quick estimate than it is to produce a good one. In those cases, reach for the SWAG: the Simple [...]
Last time, I explained that, although estimating software project timelines is hard, you should do it anyway. With that background, I want to go into [...]
It’s well established that estimating software projects is hard. This is true, but you should learn how anyway. [...]
The 2021 edition of Verizon’s Data Breach Investigations Report (DBIR) is out. I read the DBIR every year; it’s one of the only analyses of real-world [...]
Managers need to understand the difference between praise and positive feedback. Feedback is one of the most important tools in your management toolbo [...]
Addressing behavior through mass emails or new policy rollout is a mistake. Here’s why. [...]
Here are three models that I like for delivering feedback. Each is valuable on its own and would make a great starting point for anyone who wants to b [...]
On the fundamental purpose of middle management: context down, information up. [...]
When organizations are performing well, the whole is more than the sum of its parts. That’s the whole point of building teams: together we can accompl [...]
Sometimes, programming feels like magic: you chant some arcane incantation and a fleet of robots do your bidding. But sometimes, magic is mundane. If [...]
Sébastien asks: “Would you say that your questions are equally applicable to junior and senior positions?” [...]
Some conversations about my previous piece brought me back to one of the earliest lessons I learned in my management career. It’s a realization that’s [...]
I had a call a few weeks ago with a friend and fellow engineering manager, and we spent most of it talking about someone on her team who wasn’t respon [...]
Within an organization, there are three kinds of power structures: role power, relationships, and expertise. Understanding these kinds of power — how [...]
How many hours does it take to hire someone, from approval of the open position to their first day? I tracked a recent hiring round I ran, and found i [...]
In early January, Sumana Harihareswara and I started getting together a few times a week to help each other write more. This model of working together [...]
Asking candidates why they left their last job is common… but should it be? I’m not sure. What do you think? [...]
Here’s a weird little skill I had to learn the hard way: how to give a status update to executives, investors, or boards. It’s different from most oth [...]
There are three types of interview questions: behavioral, hypothetical, and trivia. Behavioral questions are the gold standard; they’re the most effec [...]
I believe that autonomy is one of the most important values of effective organizations. But I also think it’s a value that’s misunderstood and misappl [...]
A summary and wrap-up of my Unpacking Interview Questions series, covering why I wrote this series in the first place, some advice on developing your [...]
The fifth and final part of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. To [...]
Part 4 of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. Today, an oldie-but- [...]
Part 3 of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. Today: making sure c [...]
Part 2 of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. Today: measuring a m [...]
Part 1 of my Unpacking Interview Questions series, where I share one of the questions I use when I interview for technical roles. Today: asking candid [...]
In my previous article, I wrote about gathering consensus before a decision. Several folks asked for more detail about how I structure those consensus [...]
The next time you have an important proposal to make, don’t wait until the big meeting to ask for support. Here’s how to gather feedback and build con [...]
WHen I worked for Hangar, I developed our own Dumb Security Questionnaire (the questions we ask vendors to evaluate their security maturity). All DSQs [...]
I’m terrifically excited to get a COVID vaccine. Not just “willing”, but actually quite excited. mRNA vaccines are this generation’s moonshot – a huge [...]
Practical ways to bridge the gap between AppSec and Engineering. [...]
How should you structure a larger engineering organization, one with dozens (or hundreds) of engineers? There are many tradeoffs to consider, and no s [...]
One of the major trends I’ve been thinking about a lot this year is that the reality of AI has starting catching up to the hype. This thought has been [...]
Hiring is one of the most important parts of a manager’s job. Over the last few years, I’ve developed a metric I use to measure hiring performance. It [...]
Denial-of-Service (DoS) vulnerabilities are common, but teams frequently disagree on how to treat them. The risk can be difficult to analyze: I’ve see [...]
What’s the best way to train folks to conduct job interviews? I have a process I’ve used for about five years that seems to work well. It’s loosely ba [...]
SQL Injection (SQLi) is one of the most dangerous classes of web vulnerabilities. Thankfully, it’s becoming increasingly rare — thanks mostly to incre [...]
Effective resumes need to contain two things: responsibilities and accomplishments. The first tells the read what your job was; the second, what your [...]
It’s looking increasingly likely that the COVID-19 pandemic will cause a recession. It’s easy to think we might be immune from the effects of a global [...]
Starting today, Django has a new governance model. Previously, a small “core team” made most decisions, including electing a Technical Board to own de [...]
Lately I’ve been working with our startups to establish their engineering strategies. One model I’ve found useful is to place their technical challeng [...]
Retrospectives are probably the most important software development practice. They build a culture of continuous improvement. We may fail, but we’ll l [...]
Much of my work at Hangar involves early product development, helping our startups “break ground” on their products. We’re starting with little more t [...]
A quick announcement: as a bit of an experiment, I’ve moved this site to Google Cloud Run. Please let me know if anything seems broken. I may in the f [...]
For years I’ve noodled around with various setups for a Python development environment. A couple of years ago I wrote about a setup I finally liked; t [...]
Last time I was looking for a job, I wrote up a list of questions I wanted to ask prospective employees. I just ran across the list again, and figured [...]
I’ve interviewed hundreds of people for technical roles, and a pattern has emerged. In general, we reject many more candidates for social skills than [...]
Craig recently wrote about his mixed opinions about OKRs. The crux of his argument, I think, is that communicating goals is the important thing, and t [...]
When I interview, I say nearly the same thing at the beginning of the interview. It’s a script I’ve practiced and honed over the years . It’s only ele [...]
Do you have a growing engineering organization that needs help hiring effectively? I can help! I have consulting availability over the next few months [...]
I’m trying out Tiller (a service that pulls financial transaction data into Google Sheets), and there’s a nifty bit of security design. Instead of its [...]
“So, what’s new with you?” Um, a lot: Today’s my last day at 18F. It’s been an honor and a privilege to get to work at such an amazing place with such [...]
Like many engineers, I got thrown into management without any real guidance. I thought management was just telling people what to do. I thought there [...]
When social media was small, it was a bubble: a quiet conversation among friends. It was nice, but not particularly challenging. Pleasant, but maybe n [...]
This is out of date. For a newer version, see My Python Development Environment, 2020 Edition For years I’ve noodled around with various setups for a [...]
Welcome to FictionalSoft! I hope your first week is going well? Great. As you start to find your feet, I want to make sure we have a shared understand [...]
You’ve probably heard about the massive wildfires in Northern California. You probably know that they’re huge, that over 50 people have died, and that [...]
I’m not a fan of including social engineering – spearphishing, calls to support tickets, office visits – as part of penetration tests. These activitie [...]
Pytest is my preferred Python testing library. It makes simple tests incredibly easy to write, and is full of advanced features (and tons of plugins) [...]
Videos from Django Under the Hood 2016 are up - check ’em out! As usual, the conference was amazing and the content was fantastic. I really enjoyed al [...]
Django’s admin site is about 12 years old. It started circa early 2004 as an internal CMS at the Lawrence Journal-World, was released as part of Djang [...]
There are a couple of metaphors that tend to guide my thinking about the practice of security: ratchets and levers. Ratchets Dr. Schorsch, CC-BY-SA 3. [...]
The 2016 edition of Verizon’s Data Breach Investigations Report is out, and as usual it’s compelling reading. The DBIR is one of the only sources of h [...]
I’ve started a curated reading list for InfoSec engineers. I was inspired by Mark McGranaghan’s Services Engineering reading list. I really enjoy thes [...]
My co-worker Eric Mill recently brought up the topic of psychological safety. Referencing a study by Google that points to psychological safety as a k [...]
I run a distributed team, across nine hours of time zone offset, so staying in sync takes some work. We’ve been fooling around with different methods [...]
A few folks have asked about a link between my PyCon talk and Shanley’s writing, specifically her essay 10x Engineer, which you can find in her essay [...]
Context: Uber Executive Suggests Digging Up Dirt On Journalists, The moment I learned just how far Uber will go to silence journalists and attack wome [...]
Please join me in helping making the Python community better by supporting the Ada Initiative. Last year, the Python community raised $10,000 for the [...]
TL;DR: Ignore Jeff; read Shanley. Jeff Atwood: If you see any behavior that gives you pause, behavior that makes you wonder “is that OK?” […] speak up [...]
Obligatory Disclaimer: this post discusses unlimited vacation policies. My employer (Heroku) has one such policy. However, this post isn’t really spec [...]
Adrian broke the news: today, he and I are retiring as BDFLs, transitioning to a truly community-run project. Adrian wrote a bit about the history of [...]
It’s impossible to get good bagels further west than about New Jersey, so I make my own. My recipe’s adapted from Baking Illustrated, Alton Brown’s pr [...]
Dear friends in the Node community, I’m excited and inspired by the work that you’re doing. Being new is exciting: you get to re-invent the world, and [...]
Yesterday brought news of TRUCEConf. It’s a terrible, dangerous and insulting idea. The organizers should reconsider, either canceling the event or ch [...]
Three things I want to remember from XOXO, written in haste as the conference wraps up: Optimism XOXO is so un-snarky, so radically honest and sincere [...]
I believe deeply in the importance of gender equality, yet I work in open source, a community with shockingly few women. The Ada Initiative is working [...]
Getting new features into Django isn’t easy. It’s that way for a reason — I spoke recently about why conservatism is a virtue — but it does happen. I’ [...]
I’ve joined Heroku as their Director of Security. Why? I started as a Heroku skeptic. The first iterations of Platform-as-a-Service left me deeply und [...]
Here’s a quick way to automatically regenerate your Sphinx docs as you make changes to the source. There’s probably a million ways to do this; here’s [...]
In 2007, and again in 2009, I made an attempt to measure the size of the Django community. By popular request — okay, a couple people asked for it, wh [...]
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 lot [...]
As usual, what I write here is my opinion and I don’t speak for anyone else. In particular, this isn’t any sort of official PyCon anything. Recently, [...]
P.J. Eby: The cardinal rule of successful groupware is that those who put information into the system must receive a proportional benefit for their ef [...]
Here’s a thought that’s been rummaging around in my brain for some time now: is there a market for commercial, closed-source Django apps? Suppose some [...]
Consider a simple photo storage service as an API. Users can only interact with the API if they’ve got an account. Let’s say authorization happens ove [...]
Rusty Russell — a hacker I admire greatly — writes: “If you didn’t run code written by assholes, your machine wouldn’t boot.” This was passed on to me [...]
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. Upda [...]
I’m looking for some help-desk style software with some very specific features: Users create new help requests by emailing a support@example.com-style [...]
This is the second part in my series about building a build farm for Django with Buildbot. Part 1 covered some background, including the specific prob [...]
Buildbot, the venerable Python continuous integration server, has the reputation of being complex and difficult to set up. After spending a couple of [...]
Frank and I held our first Revsys “office hours” this past Friday, November 5th. We’ve taken the IRC transcript, organized and cleaned it up a bit, an [...]
(Cross-posted from the Revsys blog; I think folks here might be interested, too.) Next month I’ll be teaching two new one-day classes, both of which e [...]
Look, people, cooking isn’t hard. Some recipes are hard, but really most of the best, classic dishes are as easy as pie [1]. Take a nice roast chicken [...]
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. H [...]
On Twitter, I asked, “what’s your favorite third-party Django app?” Eight hours later, I’ve got about 50 replies. I meant the question to be fairly op [...]
Christophe Pettus: What does [“web scale”] mean? It clearly means something along the lines of, “Can handle lots of transactions per unit time,” but h [...]
Peter Norvig: [Programming] language choice is not as important as all the other choices: if you have the right overall architecture, the right team o [...]
man tar: The GNU folks, in general, abhor man pages, and create info documents instead. Unfortunately, the info document describing tar is licensed un [...]
Mark Shuttleworth: Tribalism is when one group of people start to think people from another group are “wrong by default”. It’s the great-granddaddy of [...]
Guido van Rossum: Maybe we’ve been too careful with only giving commit privileges to to experienced and trusted new developers. I spoke to Ezio Melott [...]
Lately PyPI, the Python package index, has been having some availability issues. When PyPI goes down it really hurts Python developers: we can’t insta [...]
Backwards compatibility is pain sometimes: # We need backwards compatibility with code which spells it this way: # def my_view(): pass # my_view = cac [...]
D’oh: django/contrib/admin/util.py django/contrib/admindocs/utils.py django/contrib/comments/views/utils.py django/contrib/formtools/utils.py django/c [...]
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 prov [...]
Early registration ends Friday for the March Advanced Django Class I’m teaching, so if you’re planning on coming, you should sign up soon! I’m really [...]
Ian Hickson (emphasis added): Someone whom I can’t identify publicly, since he posted only on one of the secret W3C member lists, contributed to the f [...]
Ubuntu 9.10 installs PostgreSQL with a default encoding of SQL_ASCII. This is dumb: SQL_ASCII basically means “I don’t care about the encoding of my d [...]
I’m supposed to be this expert on writing, right? So how come my previous articles have had so many errors? Simple: my blog doesn’t have an editor. Th [...]
Now that I’ve discussed what kinds of technical documentation to write, I can move on to the question of how to actually develop a writing style that [...]
Tech docs can take a bunch of different forms ranging from high-level overviews, to step-by-step walkthroughs, to auto-generated API documentation. Un [...]
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 [...]
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 [...]
It’s fashionable, or perhaps inevitable, for tech communities to trash their competition. The Emacs folks like to mock vi users; Windows folk look dow [...]
Commit bits What’d you do the day you started your job? Got a little tour. Found your desk. Some HR paperwork. Figured out the network. Set up your ne [...]
Last night Rackspace Cloud had some downtime. Reading post-mortems is always instructive, so let’s see what we can learn from Rackspace. It sounds lik [...]
The power of “no” Last week, I wrote on Twitter: Closed-source software gets worse with each release (Microsoft, Adobe, …). Open-source software gets [...]
Please die in a fire: From: <…@hootsmart.com> Subject: I would like to offer free SEO for the djangoproject.com Hi Jacob, I would like to offer my SEO [...]
Daniel Dvorkin: In every field which was once exclusively male, but is now no longer, it’s been claimed first, that no woman can perform alongside men [...]
This is a paid advertisement. My friends and former co-workers at Whiskey Media are looking for a developer to join their team. I can’t possible say e [...]
Ryan’s I like Unicorn because it’s Unix appears to have started a mini-meme of folks writing simple forking network servers in their language of choic [...]
Ryan Tomayko’s I like Unicorn because it’s Unix should be required reading for anyone doing anything involving networks or unixes these days. Like Rya [...]
I’m pleased to announce that I’m teaming up with Steve Holden and Holden Web to teach a one-day Django Master Class. The class’ll be in Washington, DC [...]
Mike Malone emailed me an interesting question, which I thought I’d answer publicly: [We’ve released code] under the BSD license. We want to accept pa [...]
A talk given at PyCon Argentina and PyCon Brazil, 2009. Web development sucks. It’s true: web development, at its worst, is difficult, repetitive, and [...]
A quick reminder: if you’re thinking of coming to me week-long Django course in Kansas City next month, today’s the last day to sign up at early-bird [...]
I’m pleased to announce that I’ll be teaching a week-long introductory Django course in Kansas City, September 21st - 25th. Teaching’s folks how to us [...]
foo.py is a Python library released under the GPLv3. bar.py is a library distributed commercially. If bar contains import foo, must bar.py be released [...]
Django’s session and authentication frameworks are designed to Just Work™, and can seem pretty magical. Like the rest of Django, though, these parts a [...]
Yes, it’d be nice if contractors kept up to date on the progress of the various building codes. They don’t. There are a lot of people who asked about [...]
Okay, time to import this code into SVN. svn import, right? This should be easy! svn import https://...../trunk/ Oh crap, that tried to import everyth [...]
Need an experienced Python/Django developer? A good friend of mine is looking for a new gig. He’s employed currently and wants to keep his search on t [...]
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 p [...]
Developing a Django app with zc.buildout Over the weekend I put together django-shorturls, the latest in a series of small plugable Django apps I’ve w [...]
Python has one package distribution system: source files and setup.py install. And easy_install. Python has two package distribution systems: setup.py [...]
Hey, look, it’s a new W3C site. Hm: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org [...]
I’m sitting here at PyCon at the Python Language summit discussing differences between Python versions, and the topic of implementation details came u [...]
It’s the era of change, I suppose… Starting today I’m joining Frank Wiles – a good friend and fellow Lawrencian – at his consulting firm, Revolution S [...]
An input form that takes raw HTML. It’s a pretty common thing to see in web apps these days: many comment forms allow HTML, or some subset thereof; ma [...]
What a way to start the morning: Yup, that’s right; my former employer the Lawrence Journal-World – one of the most ground-breaking, award-winning, fo [...]
This is a rough transcript, with links, of a 3-minute lightning talk I gave at LCA. It’s obviously not a complete argument; just a 180-second pitch fo [...]
In the world of grammarians there are two competing camps: descriptivists and prescriptivists. Edward Finegan of the University of Southern California [...]
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 [...]
It frustrates me when I hear people dismiss the differences between computer languages. There really isn’t any difference between languages, the argum [...]
Horizontal motion Bringhurst: Anything from 45 to 75 characters is widely regarded as a satisfactory length of line for a single-column page […] The 6 [...]
I’ve been working on redoing my website for at least the last year or so… and finally got it done. I drew obvious inspiration from the minimalism tren [...]
A few weeks ago, I sent the following in a email to a co-worker asking for input on designing REST APIs in Django. Since then, I’ve quoted myself a fe [...]
PyCon 2008 Brain Dump There are some great roundups of the content at PyCon out there; this isn’t one of them. See, I have this notebook (Moleskine FT [...]
I try not to get political here, so I’ll try to keep this as neutral as possible. Bruce Perens is running for a board seat at the Open Source Initiati [...]
Almost four years ago, Adrian posted about a job opening at this little newspaper in the middle of the country. He wrote that World Online is […] one [...]
Paul Graham: Arc only supports Ascii. MzScheme, which the current version of Arc compiles to, has some more advanced plan for dealing with characters. [...]
I’ve got a couple of sweet upcoming speaking/teaching gigs coming up, and now I’m going to pimp them out. If you’re not down with self-promotion, you [...]
A quick update on the Django Book: Adrian and I wrapped up the last few bits last week, and the book went to the printer on Friday. It should start sh [...]
I’ll have more notes about CouchDB later tonight. First, though, I want to step back and look at the big picture. A few months ago, Bill de hÓra wrote [...]
I’m playing with CouchDB tonight. Some first thoughts, as they occur to me: The build process was very easy. I already had Erlang and all the standard [...]
I’ve been following with interest as Derek Willis explores Caspio, a sort of hosted data-driven web app tool for journalists. The following started ou [...]
My personal security plan Prompted by recent reading on cryptography and computer security, I’ve been rethinking my pretty lax personal security plan. [...]
I’m a food geek. I spend my free time contemplating recipes. I bore my friends by talking about the Maillard reaction and annoy them by saying things [...]
Like everyone else, I got sick of looking at Marker Felt on my iPhone. So I did something about it. OK, so it wasn’t a huge amount of work; I mostly p [...]
Dear Adobe – Acrobat sucks gigantic mountain-goat testicles. Everything about it from the installer to the interface to its performance seems designed [...]
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 contrib [...]
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 th [...]
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- [...]
So here’s a question I get asked a lot: “How big is Django’s community?” Anyone who works in open source knows that it’s basically impossible to know [...]
“Be liberal in what you accept.” dummy_thread » entry.bozo » req.assbackwards » UnicodeDammit » x possibly equals y » [...]
It’s been a bad new year for Wikipedia, and it’s probably just going to get worse. While watching such a noble experiment come apart at the seams is d [...]
What a fun morning. The Daily Python-URL carried a link to an Engadget story featuring a picture of the OLPC from PyCon (Ian Bicking’s badge is visibl [...]
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 a [...]
Overheard at PyCon: James Tauber: “Reinventing the wheel is great if you’re trying to learn more about wheels.” Adrian Holovaty: “Having Python produc [...]
Lately there’s been a big flare-up of web geek dick waving. This happens from time to time, and every time it just pisses me off to no end. All this a [...]
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 [...]
I swear, sometimes this programming thing is really just the digital equivalent of baling twine and duct tape. If you happen to be watching 6News in L [...]
Wanted: kick-ass sysadmin Update: The position has been filled. Thanks to all who applied. A quick note: we’re currently hiring a sysadmin to join us [...]
So it seems the BDFL Pronounced that Django is the Python web framework. Obviously this makes me pretty damn happy. I’m sure this will help people try [...]
Post-OSCONum part 1: try not to suck Good lord, I’m exhausted. OSCON was amazing. It’s clear that a sea change is occurring in the open source movemen [...]
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 wort [...]
My last entry about my dog eating my DSlite hit Digg (screenshot), Reddit (screenshot), and a couple of other big-traffic sites over the weekend. Pret [...]
So I came home to find this: [A moment of silence for my so-recently-new toy…] He mangled the thing pretty good, but amazingly it still turns on, albe [...]
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 [...]
I’m about to print up some Django shirts to take to OSCON next month – got any ideas? We gotta move pretty fast (we’re going to try to get an order in [...]
Some Django propaganda: Video killed the radio star The talk I gave last week at Google is now up on Google Video. I covered similar ground to what Ad [...]
Inspired by Online News Squared, and with my sincerest apologies to Adrian, I give you chicagomime.user.js (requires Firefox and Greasemonkey). [...]
Update Ack – I mistyped the date on this page! The meetup will be Thursday, April 27th (not Wednesday as this originally said). Hopefully that still w [...]
Brian Beck just announced that he’s beginning work on Merquery, a full-text indexer and search engine specifically designed for developers using RAD f [...]
I just found this reading through the Amazon Web Services license: EXCEPT TO THE EXTENT PROHIBITED BY APPLICABLE LAW, AMAZON DISCLAIMS ALL WARRANTIES, [...]
As the saying goes, if it sounds too good to be true, it probably is. A few weeks ago I applied for Sun’s Niagra try-before-you-buy program hoping to [...]
So Sun’s giving away T2000 servers for free. Well sort of, anyway: you get to try ’em for 60 days, and according to Jonathan Schwartz if you post benc [...]
For anyone looking for the Django stuff I showed off at PyCon: Slides from my presentation (PDF version [9 MB]) The Sudoku app I demonstrated Source t [...]
What Would Bill Do? Bill would increase debt by $851 billion Bill would require universities to disclose deals between professors, businesses Bill wou [...]
Here’s a simple class for a template tag that caches its output (with apologies to Chris Parnell and Andy Samberg): from django.core import template f [...]
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. 1. [...]
I’m thrilled to announce we’ve hired James Bennett (a.k.a ubernostrum in #django) as World Online’s new front end developer. About a month ago he wrot [...]
Yes, the Snakes and Rubies videos are now online. No, they’re not perfect. No, I’m not going to wait for FCP to re-render any more. I’ll write a post- [...]
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 towa [...]
Have more than thou showest, Speak less than thou knowest, Lend less than thou owest, Ride more than thou goest. — King Lear 1.4.71-4 [...]
Django handles lots of traffic with ease; Django sites have survived slashdottings, farkings, and more. Here are some notes on how we tweak our server [...]
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 de [...]
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 de [...]
Ubuntu “Breezy” doesn’t have lighttpd (yet), and the only Ubuntu binaries I could find were (a) stale and (b) compiled for x86. Building lighty from s [...]
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 [...]
I really love allofmp3.com. It’s really everything a music download service should be: the site is nicely designed, works perfectly, and allows you to [...]
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: brazos superglue bodh [...]
When a job listing says it requires knowledge of web standards, don’t bother applying if you haven’t changed your markup since 1998. From the web page [...]
The Microsoft way Windows 2003 Server, Enterprise Edition: $3,999 Visual Studio.NET, Enterprise Edition: $2,499 per developer SQL Server, Enterprise E [...]
For three 3 eggs 2 cups flour 3/4 teaspoon baking powder 3/4 teaspoon salt 2 tablespoons sugar 1 - 1 1/2 cup milk 3 tablespoons melted butter For four [...]
Sam Newman just posted a comparison of Django and Rails which is extremely balanced and fair, and a very good read. I’ve obviously got a few bits of f [...]