The Harmful Consequences of Postel’s Maxim
Code: ,
Comments Off on The Harmful Consequences of Postel’s Maxim

Be liberal in what you accept, and conservative in what you send.
Postel’s Maxim, RFC 1122

There’s a short draft called The Harmful Consequences of Postel’s Maxim that reads:

Continue this post

Against Tedium
Comments Off on Against Tedium

As a web dev, I often feel like a ridiculous percentage of my day is spent converting between FooBar and foo_bar in the Ruby server code, foo-bar in the CSS class, fooBar in the JavaScript, and Foo Bar in the documentation. There’s so damn much repetitive plumbing.

Continue this post

Economics Doesn’t Believe in Magic
Games: , , , ,
Comments Off on Economics Doesn’t Believe in Magic

On a writing forum an author asked for users to think of what societies would do with the magic system he designed. Here’s a short rewrite of his setup:

Continue this post

Sizing Up My Queue
Code: , , ,
Comments Off on Sizing Up My Queue

I have a folder named “queue” that I download podcasts, videos, and books to. It occurred to me that it hasn’t been empty for years. That’s OK, the world is a very interesting place, and I care that I produce things, not just consume them.

But I wondered how big the queue is. Not in terms of disk space, that doesn’t tell me much because the different encoding rates and formats result in very different file sizes. (The disk space command is df -h, if you need it.) In terms of time.

Continue this post

Y Combinator News
Biz: , ,
Comments Off on Y Combinator News

A few weeks ago my RailsConf talk on writing better web apps when they outgrow MVC was posted to Y Combinator News. It hung out on the front page all day, spending some time at the #2 slot. Over 35,000 people visited the page and 3,700 watched the talk video, which thrills me.

But I’m not posting to brag about traffic, I’m posting to explain the quirk in the previous paragraph.

Continue this post

Acceptable Errors
Biz: , , , ,
Comments Off on Acceptable Errors

I really liked Adrian Holovaty’s suggestion that Chicago stop trying to be the Bay Area and focus on bootstrapping. Chicago will always be an also-ran as long as it’s running someone else’s race.

Continue this post

Will knowledge change a decision you make?
Life: ,
Comments Off on Will knowledge change a decision you make?

This is one of my favorite decision-making heuristics: Will knowledge change a decision you make?

Continue this post

Installing You Need a Budget 4 (YNAB) on Arch Linux
Code: , , ,
Comments Off on Installing You Need a Budget 4 (YNAB) on Arch Linux

We only want to advertise YNAB for platforms that we can enthusiastically proclaim, “This will work great for you! We promise! If it doesn’t, we’ll work until it does.” The fact is, we can’t do that for Linux anymore.
YNAB & Linux, 2011

Life events have me experimenting with You Need a Budget, software for planning and tracking budgets. I like that it has an opinionated plan that balances prudent buffers and real-world complexity. Unfortunately YNAB 4 was built on Adobe AIR, which no longer runs on Linux.

Continue this post

What Comes After MVC
Code: ,
Comments Off on What Comes After MVC

Rails apps start out quickly and beautifully, but after a year features are a struggle, tests are slow, developers are grinding, and stakeholders are unhappy. “Skinny controllers and fat models” hasn’t worked, and “use service objects!” is awfully vague.

This talk explains how to compact the “big ball of mud” at the heart of your app into a bedrock of reliable code. It gives the steps to incrementally refactor models into a functional core and gives explicit rules for how to write light, reliable tests.

Continue this post

The Two Kinds of Integers
Code: , , , ,
Comments Off on The Two Kinds of Integers

A small thing I see tripping up developers is that there are two kinds of integers: numbers and identifiers.

We don’t know what the integer 4 means unless we know what it’s for. Are we counting things, or identifying them? It’s really easy to slip between the two, like this real code snippet I found:

Continue this post