rssed

a collection of dev rss feeds - blogroll

Add a new feed

+

176 feeds


jacobian.org

Posts

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 [...]

Thinking About Risk: Sidebar #2: The Swiss Cheese Model 🔗

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 [...]

Thinking About Risk: Sidebar #1: "Exposure" 🔗

Risk is usually defined as the product of two factors: Likelihood and Impact. However, some disciplines include a third factor: Exposure. What’s that [...]

Thinking About Risk: Mitigation 🔗

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 [...]

Thinking About Risk: An introduction to thinking about risk 🔗

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 [...]

Free digital security checkups for people/organizations concerned about the incoming US government 🔗

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 [...]

Why you should run for the DSF Board, and my goals for the DSF in 2025 🔗

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 [...]

If we had $1,000,000… 🔗

What would the Django Software Foundation look like if we had 4x our current budget? [...]

Ethical Applications of AI to Public Sector Problems 🔗

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 [...]

All I Need to Know About Engineering Leadership I Learned From Leave No Trace 🔗

Sumana challenged me to apply the principles of Leave No Trace to engineering leadership, so here we go. [...]

Paying More for Media 🔗

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. [...]

Why I'm Not Writing a Productivity Series 🔗

I planned and started to write a series about personal productivity systems, but I’m abandoning the series. Here’s why. [...]

Mentorship, coaching, sponsorship: three different — and equally important — tools for developing talent 🔗

One of the main responsibilities of a leader/manager is helping their staff develop. Mentorship, coaching, and sponsorship are import tools in the sta [...]

Discussing Open Source funding and sustainability on the Sustain podcast 🔗

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 [...]

Talking about Django's history and future on Django Chat 🔗

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 [...]

So you've been reorg'd... 🔗

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 [...]

Estimating Software Projects: Breaking Down Tasks 🔗

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 [...]

Paying people to work on open source is good actually 🔗

If you have a problem with maintainers getting paid then you have a problem with me and I suggest you let that one marinate. [...]

Tracking Engineering Time 🔗

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 [...]

Philanthropy Update 🔗

Lessons learned and updates from a couple of years of executing on my philanthropic plan: finding and tracking organizations, continuing to wrestle wi [...]

My Diverse Hiring Playbook 🔗

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 [...]

Managing Technical Debt 🔗

My playbook for managing technical debt. [...]

Making Decisions: First decide how to decide: “one weird trick” for easier decisions 🔗

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 [...]

Making Decisions: RFC processes are a poor fit for most organizations 🔗

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 [...]

Professionalism: No Yelling 🔗

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 [...]

Performance Is Contextual 🔗

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 [...]

Does someone need to be a good manager to give good management advice? 🔗

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?” [...]

How to Build Trust 🔗

What are the major management behaviors that can help build trust? Management books often cover the importance of trust, but abstractly. There’s preci [...]

Seniority and self-management: you don't have to do this alone 🔗

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 [...]

RTO vs WFH: my default recommendations for remote vs colocated teams 🔗

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 [...]

Team size isn't a measure of success 🔗

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 [...]

Mailbag: Should you give candidates feedback on their interview performance? 🔗

Should you give unsuccessful job candidates feedback on what they did or didn’t get right? [...]

Do I need a consultant, contractor or employee? 🔗

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 [...]

Hire for Floors, not Ceilings 🔗

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: [...]

Giving It All Away: My Philanthropic Plan 🔗

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 [...]

Follow-ups to "Incompetent but Nice" 🔗

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 [...]

Incompetent but Nice 🔗

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? [...]

Professionalism: You should maintain a transition file 🔗

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 [...]

Performance "Seasons" Are Useless — Use Anniversary Reviews Instead 🔗

Stop doing performance reviews based on the calendar year. Instead, schedule performance reviews around each person’s individual calendar — a year aft [...]

The Intersection of Tenure and Seniority 🔗

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. [...]

When Is Short Tenure a Red Flag? 🔗

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 [...]

Writing With Copilot 🔗

On using Copilot as a writing assistant, and my complex feelings about the ethics of doing so. [...]

