Blogger I love diving into the details of a technology, learning how it works, and then explaining it in simple terms that everyone can understand.

Rubyist I’ve written a few gems that you can find on my github profile. You can also find me occasionally at meetings of the Boston.rb group.

Aspiring Author I just self-published an eBook called Ruby Under a Microscope.

SitePoint I also write for; recently I've been having fun interviewing famous Rubyists and open source developers.


All Articles

October 2018 Summer School With The Rust Compiler
June 2018 From ActiveRecord to Diesel
March 2018 How Rust Implements Tagged Unions
January 2018 Learning Rust: If Let vs. Match
December 2017 Looking Inside Postgres at a GiST Index
Manipulating Trees Using SQL and the Postgres LTREE Extension
Saving a Tree in Postgres Using LTREE
Installing the Postgres LTREE Extension
Trying to Represent a Tree Structure Using Postgres
January 2017 Pointers in C and x86 Assembly Language
November 2016 Learning to Read x86 Assembly Language
October 2016 Need a Second Opinion on Your Ruby Code? Ask Crystal
April 2016 Two Dumb Ruby Mistakes
January 2016 Is Your Postgres Query Starved for Memory?
November 2015 A Look at How Postgres Executes a Tiny Join
September 2015 What Do Perl and Go Have in Common?
June 2015 Don’t Let Your Data Out of the Database
February 2015 Mark Methods Private When You Don’t Test Them
January 2015 Using Rake to Generate a Blog
December 2014 Koichi Sasada Encourages Us To Contribute To Ruby
Matz’s Foreword to Ruby Under a Microscope
November 2014 Discovering the Computer Science Behind Postgres Indexes
October 2014 Following a Select Statement Through Postgres Internals
September 2014 How Arel Converts Ruby Queries Into SQL Statements
20,000 Leagues Under ActiveRecord
June 2014 A Rule of Thumb for Strong Parameters
April 2014 Using a Ruby Class To Write Functional Code
February 2014 Use An Ask, Don’t Tell Policy With Ruby
January 2014 What does (((λ f . (λ x . (f x))) (λ a . a)) (λ b . b)) mean?
Ruby Multiplies Like a Fourth Grader
How Big is a Bignum?
December 2013 Three RubyConf Surprises
November 2013 Expanded Ruby Under a Microscope Available in Print!
October 2013 Generational GC in Python and Ruby
Visualizing Garbage Collection in Ruby and Python
Ruby’s Top Self Object
June 2013 RubyKaigi: Making a Japanese Conference Accessible to the World
Meet Fifteen Ruby Core Committers
Coming This Fall: “Ruby Under a Microscope” Updated and in Print
Ruby, Python, Java, C and Programmer Happiness
April 2013 Ruby’s Missing Data Structure
Ruby 2.0 Works Hard So You Can Be Lazy
February 2013 An Interview With Laurent Sansonetti
Ruby MRI Source Code Idioms #3: Embedded Objects
January 2013 Ruby MRI Source Code Idioms #2: C That Resembles Ruby
Ruby MRI Source Code Idioms #1: Accessing Data Via Macros
December 2012 Ruby, Smalltalk and Class Variables
An Interview With Jim Weirich
A High Level Code Walk Through Ruby MRI
November 2012 My eBook build process and some PDF, EPUB and MOBI tips
October 2012 Xavier Noria: The Code Gardener
September 2012 How Ruby Borrowed a Decades Old Idea From Lisp
August 2012 Narihiro Nakamura: Ruby’s GC Innovator
July 2012 Objects, Classes and Modules
June 2012 How Ruby Executes Your Code
The Start of a Long Journey: How Ruby Parses and Compiles Your Code
May 2012 A Conversation With Mark Bates About How To Learn CoffeeScript
One Chapter From My Upcoming eBook: Ruby Under a Microscope
April 2012 Matt Wynne On Using Cucumber
Exploring Ruby’s Regular Expression Algorithm
March 2012 Why You Should Be Excited About Garbage Collection in Ruby 2.0
Learning More About JRuby from Charles Nutter
Learning From the Masters: Sinatra Internals
February 2012 The Joke Is On Us: How Ruby 1.9 Supports the Goto Statement
An Interview with Andre Arko and Terence Lee from the Bundler Team
Is Ruby interpreted or compiled?
Journey to the center of JRuby
A chat with Nick Quaranto about internals
January 2012 My first impression of Rubinius internals
Seeing double: how Ruby shares string values
How to Customize Twitter Bootstrap’s Design in a Rails app
Never create Ruby strings longer than 23 characters
December 2011 Learning from the masters part 2: three metaprogramming best practices
Too good to be true! Twitter Bootstrap meets Formtastic and Tabulous
Learning from the masters: some of my favorite Rails commits
November 2011 Two ways of using Redis to build a NoSQL autocomplete search index
Finding your soulmate: autocomplete with Redis in Rails 3.1
Twitter Bootstrap, Less, and Sass: Understanding Your Options for Rails 3.1
Besides being faster, what else is new in Bundler 1.1?
October 2011 Don’t be terrified of building native extensions!
Show some love for prepared statements in Rails 3.1
Why Bundler 1.1 will be much faster
It’s time to clean up your mess: refactoring Cucumber step definitions
The technology you never knew you were using to test your Rails site
September 2011 How does Bundler bundle?
Bundler’s Best Kept Secret
How does Kaminari paginate?
June 2011 Where does my javascript code go? Backbone, JST and the Rails 3.1 asset pipeline
April 2011 Contributing a new scaffold to ScaffoldHub
March 2011 View Mapper for Rails 3: ScaffoldHub
February 2011 Customizing Toto to support blog post categories
January 2011 4 tips for how to customize a Toto blog site
December 2010 CodeBuddy: See your Ruby stack come alive!
November 2010 How to integrate Amazon Simple Pay into a Rails 3 app
ReliefHub hackfest: helping orphanages in Haiti
October 2010 ActiveRecord with large result sets - part 2: streaming data
September 2010 ruby187gc.patch
ActiveRecord with large result sets - part 1: select_all vs. find
July 2010 Code record/playback using Rails 3 generators
Using LEFT OUTER JOIN with SearchLogic
June 2010 Using method_missing to customize SearchLogic
May 2010 How to install Paperclip in a Rails 3 app
April 2010 How to create a slideshow using JQuery and Rails in 10 minutes or less
Creating associations to existing data part 3: has_many :through scaffolding
March 2010 Class Factory: Factory_girl-like syntax for dynamically creating Ruby classes
February 2010 Getting started with Ruby metaprogramming
Creating associations to existing data part 2: belongs_to with auto_complete
January 2010 Creating associations to existing data part 1: belongs_to scaffolding
December 2009 How does the complex-form-examples sample app work?
How to convert a Rails plugin into a gem
November 2009 Scaffolding for auto complete on a complex, nested form
Scaffolding for complex forms using nested attributes
October 2009 Paperclip scaffolding
View Mapper: Scaffolding for your models and plugins
Auto_complete scaffolding
September 2009 Rails generator tutorial part 2: writing a custom manifest action
August 2009 Tutorial: How to write a Rails generator
July 2009 Generating view scaffolding code for existing models
June 2009 Taming the beast: Using JRuby and RSpec to test a J2EE application
Repeated auto complete plugin usage change
Auto complete for complex forms using nested attributes in Rails 2.3
May 2009 Paperclip sample app part 3: saving file attachments in a database BLOB column
Paperclip sample app part 2: downloading files through a controller
April 2009 Paperclip sample app
Database storage for Paperclip: rewritten to use a single table
Filtering auto_complete pick lists – part 2: using named scopes
March 2009 Filtering auto_complete pick lists
February 2009 Database storage for Paperclip
January 2009 Sample app for auto complete on a complex form
Repeated_auto_complete changes merged into auto_complete
Using MySQL transactions with Drupal unit tests
Using transactions in a separate database with Drupal PHPUnit tests
Using a test database with Drupal unit tests
TDD keeps your PHP code separate from Drupal
December 2008 Using TDD to write a Drupal module
Writing your first PHPUnit test in Drupal
Example Drupal module to use for TDD demonstration
November 2008 The auto_complete plugin refactored to support repeated fields and named scopes
Testing is a lesson in humility
October 2008 Modifying the auto_complete Plugin to Allow Repeated Fields
Autocomplete plugin doesn’t work for repeated fields
September 2008 Problems Installing the Cutline Theme in Mephisto
Mephisto Setup on
Why to use TDD with Drupal