The Rubby Game v0.1I just finished playing the first iteration of a board game I created about building Ruby on Rails applications. It was actually kind of fun!July 18, 2024
System tests haven't failedWhat's with all the buzz about system tests in the Ruby on Rails community right now?June 18, 2024
In Defence of GerritI'm not saying we should all use Gerrit, but I am saying that using Gerrit early in my career made me a much better programmer.March 13, 2024
Goodbye, Pivotal TrackerPivotal Tracker is shutting down. It might not have been perfect, but I'll still miss it.March 11, 2024
The Most Customizable eCommerce PlatformI often tell people that Solidus is the most customizable eCommerce platform on the market. I've broken down what that means and how it achieves that.February 08, 2024
The Null Object Pattern and RubyObject-oriented programmers have a solution to null propagation, the null object pattern, but is it a good fit for Ruby and other dynamic languages?January 24, 2024
A Printable Diagonal TwixT BoardFor fun, I used Phlex to generate a printable board for playing an obscure board game that I used to play more than a decade ago.January 16, 2024
Don’t assert return typesHave you ever seen a test in Ruby (or any dynamic language) that tested the type of a method? I’ve always hated those tests, but never really explored why.January 09, 2024
TDD on the Shoulders of GiantsWhat do we Rubyists stand to learn from Nat Pryce and Steve Freeman's Growing Object-Oriented Software, Guided by tests? I break down what my team learned from the book about how to make writing tests a more valuable exercise.December 18, 2023
What if service objects were just Procs?Service objects, a popular design pattern in the Ruby on Rails community, are analogous to higher-order functions, and we can demonstrate that more clearly by refactoring one into a Proc without changing its API.August 03, 2023
Doing TCR without the RI recently simplified the workflow where I'm using git as my test-runner, essentially doing TCR without the R.July 16, 2023
Is ActivityPub for the masses?Should we be worried about the impact of Threads.net on the Fediverse? I summarize my thoughts on the possible outcomes and why I think we should be cautiously hopeful.July 14, 2023
Adding Parameterized Layouts to phlex-railsOut of the box, phlex-rails currently doesn't support parameterized layouts. I found a quick way to hack support in.April 16, 2023
I've got some plans for 2023This year was a strange year, so I've been thinking about where to put my energy to distract from the ongoing collapse of civilization as we know it (or whatever.)December 20, 2022
I just learned two interesting Ruby edge-case behavioursKevin Newton's explanations of how YARV works alerted me to a couple of edge cases in Ruby that I'd never thought about.December 07, 2022
This article was written by ChatGPTI instructed ChatGPT to criticize itself and include a Ghostbusters reference for good measure.December 05, 2022
Here are my TDD on the Shoulders of Giants talk slidesRubyConf Mini is over and my talk went well. Once the videos are posted, I'll do a quick write up about the talk, but for now here are the slides.November 19, 2022
An update on bundles in SolidusBundles and kits are a popular add-on feature of Solidus. My goals is to give them first-class support and remove the gotchas that can make them a bit tricky to get right.August 04, 2022
It's almost DecemberWhat happened in 2021? What's going to happen in 2022? I honestly have no idea, but I wrote about it anyway.November 30, 2021
Doing AgileWhat is Agile software development? How do we do it? In my experience, there are far more organizations following rigid software development frameworks than there are who are meaningfully Agile.November 23, 2021
Suit ReconfigurationI rebuilt my dotfiles and decided to write some fiction about it.September 07, 2021
What I learned from 5 days of solving Advent of Code problems using TCR in RubyI used test && commit || revert to do the first 5 days of this year's Advent of Code. Here's what I learned along the way.December 05, 2020
There's a trick to using Hash.newRuby's Hash class supports default values, but there's an edge case where using this feature produces some unexpected results. Python developers should know what I'm talking about.April 29, 2020
Code to this, pleaseI made another playlist that you can listen to while you program computers, please.April 24, 2020
How I reimplemented my long lost keybindings on MacOSThere's one feature that I miss more than any other from my Linux desktop set up, the ability to switch directly to my most used applications with a single keypress. I've finally figured out how to get the feature on Mac.April 21, 2020
Here comes 20202019 is almost over, but there's still time left! Here's a little quick update on what I'm doing in December.December 02, 2019
Recapping the first day of RubyConf 2019Alistair, Amy and I were in Nashville for RubyConf to hear about what's next for the Ruby community.November 18, 2019
How to use Hash.new with a blockThe default values of Ruby's hashes can be made completely dynamic. Let's look at some dogs (to understand how we can use this feature.)October 03, 2019
A whole world of Ruby codeExposing yourself to more code is one of the most important things you can do to improve your development skills.August 19, 2019
A blog series on software designI've just finished Ousterhout's book, A Philosophy of Software Design and want to share what I think Rubyists can learn from it.August 14, 2019
Relax and Focus: The PlaylistI've been exploring different styles of music that complement sustained focus a little better and I've made a playlist with that in mind.August 06, 2019
The Rig: New Year's Eve 2018 EditionI'm closing out the year with an updated rundown of my hardware setup.December 31, 2018