Archive

2018

NixOS on prgmr and Failing to Learn Nix

House Rules

2017

Return Statement

Voicemail

Lobsters

Attending Recurse Center

MiscPodcast

Arithmetic Wrap in GMS2

Redshift With Cloudiness Adjustment

2016

Hard Lessons

When maintaining a legacy Rails apps, drink every time…

Queue Zero

Vim: highlight word wrap column in insert mode

Should multiple Rails Apps and APIs share a database?

How side effects make ActiveRecord models unreliable

Recursive Sum

2015

The Plan

Advice for First-Time Attendees to MicroConf

Peter Bhat Harkins

Battery Longevity

ActiveRecord Dangers Cheatsheet

Have You Seen This Cache?

Replacing Ack with Ag

POP3 and SMTP via SSH Tunnels

Chicago Code and Coffee

Finished Libraries

Deleting Spam From sup Maildirs

The Harmful Consequences of Postel’s Maxim

Skyscrapers and Doghouses

Against Tedium

Economics Doesn’t Believe in Magic

Sizing Up My Queue

Y Combinator News

Acceptable Errors

Will knowledge change a decision you make?

Installing You Need a Budget 4 (YNAB) on Arch Linux

An ActiveRecord Adapter

What Comes After MVC

The Two Kinds of Integers

Create localhost Aliases for Different Projects

Case Sensitivity in In-Page Anchors

Hiring Apprentices

Dual-Booting Arch Linux on Lenovo X1 Carbon 3rd gen

Isolating Polymorphism

2014

Type-Checking Interface in Ruby

Prefer: Censorship

Integration as Composition

Long-Term Travel Gear List2

Builder Methods

Two Designs for SequenceIdGenerator

Distributed ID Generation and Bit Packing

Ironwood, a Roguelike Game in 7 Days

2013

Extracting Immutable Objects

CTF Liveblog

Random The Flag

Personal Workflow

The Well-Sorted Version

Inheriting From Built-In Ruby Types

Social Media for Programmers

Backpack Criteria

Why I Rarely Use HABTM

2012

Solving vs. Fixing vs. Introspecting

FTL: Simulationism Lost

Open and Closed Platforms

Legacy Bitmask Puzzle

2011

Timing

Breakdowns

Keeping Jim Busy

Rewriting My Competitors

Two Turnarounds

Recreating My Firefox Profile

Small Steps

Craftsmanship Tour: New York Times

Now Featuring Monsters

SPWA Week 2: Funding and Forms

SPWA Week 1 Response: Code Hassles and Kittens

SPWA Week 0 Response: A Strong Start

So Play We All

Software Craftsmanship Tour: Aidan Rogers

Grind Without Progression in Die2Nite

Retracting my JungleDisk Recommendation

Dropbox and Git Play Well Together

Craftsmanship Tour: Jim Ray

Craftsmanship Tour: David W. Allen

2010

XML Crash Course

Craftsmanship Tour: 8th Light

Craftsmanship Tour: Obtiva

Social Pastimes

The Dog That Didn’t Bark

Book Licenses

Spreadsheet Errors

Twitter

Investing in Cloud Computing

Travels of Indefinite Duration

Reading 400 Feeds with Newsbeuter

Globalton

Interview Questions

Sample Camera Pictures

From Fixtures to Factories

Camera Card

This is Not A Productivity Post

Freemium and Segmentation

PHP Hex Map Graphics

Tracking Finances Though Benign Neglect

Yomi vs. Nash Equilibria

Hackers and Gamers

Domain Registration Survey

One Fine Git Book: Pro Git

Admitting Diminishing Returns

Finish a Project

Efficiency Replaces Autonomy

Competition and Bluffing

Game Influences (7/6): Warstorm

2009

HTML is Your Markup Language Anyways

Inbox Zero

Survey of Conference Attendees

Serenity Green

Redirecting Users’ URLs

JavaScript: The Good Parts

Investigating Theme Spam

Athenge Ops Playtested

Developer Day Notes

Client Logging to AWS

City of Heroes as a Pastime

Karma, Farming and Play Styles

Feedback and WeeWar’s Game Design

Technology Trees

Game Influences (6/6): Kongai

Game Influences (5/6): X-Com

Game Influences (4/6): Counter-Strike

Game Influences (3/6): Tactics Ogre

The Farming Genre

Game Influences (2/6): WeeWar

