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.

Aspiring Author In 2014 I published a book called Ruby Under a Microscope.

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

Subscribe 

All Articles

September 2019Using Rust to Build a Blog Site
October 2018Summer School With The Rust Compiler
June 2018From ActiveRecord to Diesel
March 2018How Rust Implements Tagged Unions
January 2018Learning Rust: If Let vs. Match
December 2017Looking 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 2017Pointers in C and x86 Assembly Language
November 2016Learning to Read x86 Assembly Language
October 2016Need a Second Opinion on Your Ruby Code? Ask Crystal
April 2016Two Dumb Ruby Mistakes
January 2016Is Your Postgres Query Starved for Memory?
November 2015A Look at How Postgres Executes a Tiny Join
September 2015What Do Perl and Go Have in Common?
June 2015Don’t Let Your Data Out of the Database
February 2015Mark Methods Private When You Don’t Test Them
January 2015Using Rake to Generate a Blog
December 2014Koichi Sasada Encourages Us To Contribute To Ruby
Matz’s Foreword to Ruby Under a Microscope
November 2014Discovering the Computer Science Behind Postgres Indexes
October 2014Following a Select Statement Through Postgres Internals
September 2014How Arel Converts Ruby Queries Into SQL Statements
20,000 Leagues Under ActiveRecord
June 2014A Rule of Thumb for Strong Parameters
April 2014Using a Ruby Class To Write Functional Code
February 2014Use An Ask, Don’t Tell Policy With Ruby
January 2014What does (((λ f . (λ x . (f x))) (λ a . a)) (λ b . b)) mean?
Ruby Multiplies Like a Fourth Grader
How Big is a Bignum?
December 2013Three RubyConf Surprises
November 2013Expanded Ruby Under a Microscope Available in Print!
October 2013Generational GC in Python and Ruby
Visualizing Garbage Collection in Ruby and Python
Ruby’s Top Self Object
June 2013RubyKaigi: 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 2013Ruby’s Missing Data Structure
Ruby 2.0 Works Hard So You Can Be Lazy
February 2013An Interview With Laurent Sansonetti
Ruby MRI Source Code Idioms #3: Embedded Objects
January 2013Ruby MRI Source Code Idioms #2: C That Resembles Ruby
Ruby MRI Source Code Idioms #1: Accessing Data Via Macros
December 2012Ruby, Smalltalk and Class Variables
An Interview With Jim Weirich
A High Level Code Walk Through Ruby MRI
November 2012My eBook build process and some PDF, EPUB and MOBI tips
October 2012Xavier Noria: The Code Gardener
September 2012How Ruby Borrowed a Decades Old Idea From Lisp
August 2012Narihiro Nakamura: Ruby’s GC Innovator
July 2012Objects, Classes and Modules
June 2012How Ruby Executes Your Code
The Start of a Long Journey: How Ruby Parses and Compiles Your Code
May 2012A Conversation With Mark Bates About How To Learn CoffeeScript
One Chapter From My Upcoming eBook: Ruby Under a Microscope
April 2012Matt Wynne On Using Cucumber
Exploring Ruby’s Regular Expression Algorithm
March 2012Why 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 2012The 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 RubyGems.org internals
January 2012My 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 2011Learning 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 2011Two 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 2011Don’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 2011How does Bundler bundle?
Bundler’s Best Kept Secret
How does Kaminari paginate?
June 2011Where does my javascript code go? Backbone, JST and the Rails 3.1 asset pipeline
April 2011Contributing a new scaffold to ScaffoldHub
March 2011View Mapper for Rails 3: ScaffoldHub
February 2011Customizing Toto to support blog post categories
January 20114 tips for how to customize a Toto blog site
December 2010CodeBuddy: See your Ruby stack come alive!
November 2010How to integrate Amazon Simple Pay into a Rails 3 app
ReliefHub hackfest: helping orphanages in Haiti
October 2010ActiveRecord with large result sets - part 2: streaming data
September 2010ruby187gc.patch
ActiveRecord with large result sets - part 1: select_all vs. find
July 2010Code record/playback using Rails 3 generators
OSCON
Using LEFT OUTER JOIN with SearchLogic
June 2010Using method_missing to customize SearchLogic
May 2010How to install Paperclip in a Rails 3 app
April 2010How 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 2010Class Factory: Factory_girl-like syntax for dynamically creating Ruby classes
February 2010Getting started with Ruby metaprogramming
Creating associations to existing data part 2: belongs_to with auto_complete
January 2010Creating associations to existing data part 1: belongs_to scaffolding
December 2009How does the complex-form-examples sample app work?
How to convert a Rails plugin into a gem
November 2009Scaffolding for auto complete on a complex, nested form
Scaffolding for complex forms using nested attributes
October 2009Paperclip scaffolding
View Mapper: Scaffolding for your models and plugins
Auto_complete scaffolding
September 2009Rails generator tutorial part 2: writing a custom manifest action
August 2009Tutorial: How to write a Rails generator
July 2009Generating view scaffolding code for existing models
June 2009Taming the beast: Using JRuby and RSpec to test a J2EE application
Auto complete for complex forms using nested attributes in Rails 2.3
Repeated auto complete plugin usage change
May 2009Paperclip sample app part 3: saving file attachments in a database BLOB column
Paperclip sample app part 2: downloading files through a controller
April 2009Paperclip sample app
Database storage for Paperclip: rewritten to use a single table
Filtering auto_complete pick lists – part 2: using named scopes
March 2009Filtering auto_complete pick lists
February 2009Database storage for Paperclip
January 2009Sample 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 2008Using TDD to write a Drupal module
Writing your first PHPUnit test in Drupal
Example Drupal module to use for TDD demonstration
November 2008The auto_complete plugin refactored to support repeated fields and named scopes
Testing is a lesson in humility
October 2008Modifying the auto_complete Plugin to Allow Repeated Fields
Autocomplete plugin doesn’t work for repeated fields
September 2008Problems Installing the Cutline Theme in Mephisto
Mephisto Setup on HostingRails.com
Why to use TDD with Drupal