Hi! I'm Avdi Grimm, and this is my software development blog. More...
Books and Screencasts
Small plates of gourmet Ruby code.
Watch me build an app from scratch.
Objects on Rails
A developer notebook on applying classic Object-Oriented principles to Ruby on Rails projects.
The definitive guide to exceptions and failure handling in Ruby.
Author Archives: Avdi Grimm
On May 22, the 100th episode of RubyTapas will arrive in subscribers’ inboxes and RSS readers, and I’m marking the occasion with a great big giveaway! I’ve got a whole pile of eBooks and other goodies to give out. Check … Continue reading
At the borders of our systems, mockist testing hits a point of diminishing returns. In this free episode we take a look at when to stop mocking and start integration testing.
Some functions are useful in many different contexts. In this free episode we’ll explore some ways to make them available both to library code and to client code of a library.
I have a few ongoing miniseries in RubyTapas. In this, the second installment of a miniseries chronicling the creation of a Rubygems plugin and an associated server, I touch on a number of topics including acceptance testing, the shellwords standard … Continue reading
Today’s cautionary episode demonstrates and explains a Hash gotcha that often comes as a surprise.
Does code optimized for RAM usage need to be ugly? Find out, in this free episode of RubyTapas.
Sometimes it’s hard to decide how to handle a failure in a method call. Raise an exception? Return a nil? Log an error? The best choice may differ depending on where the method is being called. In today’s free RubyTapas … Continue reading
About seven months ago I officially put out my shingle as a consulting pair-programmer. Since then I’ve logged around 250 hours of pair programming with at least 60 different programming partners. Most of that was paid sessions, but I also … Continue reading
It’s been way too long since I posted a Monday freebie. Today’s little video tries to answer a question I hear pretty often: what’s the difference between blocks, procs, and lambdas—and which one should I use?