The Curious Engineer

All blogs / Software / engineering practice

Push.cx

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

  1. Aside from that
  2. Fixing tags on 17k mp3s
  3. Payoff Progress of an Amortizated Loan

2025 4

  1. Rovyvon A5R flashlight diagram
  2. TypeID in Lua
  3. Broken Poker
  4. TV Setup

2024 4

  1. Google Ad Injection
  2. Streaming Weekly Lobsters Office Hours
  3. Discord vs IRC Rough Notes
  4. Wrapping Large-Scale Refactors

2018 2

  1. NixOS on prgmr and Failing to Learn Nix
  2. House Rules

2017 7

  1. Return Statement
  2. Voicemail
  3. Lobsters
  4. Attending Recurse Center
  5. MiscPodcast
  6. Arithmetic Wrap in GMS2
  7. Redshift With Cloudiness Adjustment

2016 7

  1. Hard Lessons
  2. When maintaining a legacy Rails apps, drink every time...
  3. Queue Zero
  4. Vim: highlight word wrap column in insert mode
  5. Should multiple Rails Apps and APIs share a database?
  6. How side effects make ActiveRecord models unreliable
  7. Recursive Sum

2015 26

  1. Advice for First-Time Attendees to MicroConf
  2. Peter Bhat Harkins
  3. Battery Longevity
  4. ActiveRecord Dangers Cheatsheet
  5. Have You Seen This Cache?
  6. Replacing Ack with Ag
  7. POP3 and SMTP via SSH Tunnels
  8. Finished Libraries
  9. Deleting Spam From sup Maildirs
  10. The Harmful Consequences of Postel's Maxim
  11. Skyscrapers and Doghouses
  12. Against Tedium
  13. Economics Doesn't Believe in Magic
  14. Sizing Up My Queue
  15. Y Combinator News
  16. Acceptable Errors
  17. Will knowledge change a decision you make?
  18. Installing You Need a Budget 4 (YNAB) on Arch Linux
  19. An ActiveRecord Adapter
  20. What Comes After MVC
  21. The Two Kinds of Integers
  22. Create localhost Aliases for Different Projects
  23. Case Sensitivity in In-Page Anchors
  24. Hiring Apprentices
  25. Dual-Booting Arch Linux on Lenovo X1 Carbon 3rd gen
  26. Isolating Polymorphism

2014 8

  1. Type-Checking Interface in Ruby
  2. Prefer: Censorship
  3. Integration as Composition
  4. Long-Term Travel Gear List2
  5. Builder Methods
  6. Two Designs for SequenceIdGenerator
  7. Distributed ID Generation and Bit Packing
  8. Ironwood, a Roguelike Game in 7 Days

2013 10

  1. Extracting Immutable Objects
  2. CTF Liveblog
  3. Random The Flag
  4. Personal Workflow
  5. The Well-Sorted Version
  6. Inheriting From Built-In Ruby Types
  7. Social Media for Programmers
  8. Backpack Criteria
  9. Why I Rarely Use HABTM
  10. Solving vs. Fixing vs. Introspecting

2012 3

  1. FTL: Simulationism Lost
  2. Open and Closed Platforms
  3. Legacy Bitmask Puzzle

2011 19

  1. Timing
  2. Breakdowns
  3. Keeping Jim Busy
  4. Rewriting My Competitors
  5. Two Turnarounds
  6. Recreating My Firefox Profile
  7. Small Steps
  8. Craftsmanship Tour: New York Times
  9. Now Featuring Monsters
  10. SPWA Week 2: Funding and Forms
  11. SPWA Week 1 Response: Code Hassles and Kittens
  12. SPWA Week 0 Response: A Strong Start
  13. So Play We All
  14. Software Craftsmanship Tour: Aidan Rogers
  15. Grind Without Progression in Die2Nite
  16. Retracting my JungleDisk Recommendation
  17. Dropbox and Git Play Well Together
  18. Craftsmanship Tour: Jim Ray
  19. Craftsmanship Tour: David W. Allen

2010 29

  1. XML Crash Course
  2. Craftsmanship Tour: 8th Light
  3. Craftsmanship Tour: Obtiva
  4. Social Pastimes
  5. The Dog That Didn't Bark
  6. Book Licenses
  7. Spreadsheet Errors
  8. Twitter
  9. Investing in Cloud Computing
  10. Travels of Indefinite Duration
  11. Reading 400 Feeds with Newsbeuter
  12. Globalton
  13. Interview Questions
  14. Sample Camera Pictures
  15. From Fixtures to Factories
  16. Camera Card
  17. This is Not A Productivity Post
  18. Freemium and Segmentation
  19. PHP Hex Map Graphics
  20. Tracking Finances Though Benign Neglect
  21. Yomi vs. Nash Equilibria
  22. Hackers and Gamers
  23. Domain Registration Survey
  24. One Fine Git Book: Pro Git
  25. Admitting Diminishing Returns
  26. Finish a Project
  27. Efficiency Replaces Autonomy
  28. Competition and Bluffing
  29. Game Influences (7/6): Warstorm

