Reflections on building software for, and with, people.

Impossible Programs

Here is a fascinating talk—from Tom Stuart at last year’s Scottish Ruby Conference—on the subject of programs that are impossible to write in Ruby. Computers are logic machines, and Stuart takes us on a tour of many of the underlying problems with logic and how they manifest themselves in computer science, touching on things like undecideability, the halting problem, and Rice’s theorem.

Continue reading...

Hammock-Driven Development

Part of what drives us as programmers is a desire to solve problems. We get requirements, and our brains immediately begin formulating solutions, which we analyze and from which we pluck the best one to implement. At least, that’s how it’s supposed to work. Then, there are hard problems: problems which are difficult to understand, problems which don’t immediately suggest their solutions, and problems with no best solution but only tradeoffs.

Continue reading...

The Mature Optimization Handbook

From Facebook’s Carlos Bueno, The Mature Optimization Handbook is a short but valuable guide to the strategy behind performance optimization. Instead of tips for improving specfic technologies, the author addresses things like whether you should optimize at all, how to determine what to optimize, and how to validate whether your optimization had the desired effect.

Continue reading...

This Week I Learned #5

Regular expressions in PostgreSQL, a terser where() syntax for ActiveRecord associations, signed cookies in Rails, and some tips for writing great error messages.

Continue reading...

This Week I Learned #4

An assets gotcha to avoid when upgrading from Rails 3 to 4, keeping WordPress theme comments around with Sass, and an intro to one of my favorite new development tools: the virtualization-management tool Vagrant.

Continue reading...

This Week I Learned #3

A robots.txt gotcha, cleaning up asset output in Rails’ logs, reversing a specific git commit (in a way that’s itself reversible), displaying errors with ActiveAdmin, and—spoiler alert—the keyboard shortcut for “View Source” in Chrome on a Mac is Cmd + Opt + u

Continue reading...

Bulletproof Icon Fonts

In excellent detail, Filament Group enumerates the issues around using @font-face to serve up UI icons as a font. It’s a powerful technique to which I often turn, but it’s not without its caveats. Fortunately, the Filament folks have two best-practice techniques for using icon fonts, one for mission-critical icons and a simpler one for more decorative icons. Both techniques require javascript for feature detection, but it’s fairly simple and they’ve even packaged it up in a library cleverly named A Font Garde.

Continue reading...