Recent articles
or browse by category
Have Checks: Always Include Checks for Important Functions
Earlier this year at Uptrip, we had a failure that stayed invisible for weeks.
OAuth and Email Verification
A user signs up for your app with Google. You see their email. You assume it’s verified—why wouldn’t you? They just authenticat...
The NULL Trap: When WHERE <> Doesn't Do What You Think
Earlier this year, we had a bug that slipped through code review, made it to production, and took us a day to diagnose. The que...
On Consuming Limited Resources
We started with an assumption that would later bite us: rewards were infinite.
On Generating Unique IDs, Part 2
In Part 1, we talked about how UUID assumptions can crack at scale. The probabilistic guarantees that feel comforting in theory...
On Generating Unique IDs
We reach for UUIDs as the default solution for generating unique identifiers. Need a primary key? UUID. Need a temporary token?...
Make Apple OAuth Work with React Native and Rails OmniAuth
I needed to add Apple Sign In to a React Native app with a Rails backend. The stack seemed straightforward enough: React Native...
Docker Multistage Images: Add Node Support to a Non-Node App Container
You should’ve been in a situation where you need nodejs and yarn in your package for building the front end, but you don’t want...