Is this a parable about software development? 🔗

You tell me. [...]

Role Title Terminology 🔗

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 [...]

Post-interview recommendations: a case against 'maybe' 🔗

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 [...]

Quality Is Systemic 🔗

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 [...]

Taking notes in interviews 🔗

Techniques for effective note-taking during interviews. [...]

Panel interviews don't work 🔗

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 [...]

Checking References: What to do if a reference check goes wrong 🔗

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 [...]

Checking References: How to Check References 🔗

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 [...]

Checking References: Yes, You Should Check References 🔗

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. [...]

DORA Metrics: the Right Answer to measuring engineering team performance 🔗

“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. [...]

Making a Compelling Offer — in this economy? 🔗

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 [...]

Mailbag: Dealing With Misalignment While Hiring 🔗

Answering a question from a reader: how do you deal with misalignment – arguments about skills, pay, etc. – when hiring? [...]

Professionalism: Honesty is a professional behavior 🔗

Dishonesty at work is wrong except when it isn’t. [...]

Professionalism: What is “professionalism” and why am I writing about it? 🔗

I’m starting a new series on professionalism: the set of workplace behaviors that are generally expected at work. These behaviors are largely unspoken [...]

Is my advice too mercenary? 🔗

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 [...]

Your last one-on-one: what to do instead of an exit interview 🔗

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’ [...]

Exit Interviews Are a Trap 🔗

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 🔗

I was on The Changelog, talking about work sample tests and hiring in general. Listen wherever you get your podcasts, or right here. [...]

That Wild Ask A Manager Story 🔗

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 [...]

Developing a Values Interview Question 🔗

How do you develop an interview question that measures a core value? [...]

Book Review: Powerful (Patty McCord) 🔗

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) [...]

Year in Review: 2021 🔗

A round up of my writing in 2021: what were my goals? How’d I do? And some statistics. [...]

Work Sample Tests: Wrap Up and Q&A 🔗

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 [...]

Work Sample Tests: What doesn't work (and why) 🔗

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 [...]

Work Sample Tests: Labs & Simulation Environments 🔗

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: [...]

Volunteer Responsibility Amnesty Day 🔗

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 [...]

Work Sample Tests: ‘Reverse’ Code Review 🔗

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 [...]

Work Sample Tests: Bring Your Own Code 🔗

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 [...]

Work Sample Tests: Pair Programming 🔗

I tend to prefer asynchronous work sample tests. The flexible scheduling of asynchronous exercises (i.e. “work on this whenever you like”) works bette [...]

Work Sample Tests: Coding “Homework” 🔗

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 [...]

Work Sample Tests: A Framework for Good Work Sample Tests: Eight Rules for Fair Tests 🔗

What makes a work sample test “good” – fair, inclusive, and with high predictive value? Here’s my framework: eight principles that, if followed, give [...]

Work Sample Tests: The tradeoff between inclusivity and predictive value 🔗

Good hiring processes try to maximize inclusivity and predictive value, but unfortunately, work sample tests bring these goals into conflict. There’s [...]

Work Sample Tests: Introduction to Work Sample Tests 🔗

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, [...]

When you're a manager, your behavior is under a microscope 🔗

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 [...]

Dear Potheads, You Can Work for the U.S. Government, Maybe 🔗

If you’ve used marijuana, can you still get hired by the Federal Government? Yes, but it’s complicated. I’ll try to explain… [...]

Simple Product Management Tricks 🔗

Three simple tricks product I’ve picked up that help me be more than completely useless when I need to wear a Product hat. [...]

What is your labor worth? Tech compensation in 2021 🔗

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 [...]

Delegation: How to Delegate Meeting Attendance 🔗

Wrapping up my series on delegation with an example: how to delegate meeting attendance. [...]

Delegation: Briefing a Delegate 🔗

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. [...]

People- vs Results-Oriented Management: Both Work! 🔗

Broadly speaking, there are two management styles: people-oriented and results-oriented management. Taken to extremes both styles have failure modes, [...]

Delegation: Delegate Outcomes, Not Methods 🔗

