Gnarly Learnings from July 2023

News

Ethan Fertsch
#
Min Read
Published On
March 13, 2025
Updated On
February 5, 2026
Gnarly Learnings from July 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.

 

ComparisonValidator

Gone are the days when we need to write custom validators in Rails to determine if a start date begins before an end date! Back in 2021, the ComparisonValidator was added to Rails 7. While useful for solving the date comparison example above, that's not all it can do! It can also compare strings, and it allows for the flexibility of custom comparisons.

Active Storage Can Pre-Process Variants

Earlier this month Rails added a feature allowing Active Storage variants to be pre-processed up front by adding preprocessed: true to the variant definition. This makes the attachment ready to serve from the outset, rather than requiring the variant to be prepared/transformed on the fly.

JavaScript's findLast() and findLastIndex()

There are a few new Array functions included in ES2023, findLast() and findLastIndex(). The exciting piece is less about what these functions do (you can probably figure it out from the names) and more about the convenience that they provide. As a Rubyist by trade, I am used to a super developer-friendly experience when it comes to the readability, and accessibility of functions so it's great to see these being added to JavaScript - even if it took until 2023. 😉

Partial Renders in Rails

Partial rendering allows you to create a consistent template with different sections, for example "title", "body", and "footer."  Then the templates can define content for each of those sections without having to know anything about the layout of the root template.

React.FC Removed From create-react-app Base TypeScript Template

If you build React apps with TypeScript, you're certainly used to seeing and using the React.FC (or React.FunctionalComponent) type at the declaration of your functional components. The folks maintaining create-react-app have decided to remove this type from their template as they believe it is more harmful than helpful. I tend to agree, particularly around the implicit definition of children.

 

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
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.
News
Is Your Team Ready for AI? Here's How to Find Out in 2 Minutes

Is Your Team Ready for AI? Here's How to Find Out in 2 Minutes

Most teams aren't getting real value from AI tools — not because the tools don't work, but because their foundations aren't ready. Discover the five factors that predict AI success and take a free 2-minute assessment to find out where your team stands.
Previous
Next
See All Articles