Jesse Waites
Jesse Waites, Polyglot Software Developer, Creative Technologist, Hiker, Rock & Ice Climber
Home About Blog Portfolio Contact AI

Blog

Beware of stringify_keys in Rails 8+!

Rails 8 introduced a subtle but significant change to the stringify_keys method in ActiveSupport. Previously, stringify_keys only converted symbol keys in a hash to strings, leaving other key types such as integers untouched. Starting with Rails 8, the method converts all keys to strings, including numeric and other non-symbol keys. While this change simplifies behavior...

Domain Names For Sale

If you ended up on this page, you are either reading my technical blog or have been forwarded here via a domain name that I own...

Hire Ruby On Rails Developer in Boston

As a professional Ruby on Rails developer based in Boston, I bring over a decade of professional experience building, scaling, and modernizing web and mobile applications. My work has consistently centered on solving complex technical challenges while keeping products elegant, maintainable, and fast. In my current role, I help lead the modernization of a mission-critical...

Exploring the Builder-to-Proc Pattern in Ruby

One of my favorite Ruby idioms is the Builder-to-Proc pattern. It takes advantage of Ruby’s ability to convert objects into callables through to_proc, letting you pass a class directly to map and have it act like a builder for each element. Imagine you are working with raw data from a third-party API in JSON or...

How To Remove Empty Turbo Frame Space

I recently ran into an annoying layout quirk while building an ‘infinite-scroll' type interface. The page loads data lazily as you scroll through a long list of posts, which works beautifully when there is indeed data to display. But in the scenario where there are no posts, the empty Turbo Frame was still claiming space...

Using UUIDs as primary keys in Rails apps

If you are using UUIDs as primary keys in your Rails application, you may find it tedious to specify them in every single migration. Fortunately, Rails provides a clean way to set this configuration globally so that all new tables use UUIDs automatically. By adding a simple generator configuration to your config/application.rb, Rails will handle...

I turned the Rails 8 release notes into a podcast with AI

This weekend I explored NotebookLM, an AI-powered research assistant designed to work directly with your own materials. By uploading documents, PDFs, links, or videos, you can generate tailored outputs such as summaries, study guides, audio overviews, or even structured mind maps. To test it out, I chose the Rails 8 release notes, a resource that’s...

How to Rate Limit Your Ruby On Rails Controllers

Rails 8 introduced a new rate_limit feature for controllers, which makes throttling requests much easier to implement and manage than that was back in the day. Instead of relying on middleware or third-party gems, you can now declare rate limits directly in your controllers and centralize how you respond when clients exceed them 🙂 A...

Dubugging UI Hover States The Easy Way

Inspecting hover-driven interfaces in DevTools can sometimes be very tricky. Many sites use JavaScript to control hover states, which means the usual “Force state > :hover” option doesn’t always work. The moment you move your mouse away, the element disappears, making it difficult to examine its structure or styles. A simple workaround is to briefly...

Supporting Right-to-Left (RTL) Languages with Tailwind CSS

Designing for global audiences means thinking beyond left-to-right (LTR) text. Many languages, such as Arabic and Hebrew, use right-to-left (RTL) writing. Supporting RTL is crucial if you want your app or site to feel natural to those users. The CSS direction property controls the direction of text, table layout, and even grid columns. By default, MDN recommends...

48 total posts — showing 11–20