To make delegation most effective, tell people the results you want, but let them decide on how to achieve those results. [...]

Delegation: Make Failure A (Safe) Option 🔗

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 [...]

Delegation: “Give Away Your Toys” 🔗

My foundational principle of delegation: “give away your toys”. Look to delegate the work you love, not the stuff you dislike or dread. [...]

Delegation: What's delegation? 🔗

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 [...]

Probably Are Gonna Need It: Application Security Edition 🔗

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 [...]

Book Review: Team Topologies 🔗

Team Topologies (Matthew Skelton and Manuel Pais, 2019) is, essentially, a book-length treatment of the Inverse Conway Maneuver. I recommend this book [...]

The VPP/VPE Relationship 🔗

For an organization to succeed – to reliably and consistently deliver great products that customers want – Product and Engineering need to work well i [...]

Estimating Software Projects: So you messed up. Now what? 🔗

You’ve made and committed to a timeline, but your estimate was wrong. The timeline’s going to slip. Now what? [...]

Estimating Software Projects: The art of the SWAG 🔗

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 [...]

Estimating Software Projects: My Software Estimation Technique 🔗

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 [...]

Estimating Software Projects: Software Estimation Is Hard. Do It Anyway. 🔗

It’s well established that estimating software projects is hard. This is true, but you should learn how anyway. [...]

2021 DBIR Highlights 🔗

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 [...]

Positive feedback is different from praise 🔗

Managers need to understand the difference between praise and positive feedback. Feedback is one of the most important tools in your management toolbo [...]

The Mass Email Mistake 🔗

Addressing behavior through mass emails or new policy rollout is a mistake. Here’s why. [...]

Three Feedback Models 🔗

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 [...]

The Fundamental Purpose of Middle Management: Context Down, Information Up 🔗

On the fundamental purpose of middle management: context down, information up. [...]

Are You Stuck On Vision, Strategy, or Tactics? 🔗

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 [...]

Embrace the Grind 🔗

Sometimes, programming feels like magic: you chant some arcane incantation and a fleet of robots do your bidding. But sometimes, magic is mundane. If [...]

Mailbag: Adapting Interview Questions for Junior Candidates 🔗

Sébastien asks: “Would you say that your questions are equally applicable to junior and senior positions?” [...]

“Fair” Doesn't Mean “Equal” 🔗

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 [...]

How managers should respond to defensiveness after feedback 🔗

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 [...]

The Three Kinds of Organizational Power 🔗

Within an organization, there are three kinds of power structures: role power, relationships, and expertise. Understanding these kinds of power — how [...]

How Long Does It Take to Hire Someone? 🔗

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 [...]

Coworking With a Friend to Write More 🔗

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 [...]

“Why Did You Leave Your Last Job?” 🔗

Asking candidates why they left their last job is common… but should it be? I’m not sure. What do you think? [...]

How to Give a Status Update To Executives 🔗

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 [...]

Unpacking Interview Questions: Types of Interview Questions 🔗

There are three types of interview questions: behavioral, hypothetical, and trivia. Behavioral questions are the gold standard; they’re the most effec [...]

Effective Organizations Value Autonomy 🔗

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 [...]

Unpacking Interview Questions: Interview Question Series Wrap Up 🔗

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 [...]

Unpacking Interview Questions: The Weakness Question 🔗

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 [...]

Unpacking Interview Questions: “Tell Me About a Disagreement…” 🔗

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- [...]

Unpacking Interview Questions: Diversity, Equity, and Inclusion 🔗

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 [...]

Unpacking Interview Questions: “Tell Me About a Project You Led…” 🔗

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 [...]

Unpacking Interview Questions: “Explain a Topic At Multiple Levels…” 🔗

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 [...]

SOCCR: the framework I use for decision briefs 🔗

In my previous article, I wrote about gathering consensus before a decision. Several folks asked for more detail about how I structure those consensus [...]

How to gather consensus before a big decision 🔗

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 [...]

Hangar's Dumb Security Questionnaire 🔗

