Gnarly Learnings from May 2023

Engineering Insights

Ethan Fertsch
#
Min Read
Published On
March 13, 2025
Updated On
February 5, 2026
Gnarly Learnings from May 2023

At The Gnar we are always reading, watching, and listening in order to keep our skills sharp and our perspectives fresh. Here are some of the resources we learned from this month.

Automatic Fetch Request Deduping with Next.js

NextJS focuses a lot on optimization. So it was no surprise to learn about fetch request deduping. When using fetch with Next, any GET requests with the same input will be cached, so that if there are multiple requests for the same resource during a render cycle or between page refreshes, Next will not make the HTTP request again.

Variable Fonts in Google Fonts

I am always deliberating over which and how many font weights and variants to import from Google Fonts. I want them all, but am I willing to accept the file size overhead? Luckily Google has come up with a significant improvement to web fonts: variable fonts. These fonts allow for a single font to be selected, and that font can be adjusted by weight, slant, and more. Read more about variable fonts.

Active Record's rewhere

It now takes two hands to count the number of years I have been working with Ruby on Rails and I still regularly discover new concepts and methods. This month, it was rewhere, an Active Record method that allows you to change a previously set where condition for an attribute. If you're thinking "Hey…that sounds an awful lot like the behavior of unscope" you'd be right! That's because it is a shorthand for unscope(where: conditions.keys).where(conditions).

Cross-Browser Support for Import Maps

A modern choice for including and reusing JavaScript code in web apps is ES modules. There are a variety of ways to implement ES modules but import maps have been gaining popularity in recent years. Popularity, in this case, equates to industry adoption. For example, Rails 7 (released in 2021) allowed us to break away from the Node.js and webpack bundling strategy and leverage import maps instead. Now, import maps are compatible across the three major browser engines which will make developing with them much easier.

Migration Method: create_join_table

I was late to this party! When creating a join table in Rails, there's no need to pass id: false to a typical table creation method. Instead, just reach for create_join_table.

Contributors:

 

Learn more about how The Gnar builds software.

Author headshot
Written by
Ethan Fertsch
Software Engineer & Product Manager
, The Gnar Company

Ethan Fertsch is a software engineer and certified Scrum Master at The Gnar Company with nearly a decade of full-stack engineering experience. He specializes in delivering production-ready software across industries while serving as both product manager and engineer.

Related Insights

See All Articles
Engineering Insights
10 Ways to Get Better Results From Claude Code

10 Ways to Get Better Results From Claude Code

A recent Hacker News thread turned into a goldmine of practical advice from developers using Claude Code daily. After reading through hundreds of comments, a clear pattern emerged: the developers getting the best results aren't writing better prompts — they're building better workflows around the tool.
Engineering Insights
Anthropic Dropped OpenClaw Support. Here's How I Replaced It With Claude Code.

Anthropic Dropped OpenClaw Support. Here's How I Replaced It With Claude Code.

Anthropic's TOS change killed OpenClaw overnight, taking businesses built on the ecosystem with it. But for end users, Claude Code's new channels feature offers a viable path forward.
Product Insights
We Turned a Phone Call Into a Working Product in 48 Hours. Here's Exactly How.

We Turned a Phone Call Into a Working Product in 48 Hours. Here's Exactly How.

Watch what happens when a one-hour phone call becomes a working application in 48 hours. We walk through exactly how Context-Driven Development turns a single conversation into a competitor analysis, feature prioritization, full PRD, and production-grade software with Stripe billing, user accounts, and an admin dashboard—using AI-assisted agentic development with a human architect in the loop.
Previous
Next
See All Articles