Game Influence (1/6): Ikariam

As Difficult as Possible

The Game Industry

Intention and Design

ListLibrary.net UI Design

A Spine of Trust

Announcing ListLibrary.net

Command/Query Separation

Worthy of Praise

Done at the Post

Markoff’s Gated Community Should Die in a Fire

Web Game

NearbyGamers To-Do List

Small Plans

Giving Notice

Linearization of the Playing Field

OpenOffice.org Losing Viability

Inauguration

Open Source Communities

Django vs Rails: The Dead-Tree Edition

Two Interactions With Amazon

Rules of Database App Aging

Rails Forum Roundup

Washington Post Update

Why I Write Tests

Twitter and Ruby’s Open Classes

Developers Need IRC

You’re Not Refactoring

2008

Authenticity

Greasemonkey Scripts: Gamasutra and Arlington Library

Deploying Crontab With Your Rails App

Now Do You Know It Works?

RailsRumble Postmortem

RailsRumbling

Don’t Play Hurt

256-Color XTerms in Ubuntu

14 Years to Unicode

Rails URL Params as Types

Moving is Rewriting

WWW Will Never Die

Harkins’s Law of Enterprise Software

Getting Git

Picking a Username

Finding Value in Bogosity

Free Shipping From Amazon Merchants

Improvement and the Hawthorne Effect

StackOverflow Sounds Pragmatically Postmodern

Turning Wordpress Categories Into Tags

Functional Package Management

Finally, Sweet Success

Pipe Viewer

Caching Dictionaries in Python vs. Ruby

2007

Django Template Tag for Dictionary Access

My Four-Year Patch

Painless Upgrade to Rails 2.0

Drifting Into Test-Driven Development

Choose Your Candidate

An Academic Inconvenience of Python

Because Internet Explorer is a Failure, That’s Why

Keep Ruby Gems in Your Home Directory

How To De-Asshole-ify Links

Post: Politics and Blogs

Post: The Moby Quotient

These Elves are People

Oh Noes!

Post: Politics Glossary

WashingtonPost.com

Simple Ruby Mocking

Fixtures in Ruby Unit Tests

Adequacy is Inadequate

Google Zombies

Good Timing

Flash Gaming

Alphabetical Sorting SQL Without “The”

Logging Internal Server Errors

Discussion URLs: Opaque, Usable, and Readable

Human-Readable ActiveResource URLs

Rails: Semicolons Out, Slashes In

One Laptop Per Chicago

Add Feed Discovery Links Easily

Colorizing Rails Test Output

Epson Perfection V100 in Ubuntu

Rails 1.2.1 Impression

Seeing Subversion Diffs for Commit Messages

Capistrano Task to Load Production Data

Sociable 2.0 Released

Sociable 2.0 Tomorrow

Which Vista Version?

Sociable 2.0 Beta 2

Announcing NearbyGamers

GET and POST variable hashes in Ruby on Rails

2006

Making Valid XHTML Easier

Dual-Head on the 13” Macbook

Tidy Stylesheets in Rails

Freshwater Live and TechCoffee

344 Books Must Go

Clean Up Your Mess

ChiPy at Google

Triple-boot Filesystem Layout

Bar Camp Chicago

Flintstoning Toasters

Leaving Hostway

Programming Is Like Sex

Cambrian House Party

Building Clean URLs Into a Site

Rails Day 2006

Ripping Unicode

Developing With Evil

Ripping Unicode at ChiPy

Building a Site With Clean URLs

Cambrian Development

Pre-Cambrian House

It’s, Like, Symbolic

Playing With Fire

Strings are a Domain-Specific Language

Django And The Disappearing Template Tags

Know a Good Linux Feed Reader?

Sociable Makes Blogs Happy

What a Blog Post is Missing

Newsflash: You’re Not Good Enough

NDAs: Fear and Shame

Writing and Formatting

Ruby Blocks and Blocks

Sociable Is The New Black

Lambda at Work

GoJobby Launches - Web 2.0 Job Site

Sociable 1.2

Sociable 1.1

Specificity

Think Outside the Euclidean Universe

Python Flyweights

Sociable 1.0

XmlHttpThrottleRequest

The Best Filler Ever Written

Equality for Python

Django Gets Transactions

Versioning: The Next Big Thing

Defeating Hardware Keyloggers

Compressing Sudoku

Push cx