Skip to Content

Howdy, and happy Sunday.

I’m Garrett. I’ve been designing and developing software on the web for a couple of decades with a focus on information architecture, HTML, CSS, accessibility, Ruby, and Rails.


Creating Custom Rails Generators

Rails generators can help remove significant friction from the process of spinning up new ideas, but you don’t have to limit yourself to the included generators. You can also create custom generators as long as you’re familiar with the available APIs and know where the speed bumps are.

Read Featured Post


Unified Configuration in Rails

Have you ever been working on a Rails application, needed to use a configuration value within your code and then couldn’t remember whether it’s a setting, secret, credential, or environment variable? If you haven’t, this won’t be interesting, but if you’re like me, it might be worth reading on.

Naming things needn’t be hard

A really handy site by Paul Robert Lloyd that provides a variety of tactics and considerations to help when naming something. He also shared the back story on how the site came about

Stop saying how simple things are in our docs!

Even being aware of this and actively trying to avoid it, I’m sure I still make this mistake all of the time.  

If someone’s been driven to Google something you’ve written, they’re stuck. Being stuck is, to one degree or another, upsetting and annoying. So try not to make them feel worse by telling them how straightforward they should be finding it. It gets in the way of them learning what you want them to learn.

Pretty sure it can’t be said enough. Hopefully this is a reminder that sticks and helps me remember to trim all that garbage out of my writing.

Classic rock, Mario Kart, and why we can't agree on Tailwind

Josh Collinsworth provides a very reasoned view of the Tailwind debate. And the MarioKart smart-steering analogy kind of nails it. As someone who originally loved the theory of Tailwind, using it in practice simply wasn’t for me. I’m simply more comfortable navigating CSS directly. Tailwind isn’t inherently bad, but it’s not my jam. 

Feature Flag Fails & Guardrails

I’m very bullish on the potential of feature flags, but I’d be remiss not acknowledging that they also introduce potential issues that require caution. I even got tripped up with a small oversight, but these are the kinds of mistakes that help reinforce that some basic guardrails can help. Fortunately, that’s precisely what we’ve been working on. 

Nuclear Anchored Sidenotes

Having spent a non-trivial amount of time tuning a less-than-perfect solution for sidenotes here on this site, I love Eric’s solution for anchored positioning of sidenotes. All of the techniques he’s shared from building The Effects of Nuclear Weapons have been some of my favorite pieces of writing about front-end development in the last couple of years. 

Rails 7.1 Beta 1

Lots of solid improvements to Rails coming down the pipe. While there are some larger improvements, the little improvements help make several common patterns less tedious. The authenticate_by method provides protection against common timing attacks. The generates_token_for declaration streamlines the process of managing single-use tokens. And has_secure_password can now automatically verify the current password when performing updates by providing a password_challenge attribute on updates. 

The Feature Flag Relay Race

We recently finished up a moderately-sized improvement to Flipper that likely would never have seen the light of day if we couldn’t have easily thrown it behind a feature flag. Being able to test drive it in production and work on iteratively helped ensure it kept moving along even though it was on the back burner in terms of priorities. 

How We Added Free Plans to Flipper Cloud Using Flipper

Wrote up some details about how we used feature flags to add the Free Cloud option (a large, far-reaching change) to Flipper over the course of about 20 pull requests and releases. 

…feature flags are about letting teams separate the process of releasing new features from the process of shipping code. When shipping code, frequent small changes reduce risk dramatically, but for features, we often need a large amount of code to change all at once. With these two elements at odds, de-coupling one from the other enables better workflows at every step of the process.

It helped maintain steady momentum at at time when none of us were working full-time on Flipper. We were able to catch smaller issues earlier, and once it was finished, we even flipped the switch on a Friday afternoon without any major problems.

Flipper 1.0 - Feature Flags for Ruby Apps

I’ve been working part time with John, Brandon, and Steve on Flipper Cloud the last few months, and then we decided to make it a full-time thing. We’ve been working on a ton of stuff to make feature flags more powerful and less painless to manage, and cutting 1.0 and offering a free plan for Cloud is just the first step. 

View All Entries