~/ mohd
/ blog

Recent articles

or browse by category

/ all articles
Jul 2024

Have Checks: Always Include Checks for Important Functions

Earlier this year at Uptrip, we had a failure that stayed invisible for weeks.

[#DevOps][#Observability][#Monitoring] 4 mins min
May 2024

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...

[#Security][#OAuth][#Authentication] 4 mins min
Apr 2024

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...

[#postgresql][#sql][#database] 4 mins min
Nov 2023

On Consuming Limited Resources

We started with an assumption that would later bite us: rewards were infinite.

[#architecture][#product-engineering][#ux] 3 mins min
Aug 2023

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...

[#uuid][#distributed-systems][#architecture] 6 mins min
Jul 2023

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?...

[#uuid][#distributed-systems] 5 mins min
Dec 2022

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...

[#Ruby][#Rails][#Apple][#Oauth][#OmniAuth][#ReactNative] 6 mins min
Apr 2022

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...

[#Docker][#Node][#Containers][#Ruby][#Alpine] 2 mins min
← prev page 2 of 3 next →