avdi.codes
Avdi Grimm, Code Cleric
- Posts
- 753 from 3 Dec 2007 to 29 Oct 2026
- Posting
- weekly (34 in the last year)
- Kind
- personal blog
- Feed
- https://avdi.codes/feed/
2026 33
- 191403 2
- 190459 2
- Lies, Damn Lies, and Github Stars
- 184910 2
- 183665 2
- 182978 2
- 182801 2
- Pulp Opus
- Moon Crimes
- 181574 2
- Output Field Separator in Ruby
- 175297 2
- 163761 2
- 162155 2
- 162086 2
- 162082 2
- 161044 2
- 158216 2
- 158050 2
- 157853 2
- 157772 2
- 157638 2
- Is Successful Agentic Coding a Delusion?
- 156725 2
- 155720 2
- 154684 2
- 154635 2
- 154575 2
- 154526 2
- 154516 2
- 154098 2
- You probably don’t need git worktrees
- New Podcast Ep on Agentic Feature Owners
2025 18
- Can you tell me how to test
- Developer Tooling is a Lousy Business
- I made a keychain
- Agents Aren’t Juniors, They Are Amnesiac Spies
- 39927 2
- 39835 2
- Announcing Ivar: Ruby’s Missing Instance Variable Typo Warnings
- Facts, feelings, and fascism – by Amy Isikoff Newell
- 39202 2
- Regression
- What’s the difference between Rails’s try and the safe navigation (&.) operator? – Andy Croll
- How to Understand a New Codebase Quickly
- Alternatives to Alexa/Google/Siri?
- Good Vibes
- Reblog of Russ Olsen:
- jwz: Unpopularity Contest
- 36354 2
- How did you know to do that?
2024 57
- You’re not selling a solution
- 29523 2
- 29520 2
- 26784 2
- 26777 2
- 26632 2
- 25851 2
- 25819 2
- 25352 2
- 25347 2
- How to cope with technology FOMO
- 24538 2
- 24069 2
- 23484 2
- 22983 2
- Notes on a Successful Second System
- 22362 2
- 21903 2
- Reblog of Ruby Weekly:
- 21618 2
- Where is the programmer inspo?
- 19878 2
- (2) How Fly.io uses Docker (without Docker) – YouTube
- 19490 2
- 18750 2
- Reblog of Graceful.Dev:
- 18414 2
- 18377 2
- 18368 2
- 18364 2
- 18134 2
- Programmer Discipline Avoidance
- 17961 2
- Placeholder
- 17953 2
- 17931 2
- 17913 2
- 17785 2
- 17777 2
- 17608 2
- Oh Shit, Git!?!
- 17400 2
- Anything but Brevo
- Reblog of Graceful.Dev:
- 16893 2
- 16877 2
- The experience of moving my fediverse presence off of mastodon has been mostly crickets in part i think because mastodon just doesnt seem to reliably respect account moves outside of the mastodon ga
- 16833 2
- Dammit, Descript, I want to like you
- Missive is amazing
- 16029 2
- 14610 2
- 14609 2
- 14608 2
- Goodbye Mastodon. Hello Fediverse.
- On “owning” software
- Setting Usermeta via the WordPress REST API
2023 2
2022 9
- Mastodon: Zero to Green Tests Locally (as of December 2022)
- SIGAVDI #96: Olbas Edition
- On Rigor, White Supremacy, and Occam’s Razor
- Preface to an Unwritten Programming Language Book
- SIGAVDI #95: Muhammara Edition
- The Enterprise Riptide – A Pattern of Banana Stands
- (Relatively) Painless WordPress Hosting Migration with WP DB Migrate
- The Pre-Sale Trap
- SIGAVDI #94: Belgian Coffee Edition
2021 11
- Your Autoresponder (A Pattern Language of Banana Stands)
- Throw, Catch, Raise, Rescue – I’m So Confused!
- The Pond Scum
- SIGAVDI #93: Magic Hummus Edition
- On Piracy
- The Tote Bag Economy
- Your Newsletter (A Pattern Language of Banana Stands)
- Your Mailing List (A Pattern Language of Banana Stands)
- There’s Always Money in the Banana Stand
- SIGAVDI #92: Breakfast Smoothie Edition
- SIGAVDI #91: Sweet Potato Pie Edition
2020 39
- SIGAVDI #90: Chicken soup edition
- Why you shouldn’t inherit from Ruby’s core classes (and what to do instead)
- Safely Call Superclass Methods from Ruby Modules
- SIGAVDI #89: Apple Pie Funnel Cake Edition
- That’s So Fetch
- Re-Use SSH Config Inside Docker Containers with WSL2
- Controlling superclass argument pass-through in Ruby
- Ruby Singleton Objects
- Why and how to use Ruby’s Hash#fetch for default values
- SIGAVDI #88: Endless Beans Edition
- The ultimate software taboo
- Alternative Ruby Symbol Literals
- SIGAVDI #87: Squash Blossom Edition
- SIGAVDI #86: Fancy Ramen Edition
- Rubber Duck Session: Rails Polymorphic Attributes with Karim Talek
- An Investigative Debugging Toolbox
- Share .netrc with your devcontainers
- SIGAVDI #85: Picnic Edition
- Run Rails 6 System Tests in Docker Using a Host Browser
- Rails 6 System Tests, From Top to Bottom
- Small, sharp tools can cut you
- Code and Chicken Wire
- SIGAVDI #84: Biscoff Edition
- Jessitron & Avdi Learn About Alloy
- Be careful of whitespace in .php files
- Jessitron & Avdi Attempt Event Storming
- Jessitron & Avdi Pair on Dark and the Square API
- SIGAVDI #83: Cream Cheese BBQ Chicken Edition
- In Grudging Defense of Structure
- What is the Ruby Legacy?
- The Well in the Field
- SIGAVDI #82: Broccoli Rabe Edition
- Reproducibly Setting Production Environment Variables for AWS Lambda Apps
- AWS SAM in a Docker Dev Container
- Edsger Dijkstra and the TSA school of software correctness
- SIGAVDI #81: Mustard Greens Edition
- Eric & Avdi Talk About the Developer Education Business
- A Tool for Choosing a Tech Stack
- New project, new tech stack?
2019 31
- Exploring, Pathmaking, Traveling
- On Gatekeeping, Complicity, and Arrival
- Simple is Complex
- Don’t throw away invalid data
- Rails 6 errors: the good, the bad, the ugly
- Tools for turning descriptions into diagrams
- How to relax your Ruby version specification in your Gemfile
- SIGAVDI #55: Lavender Yogurt Edition
- SIGAVDI #54: Watermelon Salad Edition
- SIGAVDI #53: Tamale Edition
- The Cache Flush Episode 003
- Test-Driven Re-implementation with Josh Thompson
- SIGAVDI #52: Grit Fritters Edition
- SIGAVDI #51: Ninja Bomb Edition
- SIGAVDI #50: Apple Cider Edition
- SIGAVDI #49 – Space Vodka Edition
- SIGAVDI #48 – Smoking Goat Edition
- Faking Method Inputs with OpenStruct feat. Kerri Miller
- SIGAVDI #47 – Pear Pizza Edition
- SIGAVDI #46: Corned beef & cabbage edition
- How to meet people at tech events when you’re awkward and shy
- SIGAVDI #45: Pimento Cheese Edition
- SIGAVDI #44: Goat Cheese Edition
- Things I’ve Misunderstood About Promises
- SIGAVDI #43: X-Wing Edition
- SIGAVDI #42: Ultimate Answer Edition
- Why I suck at writing talks with good transitions (and how I’m improving)
- SIGAVDI #41: Officially bored with winter edition
- SIGAVDI #40: Absinthe edition
- SIGAVDI #39: Bird and Book Edition
- SIGAVDI #38: New Years edition
2018 15
- SIGAVDI #37: Reheated gas station coffee edition
- SIGAVDI #36: Beef wellington edition
- SIGAVDI #35: Jetlag edition
- SIGAVDI #34: Headed down under
- New MOOM pairing video #7
- Now available: Master the Object-Oriented Mindset in Ruby and Rails
- How to be a shy newbie at a conference
- New pairing video and more updates
- Get $100 off of Master the Object-Oriented Mindset, today only
- Making local friends: a technical breakdown
- New additions to MOOM, May 2018 Edition
- SIGAVDI #33: Things fall apart
- Refactoring a tech talk abstract
- Open-sourcing my career
- Retrospective 2007-2017: Losing the Joy of Coding
2017 29
- MOOM Course Schedule Change
- Some thoughts and feelings on RubyConf 2017
- Enough With the Service Objects Already
- Flash sale to get me to RubyConf!
- Riffing on `interpose` implementations in Ruby
- On being the employee who “needs improvement”
- How to categorize objects
- Please help me find a web design mentor
- Getting started with PHP: Essential dev tools
- SIGAVDI #32: More than cartographers
- The daunting economics of cheap services
- Software Entrepreneurs: Stop looking for itches to scratch
- The Pretentious Haskell Phase
- Three Object-Oriented Programming Books Worth Reading
- Tuesday25: Creating a Rakefile for publishing to WordPress
- No puddle of piranhas (SIGAVDI #31)
- How to clean up Medium feeds in Inoreader
- A random selection of marketing, business, and personal development resources
- Side-hustle mindset versus product-business mindset
- Having the appearance of good design (SIGAVDI #30)
- I think voice dictation is turning me into a better speaker
- Selling tools to developers, and other bad ideas (SIGAVDI #29)
- Some universal code optimization rules
- Override all the safeties (SIGAVDI #28)
- Advice to myself 8 years ago
- Tuesday25: Keeping an automation notebook
- Landing pages are written, not designed
- Notes on Writing a Landing Page
- Tuesday25: Mostly just yelling at the computer
2016 22
- Tuesday 25: Writing a RubyTapas episode (with voice dictation)
- Windows and PHP are snowballs. Respect them.
- Today I improved… my headline chops
- Setting up a local WordPress dev environment with VCCW
- Looking for a donor RoR app
- On the limits of TDD, and the limits of studies of TDD
- Why you should spend $350 on a computer keyboard
- Minimal CSS frameworks for coding demos
- Planning for the wrong kind of scale
- Half-off Exceptional Ruby, Confident Ruby, & more
- Preserving session with Mechanize
- Please help me to not go broke
- Ruby Hero
- Some quick thoughts on input validation
- Ruby Guilty Pleasures
- A late-night rant about OOP and parametric dispatch
- Deleting Blank Lines in Emacs (2m screencast)
- Should we use a coding standard?
- Screencast: Auto-correcting typos in Emacs
- Matching hostnames with pcase in Elisp
- Hacker terminology: “Golden”
- About the Ruby squiggly heredoc syntax
2015 85
- The real 10x developer
- The Inescapable Pragmatism of Procedures
- Contempt as a sign of organizational incompetence
- Are you smart enough to be a programmer?
- Hell’s code kitchen
- ActiveSupport’s #try might not be doing what you think it’s doing
- It’s time to stop programming for the teletype era
- Pay no attention to the Dijkstra behind the green curtain
- Results of Ruby HTTP Client Library Survey
- Shut the hell up and listen (Avdi)
- I have a newsletter. You could subscribe, maybe.
- Programming in a Mad Max Wasteland
- An alternative to `puts` in Ruby
- Poll: What’s your favorite Ruby HTTP client library?
- More talks about less code!
- Jim Holmes on Slack (no, not the chat app)
- Dustin Moskovitz on work/life balance
- Intelligent code assistance
- David R. MacIver on finished libraries
- Janko Marohnić on Roda
- Hello, Crystal
- Current status
- Bob Martin on why everyone should learn assembly
- Known unknowns
- What it’s like to come back to a Ruby project after 6 months
- Shame as the currency of Open Source
- We’re still catching up to Perl
- Randy Coulman on unit testing
- Show your work
- John M. Carroll on Tools
- Don’t introduce yourself
- Great article on Data Objects by @pcreux
- Toggling technical debt
- Mickey Peterson on What is new in Magit 2.x
- Troll hunting for fun and profit
- Brandon Hilkert on A Path to Services
- Dear Medium: Please stop hurting the web
- Out beyond Ruby, there is a field. I will meet you there.
- Keep your eye on that brass ring
- Kata and Analysis by Jim Weirich
- Transcript of remarks at MeritConf 2015
- Weird, but not TOO weird
- The Agile Cargo Cult
- Dave Copeland on Escaping String-Typing
- Jim Weirich on Decoupling from Rails
- Garbage in, garbage out
- Ruby is defined by terrible tools
- Overprivileged trolls at Stack Overflow
- Birthday Sale!
- The semicolon is important
- David west on classes
- The good old days, when men were monads
- Stanford study finds walking improves creativity
- Haskell at Facebook
- Professionalism
- Drop Books
- ICANNt believe it’s not better
- Resilience
- Wetware, from zero to one
- Seven Bedtime Stories About Code
- Flat Shark
- 8457 2
- Friday Linkdump is traveling through time for God but nobody understands it.
- How a keyboard changed what I look for in an editor
- Benchmarking Ruby Dispatch Strategies
- Friday Linkdump
- RubyTapas Freebie: Sequel
- Some Pharo 4 Getting-Started Tips
- The Soul of Software
- I am my code, redux
- So what’s the deal with Ruby refinements, anyway?
- 8351 2
- New RubyTapas Freebie: Immutable Iterators with Tom Stuart
- 8346 2
- Good Haskell article
- Breaking open toys in Smalltalk
- In which I make you hate Ruby in 7 minutes
- 8332 2
- Google Says No to More End-to-End Tests
- A personal programming language roadmap
- 8319 2
- Patterns are for People
- Where to find me in 2015
- Who is your failure helping?
- Why does Ruby have blocks?
2014 36
- In defense of fat tools
- Frog and toad, willpower, and microservice architecture
- PayPal wants to know when I stopped beating my customers
- Programmers are Binary Systems
- Two years of RubyTapas (free episode!)
- Calc-mode for calculating seconds
- Boolean Externalities
- How to use Ruby’s English and/or operators without going nuts
- Where do ideas come from?
- Zero to Smoke Test with Sinatra
- New book! Birthday sale!
- Typist Wanted
- Rake Part 2: File Lists
- Active Record Soup
- Jim Weirich on exceptions
- TL;DR Amazon Sucks
- A case study on civility and constructive criticism
- Learn advanced Rake in 7 episodes
- Rake Part 7: MultiTask
- Rake Part 6: Clean and Clobber
- Rake Part 5: File Operations
- Rake Part 4: Pathmap
- Rake Part 3: Rules
- Rake Part 2: File Lists
- Rake Part 1: Files and Rules
- How to Suck at Conference Talks
- Why does Amazon hate ebook authors?
- Rumors of Ruby’s Demise
- Why DuckDuckGo is better for web development, a pictorial guide
- The Passion Gospel
- Playing with JSON in Postgres
- The Moderately Enthusiastic Programmer
- Dotenv for multiple environments
- Faster! More Intense!
- The Hybrid Kangaroo Desk
- Equals is an Assertion, not an Assignment
2013 46
- Lost in a World of Data
- Debugging an HTTP Client Library
- Exception Causes in Ruby 2.1
- FPOO Ch. 9: Functions That Make Functions
- FPOO Chapter 7: Programming with Dataflow
- FPOO Chapter 6: Inheritance
- FPOO Chapter 5: Classes
- I haven’t responded to a CFP in years
- Designer needed for a small job
- FPOO Chapter 4: Encapsulating methods in the constructor
- FPOO Chapters 2 & 3: Basic Objects in Elixir
- Watch me build an app (one day sale!)
- FPOO Chapter 1 in Elixir
- Re-implementing apply in Elixir
- The day my gems disappeared
- RubyTapas Freebie – Gem-Love Part 3
- Sorting Lines in 5 Languages
- RubyTapas Freebie: Enumerator
- Bounded Queue in Ruby
- Complete “Making of Cowsays.com” video now available from Tekpub
- Confident Ruby is Finished!
- Steal my business model!
- Study Notes: Conway’s Game of Life in Elixir
- Fixing a doc bug in Ruby
- Installing Elixir on Ubuntu 13.04
- New book, and a huge birthday sale!
- Study Notes: Understanding Computation
- RubyTapas freebie: xmpfilter
- A List of Programming Screencast Series
- Linux has better hardware support than OS X
- RubyTapas Freebie: Runnable Library
- Naught, a toolkit for building Null Object classes in Ruby
- “Confident Ruby” now in Beta!
- RubyTapas 100th Episode Giveaway
- RubyTapas Freebie: The End of Mocking
- RubyTapas Freebie: Utility Function
- RubyTapas Freebie: Gem Love Part 2
- RubyTapas Freebie: Hash Default Value
- RubyTapas Freebie: Streaming
- RubyTapas Freebie: Scanning a String
- RubyTapas Freebie: Caller-Specified Fallback Handler
- Taking a break from pair programming
- RubyTapas Freebie: Blocks, Procs, & Lambdas
- The Trouble with HTTP Digest Authentication
- I’m sorry too.
- My Screencasting Process
2012 66
- I am my code
- Modeling the World with Prototypes
- RubyTapas 033: Classes and Constants
- RubyTapas 029 – Redirecting Output
- RubyTapas 027: Macros and Modules
- RubyTapas 022: Inline Rescue
- On BritRuby
- RubyTapas Episode 21: Domain Model Events
- No Free RubyTapas This Week
- New RubyTapas Video, and a very special RubyConf Offer
- A Month of Tapas
- RubyTapas Episode 13: Singleton Objects
- Let’s stop telling programming newbies to learn Vim (or Emacs)
- RubyTapas Episode 10: Finding $HOME
- “Classes vs. Prototypes – Some Philosophical and Historical Observations”
- RubyTapas Episode 7: Constructors
- Conditionally Bundling Gems Based on Platform
- RubyTapas Episode 4: Barewords
- Code to Joy
- RubyTapas Episode 1: Binary Literals
- Client Dating Tips
- Ignorable Exceptions and Other Hacks
- Don’t Buy Parallels Workstation for Linux
- Job Thread!
- Configuring database_cleaner with Rails, RSpec, Capybara, and Selenium
- Array Set Operations in Ruby
- Why WordPress
- Define Conversion Protocols in Ruby
- Letter to Steven Aldrich of Outright, re: GoDaddy Acquisition
- Stepping off the ledge
- Birthday Sale! 50% off “Confident Ruby”, Today Only
- Every day, in every way
- Use revision control annotation in your editor
- Building Gems that Don’t Suck – Hashrocket Lunch&Learn Video
- Objects on Rails “Sponsor Edition” now includes a conversation with Sandi Metz!
- Seeking a used MacBook for my mom
- Confident Ruby now in Alpha
- DisplayCase Gem Now Available
- Making Little Classes out of Big Ones (video)
- New at WideTeams.com
- Creating Cowsays.com Part 2: Unit Tests and Cow Files
- Underscores are stupid
- FigLeaf Gem Now Available
- A Ruby Conversion Idiom
- HTTP forwarding services for local Facebook development
- Watch me write an app, starting from nothing. Part 1 now available!
- New maintainer needed for NullDB
- Assistants: Not just for the boss anymore.
- Generating cows with IO.popen()
- The cow says…
- Unless readable else confused
- Now Available: Objects on Rails
- Undoing and redoing changes to Emacs window layouts (Emacs Reboot #17)
- The sorry state of video hosting for WordPress blogs
- Emacs Reboot #16: Windmove
- Back in business
- Travel tips needed
- Editing Directory Trees in Emacs
- On Module Integrity
- Ruby Thread Locals are also Fiber-Local
- Preventing Recursion in Ruby
- Decoration is best, except when it isn’t
- A Game Development Curriculum
- ActiveRecord Default Association Extensions
- My authoring tools
- Should I rename my gem?
2011 101
- Stop reading this blog and learn something
- Systems Programming in the Cloud
- End your OOP Confusion with the Design Pattern Classifier
- Fancy GitHub Authentication with Omniauth
- Another Take on Smalltalk-Style Controll Flow (SBPP #6)
- Object Oriented Programming Books
- Testing that a block is called
- Defining #method_missing and #respond_to? at the same time
- Early access beta of “Objects on Rails” Now Available
- Running Emacs as a Server (Emacs Reboot #15)
- Starting Points for Pushing Async Notifications to Browsers
- DRYing up your validations using DB reflection
- RVM.el and Inf-Ruby (Emacs Reboot #14)
- Breaking up init.el (Emacs Reboot #13)
- Required Packages (Emacs Reboot #12)
- Declarative Keyword Parameters in Ruby (SBPP #5)
- Emacs Reboot #11: Line Numbers
- Emacs Reboot #10: Lorem Ipsum
- Emacs Reboot #9: Blogging
- Emacs Reboot #7: Ido
- SBPP #4: method Cascades
- Emacs Reboot #8: Gists
- SBPP #3: Reversing Method
- SBPP #2: Smalltalk Patterns in Ruby
- SBPP #1: Introduction
- Emacs Reboot #6: Marmalade, Magit
- What do you want to know about OOP and Rails?
- Emacs Reboot #5
- Emacs Reboot #4: Customizing Customization
- Emacs Reboot #3: Preparing the Canvas
- Making a Mockery of TDD
- 5 things programmers preach but don’t practice
- Temporarily disabling warnings in Ruby
- There is no such thing as a good field programmer
- Your Code is My Hell
- Letter to a Young Developer
- Do we need constants?
- You Can’t Subclass Integers in Ruby
- View Sandboxes for Rails
- The Coding Wasteland
- Go get yourself some PragProg books
- Loading plugins with Rubygems
- Emacs Reboot #2: Startup
- Why Linux
- Emacs Reboot #1: Beginnings
- Software Superstitions
- Fowler on Rails
- The Procedure/Function Block Convention in Ruby
- New at WideTeams.com
- An intro to throw and catch in Ruby
- Demeter: It’s not just a good idea. It’s the law.
- Do, or do not. There is no #try.
- Agile is whatever you want it to be
- Your code is broken, and Ruby can help you fix it
- Summer Speaking Schedule
- Make Emacs-Server Write a PID File
- A Guardfile for Redis
- Using CapsLock to Trigger Ubuntu Unity
- Null Objects and Falsiness
- Exceptional Ruby now available in ePub, Mobi, and HTML
- Keep local modifications in Git-tracked files
- RailsConf, BohConf, DCRUG Video
- “Exceptional Ruby” Now Available!
- Last Chance for Exceptional Ruby Beta
- Hello, Red Dirt Ruby!
- RubyMine, Spork, RSpec, Cucumber
- Linkdump #8
- RailsConf 20% Discount for Virtuous Code Readers
- Screencast: Taping API Interactions with VCR
- Linkdump #7
- RSpec is for the literate
- Getting Started with Erector in Rails 3
- Ruby on Ales 2011
- Linkdump #6
- Linkdump #5
- Ruby on Ales and RailsConf
- My 99Designs Experience
- Linkdump #4
- Creating a PA LLC
- Ruby++, or why post-increment is tricky
- Linkdump #3
- Screencast: Why Keyboard Macros are Awesome
- Contest: Your reply to NoneSuch
- How to be a “Dirty Harry” programmer
- NoneSuch: The Greatest Ruby Gem EVAR
- REST Resources
- “Exceptional Ruby” Video and Beta eBook!
- I’m speaking at RubyNation and Red Dirt Ruby Conf
- Thank You, Magic Ruby!
- Help me speak at MagicRuby and beyond
- Linkdump #2
- Linkdump #1
- Elegant Code » Book Review – Extreme Programming Explained
- The happy developer
- ActiveRecord association extensions and method_missing
- I’m Speaking at Day Camp 4 Developers
- ActiveRecord Golf
- Roy Osherove on Test Construction
- Programming is Catfish Noodling
- Glass Houses for Ruby
- Fast and Good
2010 65
- They just don’t make bugs like they used to
- Daniel Spiewak on Monads
- Object Oriented Programming Comes to Rails
- Overriding the Backtick in Ruby
- EventMachine has competition
- Why the GPL Matters
- Full Exploitation
- Social Profile Services – A Summary
- A Rack-like library for HTTP Clients
- RVM Proxies for Common Commands? (Solved)
- Transcending Threads
- Writing Open Source software that people will actually use
- Counters for Partials
- The Ruby Stdlib is a Messy Workshop
- Speaking at Magic Ruby
- SpiderOak Review
- Leave it to java
- Facebook must be stopped
- Open Source GUI Prototyping? Sign me up!
- The Mechanics of Web Design
- Checking the existence of a super method in Ruby
- Determining Singleton Class Status in Ruby
- Off to Ruby DCamp
- Do you use a Real Editor?
- Class Methods Considered Annoying
- I don’t care about your corporate perks
- ANN FireTower 0.0.4
- Treating Arrays as Sets
- Using Hashes as Caches
- “and” and “or” are like backwards statement modifiers
- Using “and” and “or” in Ruby
- RPCFN Solution
- Greenletters: Painless automation and testing for command-line applications
- Announcing Firetower – A command-line interface to Campfire
- Rack-Test and Capybara are uneasy bedfellows
- Rails 3 resource routes with dots; or, how to make a Ruby developer go a little bit insane
- Open for business!
- Announcing Wide Teams
- YAGNI: Answers to some common objections to dropping out
- Turn on, tune in, drop out
- Ruby Tempfiles in Depth
- Quickie Objects in Ruby
- Thoughts on the Dell Studio XPS 16
- There Ain’t No Such Thing As a Free Dinner
- Ruby Programming Challenge for Newbies
- Pair Programming is like Having a Copilot
- Daemonic Emacs
- Refactoring in Ruby
- NullDB has a new maintainer
- Dumping Tabular Data with Hirb
- The New Openness
- Removing files with varied capitalization
- ruby-standard.org
- Getting Pedantic About Ruby Semantics
- Calling Grandparents in Ruby
- Come see me in Harrisburg tonight!
- Looking for a new NullDB maintainer
- RubyPulse
- Everything You Love about Java is Everything I Love About Good Design
- Cargo Cults and Dharma Transmission
- First and Rest in Ruby
- Confident Code at B’More on Rails
- Hammertime: An interactive error console for Ruby
- Come see me run my mouth at B’More on Rails
- The Pidgin “IRSSI Features” Plugin Will Spam Your Friends
2009 39
- Wax on, Wax off
- Debugging Rule 1: It’s your fault
- RightAWS and SSL Certificates
- Fetching multiple SimpleDB items in a single request
- PC Construction Resources?
- Hash Transforms in Ruby
- Speed up RightAWS by Enabling libxml
- Assertive Code
- The State of SimpleDB Clones
- Why Go Matters
- Simplicity is Complicated
- Copying Amazon SimpleDB Domains
- NullDB for DataMapper
- ISO8601 Dates in Ruby
- Double-Load Guards in Ruby
- Patching flymake for Ruby development
- Array-ifying Values
- Viewing REST service responses in a browser
- Safely executing commands with user data
- My WebOS Makefile
- Ruby Subprocesses Part 3
- Programming WebOS
- “80% of men never noticed anything”
- Recursively Symbolize Keys
- BarCamp Baltimore 2009
- Playing Grown-Up: The Rails Maturity Model
- Rehabilitating the professional rock star
- Devver
- Ubuntu, Emacs, and Fonts
- Go Fetch
- Writing Facades on Legacy Code
- Smart Requires in Ruby
- TDD Accelerates Development
- VirtualBox NAT Forwarding
- Damien Katz: CouchDB and Me
- The three line rule
- Agile Living
- Is your keyboard jammed, or are you just writing Haskell?
- The Three Virtues
2008 40
- Ruby Advent Calendar 2008: Listening to Your Specs
- Using AlterEgo with ActiveRecord
- [ANN] HookR 1.0.0
- [ANN] fail-fast 1.0.0 Released
- [ANN] alter-ego 1.0.0 Released
- Writing Self-Confident Code
- Complex Hash Expectations in RSpec
- Testing Private Methods
- Languages I Want to Learn
- If anyone’s looking for me, I’ll be DCamping
- You keep using that word “distributed”…
- RIP Guy Decoux
- CommunityOverflow – Userscripts.org
- Corporate Leave Policies?
- Class.new and .inherited()
- Switching to Disqus
- Always something new
- The Trifecta of FAIL; or, how to patch Rails 2.0 for Ruby 1.8.7
- Contact Info Survey
- Phenomenal Cosmic Power
- Revision-Stamp Your Rails Apps
- Epic Fail, or, why the users hate us.
- You should be on ruby-talk
- Everything Old…
- The Lotus Desk
- Rock’em Sock’em Ockham
- On Beauty in Code
- Sustainable Development in Ruby, Part 3: Delegation
- Why Your Social Website Should Support OpenID
- Announcing Ninja-Patching!
- Sustainable Development in Ruby, Part 2: Method Injection
- Sustainable Development in Ruby, Part 1: Good Old-Fashioned Inheritance
- The Pipe Cleaner Gang
- Sustainable Development in Ruby: Introduction
- Doctor, it hurts when you say that
- Full Disclosure; or, What’s in your toolbox?
- Followup to “Monkeypatching is Destroying Ruby”
- Monkeypatching is Destroying Ruby
- Announcing NullDB 0.0.1
- Why jQuery