Archive

2025

Rovyvon A5R flashlight diagram documentation graph graphviz study

TypeID in Lua Ansible Caddy Hatchbox Lobsters Lua TypeID nginx

Broken Poker humor poker

TV Setup TV Tailscale home networking privacy video games

2024

Google Ad Injection Google ad injection

Streaming Weekly Lobsters Office Hours Lobsters Twitch stream

Discord vs IRC Rough Notes Discord IRC Libera Chat Lobsters

Wrapping Large-Scale Refactors large codebases practices refactoring

2018

NixOS on prgmr and Failing to Learn Nix docs nix prgmr

House Rules board games card games tabletop games

2017

Return Statement New York City Recurse Center

Voicemail phones voicemail

Lobsters Lobsters community moderation

Attending Recurse Center New York City Recurse Center

MiscPodcast PHP podcast project

Arithmetic Wrap in GMS2 gamedev gms2

Redshift With Cloudiness Adjustment bash redshift

2016

Hard Lessons email handmade.network

When maintaining a legacy Rails apps, drink every time... Rails humor

Queue Zero media podcasts queue yak shave

Vim: highlight word wrap column in insert mode vim

Should multiple Rails Apps and APIs share a database? ActiveRecord Rails

How side effects make ActiveRecord models unreliable ActiveRecord Rails side effects

Recursive Sum Ruby recursion

2015

Advice for First-Time Attendees to MicroConf MicroConf

Peter Bhat Harkins names

Battery Longevity batteries systemd

ActiveRecord Dangers Cheatsheet ActiveRecord Rails

Have You Seen This Cache? C Python Ruby cache memcached referential transparency

Replacing Ack with Ag ack ag searching vim

POP3 and SMTP via SSH Tunnels email privacy ssh tunnel

Chicago Code and Coffee code and coffee meetups

Finished Libraries TeX version numbers

Deleting Spam From sup Maildirs email spam sup yak shave

The Harmful Consequences of Postel's Maxim Postel's Maxim standards

Skyscrapers and Doghouses ActiveRecord Rails

Against Tedium

Economics Doesn't Believe in Magic economics magic politics world design writing

Sizing Up My Queue Ruby media podcasts yak shave

Y Combinator News naming social news y combinator news

Acceptable Errors Chicago VC entrepreneurship science startups

Will knowledge change a decision you make? decision-making probability

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

An ActiveRecord Adapter ActiveRecord Rails side effects

What Comes After MVC RailsConf presentation

The Two Kinds of Integers Haskell Ruby abstractions assembly values

Create localhost Aliases for Different Projects DNS debugging domain names scar tissue yak shave

Case Sensitivity in In-Page Anchors HTML5 browsers fuck Internet Explorer yak shave

Hiring Apprentices

Dual-Booting Arch Linux on Lenovo X1 Carbon 3rd gen Arch Linux Lenovo Linux Windows Windows 8.1 X1 Carbon configuration hardware yak shave

Isolating Polymorphism Ruby encapsulation inheritance

2014

Type-Checking Interface in Ruby POODR Ruby boundaries experiment interfaces

Prefer: Censorship Firefox Mozilla censorship

Integration as Composition Chibrary composition design functional programming literate programming pointfree

Long-Term Travel Gear List2 gear

Builder Methods Ruby domain-driven design immutability testing validity

Two Designs for SequenceIdGenerator Chibrary Ruby design object orientation state

Distributed ID Generation and Bit Packing Chibrary bit packing bit twiddling concurrency design stemwinder

Ironwood, a Roguelike Game in 7 Days 7drl game design game development projects roguelikes

2013

Extracting Immutable Objects ListLibrary.net Ruby design design patterns email mailing lists object orientation

CTF Liveblog ctf

Random The Flag ctf game design randomness

Personal Workflow Trello procrastination productivity to-do yak shave

The Well-Sorted Version LaTeX Well-Sorted Version art books typesetting

Inheriting From Built-In Ruby Types ActiveRecord Ruby refactoring strings

Social Media for Programmers GitHub Hacker News Lobsters Reddit StackOverflow Twitter learning social media

Backpack Criteria backpack luggage travel

Why I Rarely Use HABTM Rails databases design lifecycle schemas

2012

Solving vs. Fixing vs. Introspecting bugs design introspection

FTL: Simulationism Lost FTL game design roguelikes

Open and Closed Platforms Ouya gaming iPhone smartphones

Legacy Bitmask Puzzle SQL legacy math puzzle

2011

Timing Allabrilyn Fantasy Adventure Game P so play we all

Breakdowns Allabrilyn Fantasy Adventure Game oaqn so play we all

