All blogs / Software / engineering practice
Push.cx
Blog of [Peter Bhat Harkins](https://malaprop.org)
Software / engineering practiceRuby / RailsEssays / personal
- Posts
- 284 from 23 Jan 2009 to 15 Sep 2026
- Posting
- now and then (4 in the last year)
- Kind
- personal blog
- Feed
- https://push.cx/feed.xml
2026 3
2025 4
2024 4
2018 2
2017 7
2016 7
2015 26
- 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
- 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 8
2013 10
2012 3
2011 19
- 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 29
- XML Crash Course
- Craftsmanship Tour: 8th Light
- Craftsmanship Tour: Obtiva
- Social Pastimes
- The Dog That Didn't Bark
- Book Licenses
- Spreadsheet Errors
- 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 38
- 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
Undated 124
- 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
- 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
- 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
- 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
- Lobsters Office Hours
- Long-term travel gear list