2009 38

  1. HTML is Your Markup Language Anyways
  2. Inbox Zero
  3. Survey of Conference Attendees
  4. Serenity Green
  5. Redirecting Users' URLs
  6. JavaScript: The Good Parts
  7. Investigating Theme Spam
  8. Athenge Ops Playtested
  9. Developer Day Notes
  10. Client Logging to AWS
  11. City of Heroes as a Pastime
  12. Karma, Farming and Play Styles
  13. Feedback and WeeWar's Game Design
  14. Technology Trees
  15. Game Influences (6/6): Kongai
  16. Game Influences (5/6): X-Com
  17. Game Influences (4/6): Counter-Strike
  18. Game Influences (3/6): Tactics Ogre
  19. The Farming Genre
  20. Game Influences (2/6): WeeWar
  21. Game Influence (1/6): Ikariam
  22. As Difficult as Possible
  23. The Game Industry
  24. Intention and Design
  25. ListLibrary.net UI Design
  26. A Spine of Trust
  27. Announcing ListLibrary.net
  28. Command/Query Separation
  29. Worthy of Praise
  30. Done at the Post
  31. Markoff's Gated Community Should Die in a Fire
  32. Web Game
  33. NearbyGamers To-Do List
  34. Small Plans
  35. Giving Notice
  36. Linearization of the Playing Field
  37. OpenOffice.org Losing Viability
  38. Inauguration

Undated 124

  1. Open Source Communities
  2. Django vs Rails: The Dead-Tree Edition
  3. Two Interactions With Amazon
  4. Rules of Database App Aging
  5. Rails Forum Roundup
  6. Washington Post Update
  7. Why I Write Tests
  8. Twitter and Ruby's Open Classes
  9. Developers Need IRC
  10. You're Not Refactoring
  11. Authenticity
  12. Greasemonkey Scripts: Gamasutra and Arlington Library
  13. Deploying Crontab With Your Rails App
  14. Now Do You Know It Works?
  15. RailsRumble Postmortem
  16. RailsRumbling
  17. Don't Play Hurt
  18. 256-Color XTerms in Ubuntu
  19. 14 Years to Unicode
  20. Rails URL Params as Types
  21. Moving is Rewriting
  22. WWW Will Never Die
  23. Harkins's Law of Enterprise Software
  24. Getting Git
  25. Picking a Username
  26. Finding Value in Bogosity
  27. Free Shipping From Amazon Merchants
  28. Improvement and the Hawthorne Effect
  29. StackOverflow Sounds Pragmatically Postmodern
  30. Turning Wordpress Categories Into Tags
  31. Functional Package Management
  32. Finally, Sweet Success
  33. Pipe Viewer
  34. Caching Dictionaries in Python vs. Ruby
  35. Django Template Tag for Dictionary Access
  36. My Four-Year Patch
  37. Painless Upgrade to Rails 2.0
  38. Drifting Into Test-Driven Development
  39. Choose Your Candidate
  40. An Academic Inconvenience of Python
  41. Because Internet Explorer is a Failure, That's Why
  42. Keep Ruby Gems in Your Home Directory
  43. How To De-Asshole-ify Links
  44. Post: Politics and Blogs
  45. Post: The Moby Quotient
  46. These Elves are People
  47. Oh Noes!
  48. Post: Politics Glossary
  49. WashingtonPost.com
  50. Simple Ruby Mocking
  51. Fixtures in Ruby Unit Tests
  52. Adequacy is Inadequate
  53. Google Zombies
  54. Good Timing
  55. Flash Gaming
  56. Alphabetical Sorting SQL Without "The"
  57. Logging Internal Server Errors
  58. Discussion URLs: Opaque, Usable, and Readable
  59. Human-Readable ActiveResource URLs
  60. Rails: Semicolons Out, Slashes In
  61. One Laptop Per Chicago
  62. Add Feed Discovery Links Easily
  63. Colorizing Rails Test Output
  64. Epson Perfection V100 in Ubuntu
  65. Rails 1.2.1 Impression
  66. Seeing Subversion Diffs for Commit Messages
  67. Capistrano Task to Load Production Data
  68. Sociable 2.0 Released
  69. Sociable 2.0 Tomorrow
  70. Which Vista Version?
  71. Sociable 2.0 Beta 2
  72. Announcing NearbyGamers
  73. GET and POST variable hashes in Ruby on Rails
  74. Making Valid XHTML Easier
  75. Dual-Head on the 13" Macbook
  76. Tidy Stylesheets in Rails
  77. Freshwater Live and TechCoffee
  78. 344 Books Must Go
  79. Clean Up Your Mess
  80. ChiPy at Google
  81. Triple-boot Filesystem Layout
  82. Bar Camp Chicago
  83. Flintstoning Toasters
  84. Leaving Hostway
  85. Programming Is Like Sex
  86. Cambrian House Party
  87. Building Clean URLs Into a Site
  88. Rails Day 2006
  89. Ripping Unicode
  90. Developing With Evil
  91. Ripping Unicode at ChiPy
  92. Building a Site With Clean URLs
  93. Cambrian Development
  94. Pre-Cambrian House
  95. It's, Like, Symbolic
  96. Playing With Fire
  97. Strings are a Domain-Specific Language
  98. Django And The Disappearing Template Tags
  99. Know a Good Linux Feed Reader?
  100. Sociable Makes Blogs Happy
  101. What a Blog Post is Missing
  102. Newsflash: You're Not Good Enough
  103. NDAs: Fear and Shame
  104. Writing and Formatting
  105. Ruby Blocks and Blocks
  106. Sociable Is The New Black
  107. Lambda at Work
  108. GoJobby Launches - Web 2.0 Job Site
  109. Sociable 1.2
  110. Sociable 1.1
  111. Specificity
  112. Think Outside the Euclidean Universe
  113. Python Flyweights
  114. Sociable 1.0
  115. XmlHttpThrottleRequest
  116. The Best Filler Ever Written
  117. Equality for Python
  118. Django Gets Transactions
  119. Versioning: The Next Big Thing
  120. Defeating Hardware Keyloggers
  121. Compressing Sudoku
  122. Push cx
  123. Lobsters Office Hours
  124. Long-term travel gear list