Keeping Jim Busy Allabrilyn so play we all

Rewriting My Competitors Allabrilyn Fantasy Adventure Rails Ruby code smells metaprogramming sessions so play we all

Two Turnarounds Allabrilyn Fantasy Adventure Game so play we all

Recreating My Firefox Profile Firefox customization nerd pride yak shave

Small Steps Allabrilyn Fantasy Adventure

Craftsmanship Tour: New York Times New York Times craftsmanship tour idempotency journalism

Now Featuring Monsters Allabrilyn Fantasy Adventure Game MVC grue so play we all

SPWA Week 2: Funding and Forms PHP satisficing so play we all templating

SPWA Week 1 Response: Code Hassles and Kittens Allabrilyn Fantasy Adventure so play we all web games

SPWA Week 0 Response: A Strong Start Allabrilyn Fantasy Adenture Game oaqn so play we all web games

So Play We All browser games oaqn so play we all

Software Craftsmanship Tour: Aidan Rogers craftsmanship tour interfaces object orientation open question software development

Grind Without Progression in Die2Nite P collaboration experience game design grind prisoner's dilemma

Retracting my JungleDisk Recommendation JungleDisk backups tarsnap

Dropbox and Git Play Well Together Dropbox git how to version control

Craftsmanship Tour: Jim Ray Devise Rails craftsmanship tour git vim

Craftsmanship Tour: David W. Allen NearbyGamers craftsmanship tour graphs software craftsmanship

2010

XML Crash Course HTML Star Trek XML

Craftsmanship Tour: 8th Light 8th Light Clojure Groupon Java Limelight craftsmanship craftsmanship tour refactoring vim

Craftsmanship Tour: Obtiva Obtiva craftsmanship craftsmanship tour

Social Pastimes Facebook game industry social games

The Dog That Didn't Bark Sherlock Holmes TSA evidence rights security

Book Licenses law licensing

Spreadsheet Errors bugs spreadsheets

Twitter Twitter handle

Investing in Cloud Computing Amazon Microsoft Rackspace cloud computing investing

Travels of Indefinite Duration nomading travel

Reading 400 Feeds with Newsbeuter Linux feeds web

Globalton design patterns

Interview Questions

Sample Camera Pictures cameras photography

From Fixtures to Factories Mocha Rails Ruby factories factory_girl fixtures testing

Camera Card cameras

This is Not A Productivity Post productivity sleep

Freemium and Segmentation f2p freemium pricing virtual currency

PHP Hex Map Graphics PHP hex maps image generation web games

Tracking Finances Though Benign Neglect budgeting habit money personal finance spreadsheets

Yomi vs. Nash Equilibria David Sirlin game design math yomi

Hackers and Gamers

Domain Registration Survey

One Fine Git Book: Pro Git book review git svn version control

Admitting Diminishing Returns productivity

Finish a Project productivity projects todo

Efficiency Replaces Autonomy capitalism game design graphic design metrics

Competition and Bluffing competition game design game mechanic poker

Game Influences (7/6): Warstorm Athenge Warstorm business models game design game influences verbs web games

2009

HTML is Your Markup Language Anyways BBCode HTML markdown markup languages

Inbox Zero email inbox zero mutt sup to-do

Survey of Conference Attendees

Serenity Green Firefly TV humor

Redirecting Users' URLs URLs human-readable web

JavaScript: The Good Parts Douglas Crockford JavaScript book review

Investigating Theme Spam PHP WordPress decoding obfuscation reverse engineering spam

Athenge Ops Playtested Athenge game design playtesting

Developer Day Notes IRC

Client Logging to AWS AWS EC2 Elastic MapReduce Hadoop S3 logging

City of Heroes as a Pastime City of Heroes David Sirlin Mission Architect NCSoft elder game min-maxing muds player-generated content

Karma, Farming and Play Styles Athenge farming game design karma spreadsheet games

Feedback and WeeWar's Game Design DiceAttack WeeWar feedback game design

Technology Trees Athenge Ikariam PBBGs directed acyclic graph dot game design game influences gating graphviz power scale technology tree web games

Game Influences (6/6): Kongai Athenge Civilization David Sirlin Kongai StarCraft game design game influences turn-based strategy web games yomi

Game Influences (5/6): X-Com Athenge X-Com abandonware game design game influences turn-based strategy web games

Game Influences (4/6): Counter-Strike Athenge Counter-Strike FPS game design game influences web games

Game Influences (3/6): Tactics Ogre Athenge Final Fantasy Tactics Tactics Ogre game design game influences tactical RPGs web games