WHen I worked for Hangar, I developed our own Dumb Security Questionnaire (the questions we ask vendors to evaluate their security maturity). All DSQs [...]

Why I'm excited to get a COVID vaccine 🔗

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 [...]

Articles for r2c: Bringing Security along on the CI/CD journey 🔗

Practical ways to bridge the gap between AppSec and Engineering. [...]

Designing Engineering Organizations 🔗

How should you structure a larger engineering organization, one with dozens (or hundreds) of engineers? There are many tradeoffs to consider, and no s [...]

AI is catching up to the hype 🔗

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 [...]

Measuring Hiring Manager Effectiveness 🔗

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 [...]

Articles for r2c: Not all attacks are equal: understanding and preventing DoS in web applications 🔗

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 [...]

Training Interviewers 🔗

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 [...]

Articles for r2c: Preventing SQL Injection in Django 🔗

SQL Injection (SQLi) is one of the most dangerous classes of web vulnerabilities. Thankfully, it’s becoming increasingly rare — thanks mostly to incre [...]

What accomplishments sound like on software engineering resumes 🔗

Effective resumes need to contain two things: responsibilities and accomplishments. The first tells the read what your job was; the second, what your [...]

Layoffs are Coming 🔗

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 [...]

Django's new governance model 🔗

Starting today, Django has a new governance model. Previously, a small “core team” made most decisions, including electing a Technical Board to own de [...]

The Innovation/Execution Spectrum 🔗

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 [...]

"Where did we get lucky?" 🔗

Retrospectives are probably the most important software development practice. They build a culture of continuous improvement. We may fail, but we’ll l [...]

Demos, Prototypes, and MVPs 🔗

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 [...]

📣 Now on Google Cloud Run 🔗

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 [...]

My Python Development Environment: My Python Development Environment, 2020 Edition 🔗

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 [...]

My questions for prospective employers (Director/VP roles) 🔗

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 [...]

IQ isn't enough to get hired 🔗

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 [...]

Goals aren't enough; you have to talk about performance, too 🔗

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 [...]

My interview kickoff script, annotated 🔗

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 [...]

Hire me to help you hire 🔗

Do you have a growing engineering organization that needs help hiring effectively? I can help! I have consulting availability over the next few months [...]

A bit of smart security design from Tiller 🔗

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 [...]

2018 life update 🔗

“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 [...]

A reading list for new engineering managers 🔗

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 [...]

The Moment 🔗

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 [...]

My Python Development Environment: My Python Development Environment, 2018 Edition 🔗

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 [...]

You have two jobs 🔗

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 [...]

Five stories about the California Wildfires you probably missed 🔗

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 [...]

Don't include social engineering in penetration tests 🔗

I’m not a fan of including social engineering – spearphishing, calls to support tickets, office visits – as part of penetration tests. These activitie [...]

Getting started with pytest 🔗

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) [...]

Django Under the Hood 2016 Highlights 🔗

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 [...]

So you want a new admin? 🔗

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 [...]

Ratchets & Levers 🔗

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. [...]

2016 DBIR Highlights 🔗

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 [...]

A reading list for InfoSec engineers 🔗

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 [...]

Psychological safety in the InfoSec industry 🔗

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 [...]

How do you run distributed standups? 🔗

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 [...]

Shanley and my PyCon talk 🔗

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 [...]

Uber and the Fourth Estate 🔗

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 [...]

Python Programmers Support the Ada Initiative 🔗

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 [...]

Re: What Can Men Do? 🔗

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 [...]

The limits of "unlimited" vacation 🔗

Obligatory Disclaimer: this post discusses unlimited vacation policies. My employer (Heroku) has one such policy. However, this post isn’t really spec [...]

Retiring as BDFLs 🔗

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 [...]

Bagels 🔗

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 [...]

To my friends in the Node community 🔗

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 [...]

On TRUCEConf 🔗

Yesterday brought news of TRUCEConf. It’s a terrible, dangerous and insulting idea. The organizers should reconsider, either canceling the event or ch [...]

Personal lessons from XOXO 🔗

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 [...]

Join me in supporting the Ada Initiative 🔗

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 features into Django 🔗

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 🔗

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 [...]

