I’m Nick Babcock, a software engineer with 10+ years of fullstack and DevOps experience earned as the principal developer on flagship products.

You might know me from my open source work, or from one of my many articles covering topics from authoring Wasm libraries to intricacies in Rust to edge compute to React component design.


Keeping up with the fronted Joneses: streaming server side rendering

Streaming server side rendering. Edge compute. Web app architecture advancements are making classic SPAs appear long in the tooth. While it can be irritating to try and keep up with these advancements, they bring tangible benefits.

It’s time to say goodbye Next.js and hello Remix.

Read more...


Cloudflare's forbidden Steam

Cloudflare workers face 403 forbidden errors with Steam’s OpenID. Is Steam detecting Cloudflare via IP addresses or is there a difference in what requests originating from Cloudflare look like?

Read more...


The hidden nuance of the JavaScript File API

Did you know that the files originating from a file input don’t have all their data buffered into memory? Seems intuitive that this is how JS would work, otherwise web sites operating over files would be terribly memory inefficient.

Don’t let this efficient File deceive you.

Read more...


SQL reduction: ask for forgiveness

Be on the lookout for consolidating and reducing the number of SQL statements to decrease the surface area for logical bugs and improve performance. One technique is to restructure application logic to ask the database for forgiveness: assume the happy path and roll back after determining the statement touched unintended rows. Your database abstraction may be getting in the way.

Read more...


Next.js on Cloudflare: a gem with rough edges

In a parallel universe, Vercel’s pricing would be more transparent, and I would have never checked out Cloudflare. But it’s not, and I did. Despite rough edges, Cloudflare undoubtedly has the edge when it comes to value and performance.

Read more...


The accidental journey to TrueNAS Scale

Last month I found myself in the unenviable position of having just executed the most dangerous command on the boot drive of a NAS. At first there was panic, but I decided to look on the bright side and take this opportunity for a fresh start with TrueNAS Scale.

Read more...


Dot or Not? A type safety story about file extensions

Should programmers expect file extensions to start with a dot or not? Or is there a way to approach the problem such that the answer doesn’t matter, as long as the given abstraction makes intent explicit and foolproof. See how tagged and opaque types fit nicely as a solution.

Read more...


Practical responsive image sprites for the web

An image sprite sheet is a collection of images combined into one, so that browsers don’t need to request each image separately.

How does one create a sprite sheet?

And how can we measure any potential benefit?

What problems can appear and how do we work around them?

Read more...


Pitfalls of React Query

React Query is a staple in async state and data fetching management. In addition to saving me from reimplementing similar caching mechanisms and fine grained updates, it was also the first library that solidified the concept of client vs server state, and how they are fundamentally different. Nothing is without tradeoffs, so I wanted to shed light on some potential pitfalls, not to disparage React Query usage, but to increase awareness.

Read more...


You might not need a React animation library: transitions

While React animation libraries have seductive landing pages and can be powerful, consider whether you truly need one. These libraries can enhance user experience, but sometimes the simplest solution is the best one.

I find that my animation needs are met with just CSS, so let’s take a tour at of ways one can add effects to their web application.

Read more...