The Farming Genre Athenge PBBGs game influences web games

Game Influences (2/6): WeeWar Athenge PBBGs WeeWar game influences strategy games web games

Game Influence (1/6): Ikariam Athenge Ikariam PBBGs game influences strategy games web games

As Difficult as Possible abstraction difficulty management outsourcing

The Game Industry IGDA crunch time game industry quality of life

Intention and Design Athenge Counter-Strike World of Warcraft darkfall game design intention markets systems

ListLibrary.net UI Design ListLibrary.net graphic design mailing lists user interface

A Spine of Trust Athenge betrayal game design prisoner's dilemma trust

Announcing ListLibrary.net ListLibrary.net mailing lists mud-dev mud-dev2

Command/Query Separation ListLibrary.net command/query separation email referential transparency threading

Worthy of Praise IMVU Twitter blogging quality snark

Done at the Post Barking Stapler Washington Post

Markoff's Gated Community Should Die in a Fire Markoff flame net neutrality rant walled gardens

Web Game Athenge game design web games

NearbyGamers To-Do List NearbyGamers Rails aggregation events groups news performance monitoring stores to-do

Small Plans ListLibrary.net RailsRumble Ruby gems mailing lists web

Giving Notice Washington Post

Linearization of the Playing Field EC2 S3 cloud computing competition

OpenOffice.org Losing Viability Django OpenOffice.org Rails community open source

Inauguration

Open Source Communities Django Rails community open source

Django vs Rails: The Dead-Tree Edition Django Rails books

Two Interactions With Amazon Amazon Amazon Affiliates EC2 customer service

Rules of Database App Aging databases design lifecycle schemas

Rails Forum Roundup

Washington Post Update Django Washington Post politics work

Why I Write Tests bugs testing tests

Twitter and Ruby's Open Classes Habber Ruby Twitter metaprogramming open classes

Developers Need IRC IRC

You're Not Refactoring Extreme Programming TDD refactoring testing

2008

Authenticity Bonnie Tyler Total Eclipse of the Heart YouTube authenticity humor hurra torpedo music

Greasemonkey Scripts: Gamasutra and Arlington Library Arlington Library GamaSutra GreaseMonkey web

Deploying Crontab With Your Rails App Rails cron yak shave

Now Do You Know It Works? reliability testing verification

RailsRumble Postmortem AASM Bort ConfReader Paperclip RSpec Rails RailsRumble design haml open_id_authentication planning resource_this restful_authentication scheduling teamwork web

RailsRumbling Rails RailsRumble crunch experiment web

Don't Play Hurt environment motivation work workplaces

256-Color XTerms in Ubuntu 256 colors Ubuntu screen terminals vim xterm yak shave

14 Years to Unicode Google Unicode adoption enterprise

Rails URL Params as Types Rails URLs strings typing

Moving is Rewriting moving

WWW Will Never Die DNS GTLDs ICANN domain names web

Harkins's Law of Enterprise Software

Getting Git DVCS PeepCode VCS git source control

Picking a Username handle

Finding Value in Bogosity Smalltalk football practice programming

Free Shipping From Amazon Merchants Amazon Amazon merchants feedback game design online shopping rating web

Improvement and the Hawthorne Effect 37signals Hawthorne Effect urgency work week

StackOverflow Sounds Pragmatically Postmodern

Turning Wordpress Categories Into Tags MySQL SQL WordPress automation insert into select

Functional Package Management functional programming nix nixos system administration

Finally, Sweet Success Super Mario Kart Super Nintendo end of suffering pinnacle of human achievement triumph everlasting

Pipe Viewer bash console pipes

Caching Dictionaries in Python vs. Ruby Python Ruby dictionaries metaprogramming

2007

Django Template Tag for Dictionary Access Django dictionaries hash templates

My Four-Year Patch

Painless Upgrade to Rails 2.0 ActiveResource NearbyGamers Rails Rails 2.0 Ruby TDD routing test testing tests upgrade web

Drifting Into Test-Driven Development TDD

Choose Your Candidate 2008 presidential campaign Washington Post WashingtonPost.com politics

An Academic Inconvenience of Python Python

Because Internet Explorer is a Failure, That's Why Firefox Internet Explorer browser support browsers failure support web

Keep Ruby Gems in Your Home Directory Ruby RubyGems gems install shared hosting

How To De-Asshole-ify Links CSS Firefox assholes design links user experience

Post: Politics and Blogs 2008 presidential campaign Clinton Obama Romney WashingtonPost.com blog directory blogs donations endorsements politics search search engine

Post: The Moby Quotient Washington Post WashingtonPost.com work