Auto-building Sphinx docs 🔗

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 [...]

Measuring the Django Community: The Django community in 2012 🔗

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 [...]

DIY supplies 🔗

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 [...]

Why conferences need a code of conduct 🔗

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 on PyPI 🔗

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 [...]

Is there a market for paid Django apps? 🔗

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 [...]

A REST wankery question 🔗

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 [...]

I refuse to tolerate assholes 🔗

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 [...]

Work for 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 [...]

Help desk software? 🔗

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 [...]

Configuration and architecture 🔗

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 [...]

CI is hard! 🔗

Buildbot, the venerable Python continuous integration server, has the reputation of being complex and difficult to set up. After spending a couple of [...]

Office hours 🔗

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 [...]

Django classes: deployment, ecosystem 🔗

(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 [...]

How to roast a chicken 🔗

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 [...]

Django gotcha: concrete inheritance 🔗

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 [...]

What's your favorite Django app? 🔗

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 [...]

"Web Scale" 🔗

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 on programming languages 🔗

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 🔗

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 on Tribalism 🔗

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 [...]

GvR on commit privileges 🔗

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 [...]

What to do when PyPI goes down 🔗

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 🔗

Backwards compatibility is pain sometimes: # We need backwards compatibility with code which spells it this way: # def my_view(): pass # my_view = cac [...]

util 🔗

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 [...]

Dynamic form generation 🔗

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 for my Advanced Django class ends soon 🔗

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 [...]

To hell with web standards 🔗

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 [...]

Fixing PostgreSQL's default encoding on Ubuntu 9.10 🔗

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 [...]

Writing Great Documentation: You need an editor 🔗

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 [...]

Writing Great Documentation: Technical style 🔗

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 [...]

Writing Great Documentation: What to write 🔗

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 [...]

My travel kit 🔗

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 [...]

Measuring the Django Community: The Django community in 2009 🔗

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 [...]

Thank you, Rails 🔗

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 [...]

On commit bits 🔗

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 [...]

Lessons from Rackspace's downtime 🔗

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" 🔗

The power of “no” Last week, I wrote on Twitter: Closed-source software gets worse with each release (Microsoft, Adobe, …). Open-source software gets [...]

SEO scumbags 🔗

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 [...]

QFT 🔗

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 [...]

Job opportunity: engineer at Whiskey Media 🔗

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 [...]

* is Unix 🔗

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 [...]

Python is Unix 🔗

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 [...]

Django Master Class, October 16 🔗

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 [...]

Contributor License Agreements 🔗

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 [...]

Snakes on the Web 🔗

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 [...]

Reminder: Django Training 🔗

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 [...]

Django Training 🔗

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 [...]

Twenty questions about the GPL 🔗

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 internals: authentication 🔗

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 [...]

Professionalism 🔗

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 [...]

SVN usability 🔗

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 [...]

Looking for a Django developer? 🔗

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 [...]

More buildout notes 🔗

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 Django apps with zc.buildout 🔗

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 [...]

Nobody expects Python packaging! 🔗

Python has one package distribution system: source files and setup.py install. And easy_install. Python has two package distribution systems: setup.py [...]

Hooray for standards 🔗

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 [...]

Python implementation details 🔗

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 time for a change 🔗

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 [...]

FAQ: Untrusted users and HTML 🔗

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 [...]

The taste of shame and humiliation 🔗

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 [...]

Why I'm excited about Python 3 🔗

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 [...]

Descriptivists and Prescriptivists 🔗

In the world of grammarians there are two competing camps: descriptivists and prescriptivists. Edward Finegan of the University of Southern California [...]

What is django.contrib? 🔗

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 [...]

&quot;Syntactic Sugar&quot; 🔗

It frustrates me when I hear people dismiss the differences between computer languages. There really isn’t any difference between languages, the argum [...]

Typography: Rhythm &amp; Proportion 🔗

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 [...]

Minimalism 🔗

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 [...]

REST worst practices 🔗

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 Braindump 🔗

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 [...]

Help OSI 🔗

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 [...]

Sailing on… 🔗

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 [...]

A picture is worth a thousand words 🔗

Paul Graham: Arc only supports Ascii. MzScheme, which the current version of Arc compiles to, has some more advanced plan for dealing with characters. [...]

Shameless self-promotion 🔗

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 [...]

Django Book Update 🔗

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 [...]

Of the Web 🔗

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 [...]

CouchDB first impressions 🔗

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 [...]

The sorry state of database journalism 🔗

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 &quot;personal security&quot; plan 🔗

My personal security plan Prompted by recent reading on cryptography and computer security, I’ve been rethinking my pretty lax personal security plan. [...]

Seasoning Templates 🔗

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 [...]

Die, Marker Felt, Die! 🔗

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 🔗

Dear Adobe – Acrobat sucks gigantic mountain-goat testicles. Everything about it from the installer to the interface to its performance seems designed [...]

Some guesses about the future 🔗

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 [...]

Django projects 🔗

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 [...]

Django Internships at the Journal-World 🔗

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- [...]

Measuring the Django Community: Circles of Django (2007) 🔗

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 [...]

You vs. the Real World 🔗

“Be liberal in what you accept.” dummy_thread » entry.bozo » req.assbackwards » UnicodeDammit » x possibly equals y » [...]

Jimbo's Number 🔗

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 [...]

Ripped by Engadget 🔗

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 [...]

Five things I hate about Python 🔗

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 🔗

Overheard at PyCon: James Tauber: “Reinventing the wheel is great if you’re trying to learn more about wheels.” Adrian Holovaty: “Having Python produc [...]

I don't care whose is bigger 🔗

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 [...]

Fried Chicken 🔗

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 [...]

How the news breaks 🔗

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 🔗

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 [...]

Pronouncement 🔗

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 🔗

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 [...]

&quot;Show-stoppers&quot; 🔗

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 [...]

Digg dugg 🔗

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 [...]

Bad dog! 🔗

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 [...]

Improved text image view 🔗

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 [...]

Django OSCON shirts 🔗

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 [...]

Django propaganda 🔗

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 [...]

A complete waste of time 🔗

Inspired by Online News Squared, and with my sincerest apologies to Adrian, I give you chicagomime.user.js (requires Firefox and Greasemonkey). [...]

Django meetup in Palo Alto 🔗

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 [...]

Merquery 🔗

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 [...]

Quiet Enjoyment 🔗

I just found this reading through the Amazon Web Services license: EXCEPT TO THE EXTENT PROHIBITED BY APPLICABLE LAW, AMAZON DISCLAIMS ALL WARRANTIES, [...]

Free server? Probably not 🔗

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 [...]

Free servers? 🔗

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 [...]

Django stuff at Pycon 🔗

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 [...]

WWBD 🔗

What Would Bill Do? Bill would increase debt by $851 billion Bill would require universities to disclose deals between professors, businesses Bill wou [...]

Template + Cache = Crazy Delicious 🔗

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 [...]

Why you should use Django 🔗

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. [...]

Strike averted 🔗

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 [...]

Done 🔗

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- [...]

Dojo gets a manual 🔗

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 [...]

Django, meet Dojo 🔗

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… 🔗

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 performance tips 🔗

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 [...]

Hiring, part II 🔗

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 [...]

We're hiring! 🔗

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 [...]

Lightpd on Ubuntu 🔗

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 [...]

What can Django learn from Rails? 🔗

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 [...]

allofmp3.com RSS feed 🔗

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 [...]

Private Dancer? 🔗

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 [...]

A note to web designers 🔗

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 [...]

A quick comparison 🔗

The Microsoft way Windows 2003 Server, Enterprise Edition: $3,999 Visual Studio.NET, Enterprise Edition: $2,499 per developer SQL Server, Enterprise E [...]

Sera's Pancakes 🔗

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 [...]

Django and Rails 🔗

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 [...]

Reboot 🔗

Well, now. I hear that there’s this thing all the cool kids are doing. Something about a web stick, or a web tree or something… Web Log, that’s it. (H [...]