These Elves are People Club Penguin Habbo Hotel MetaPlace Washington Post World of Warcraft gaming journalism media mmorpgs online gaming puzzle pirates virtual worlds web web 2.0

Oh Noes! slang

Post: Politics Glossary Washington Post WashingtonPost.com politics work

WashingtonPost.com Washington Post WashingtonPost.com work

Simple Ruby Mocking Ruby dependency injection mocking mocks testing tests unit tests

Fixtures in Ruby Unit Tests Ruby fixtures testing tests unit tests

Adequacy is Inadequate certification motivation testing

Google Zombies Google humor

Good Timing Hostway RegistryPro design sleep work

Flash Gaming Flash wasting time

Alphabetical Sorting SQL Without "The" SQL alphabetization lexical sorting sorting

Logging Internal Server Errors 500 errors Rails error handling errors internal server errors logging rescue

Discussion URLs: Opaque, Usable, and Readable ActiveResource RESTful Rails Ruby URLs human-readable named routes nested routes resources routes routing

Human-Readable ActiveResource URLs ActiveResource RESTful Rails Rails 1.1 Rails 1.2 URLs design human-readable named routes nested routes routes

Rails: Semicolons Out, Slashes In Rails URLs map mapping resources routes routing semicolon slash slashes

One Laptop Per Chicago Chicago Lucene OLPC Python Unicode grassy knoll pylucene

Add Feed Discovery Links Easily Rails Ruby atom auto_discovery_link_tag feeds

Colorizing Rails Test Output Rails Ruby color redgreen test

Epson Perfection V100 in Ubuntu Epson GIMP Linux Ubuntu hardware sane scanner scanning shell v100

Rails 1.2.1 Impression Barking Stapler Rails assert_select assert_tag web

Seeing Subversion Diffs for Commit Messages Subversion commit diff scripting

Capistrano Task to Load Production Data

Sociable 2.0 Released Sociable web

Sociable 2.0 Tomorrow Sociable

Which Vista Version? Apple Linux Microsoft OS X Ubuntu Vista

Sociable 2.0 Beta 2 Sociable WordPress

Announcing NearbyGamers Barking Stapler NearbyGamers Rails Ruby projects web

GET and POST variable hashes in Ruby on Rails Rails

2006

Making Valid XHTML Easier Rails Ruby xhtml

Dual-Head on the 13" Macbook Apple MacBook Ubuntu X Xorg dual-head edgy

Tidy Stylesheets in Rails CSS Rails Ruby design maintainability

Freshwater Live and TechCoffee Chicago Freshwater Rails entrepreneurship

344 Books Must Go Chicago books

Clean Up Your Mess Arkeia Cambrian House break crash jerk system administration wedge

ChiPy at Google BigTable ChiPy Chicago Google Code Python Selenium Subversion project hosting

Triple-boot Filesystem Layout Linux OS X XP

Bar Camp Chicago BarCamp Chicago

Flintstoning Toasters Cambrian House bash cron toasters

Leaving Hostway work

Programming Is Like Sex humor

Cambrian House Party Cambrian House web work

Building Clean URLs Into a Site Apache PHP web

Rails Day 2006 Rails web

Ripping Unicode Python design graphics

Developing With Evil PHP Perl design humor web

Ripping Unicode at ChiPy Python design graphics

Building a Site With Clean URLs Apache PHP design web

Cambrian Development Cambrian House security web

Pre-Cambrian House Apache Cambrian House PHP security web work

It's, Like, Symbolic humor music

Playing With Fire humor

Strings are a Domain-Specific Language C Perl Python Ruby assembly

Django And The Disappearing Template Tags Django

Know a Good Linux Feed Reader? Linux feeds web

Sociable Makes Blogs Happy Sociable web

What a Blog Post is Missing English humor

Newsflash: You're Not Good Enough gender humor media

NDAs: Fear and Shame security work

Writing and Formatting English design web

Ruby Blocks and Blocks Ruby design functional programming pointfree

Sociable Is The New Black Sociable design web

Lambda at Work Python

GoJobby Launches - Web 2.0 Job Site web work

Sociable 1.2 Sociable

Sociable 1.1 Sociable

Specificity English humor

Think Outside the Euclidean Universe graphics humor math work

Python Flyweights Python

Sociable 1.0 Sociable web

XmlHttpThrottleRequest humor web work

The Best Filler Ever Written humor work

Equality for Python Python

Django Gets Transactions Django databases web

Versioning: The Next Big Thing Django databases math web

Defeating Hardware Keyloggers crypto hardware security

Compressing Sudoku math

Push cx meta