Recent Articles
Feb 12 2026
Announcing config-sync
I built a small tool called config-sync to solve a problem I kept hitting: my config files are sc...
1 min > Read
Jan 30 2026
Introducing go:bangs: A search engine approach for golinks
Most go-links solutions push teams toward browser extensions or fragile custom setups.
1 min > Read
Apr 17 2025
Security: Consider CWE and CAPEC
One security habit that improved my engineering decisions: before shipping a feature, I quickly c...
1 min > Read
Jan 20 2025
Mobile Apps: Connectivity Loss When In Background
One mobile caveat that surprised me: when the app goes to background, network behavior can become...
1 min > Read
Oct 19 2024
Communication: Always Include Incident Impact On Business
When an incident happens, most engineers rush to explain the technical details.
1 min > Read
Sep 23 2024
Redis atomic writes
Concurrency bugs are usually invisible until they become expensive.
1 min > Read
Jul 05 2024
Have Checks: Always Include Checks for Important Functions
Earlier this year at Uptrip, we had a failure that stayed invisible for weeks.
4 mins > Read
May 01 2024
OAuth and Email Verification
A user signs up for your app with Google. You see their email. You assume it’s verified—why would...
4 mins > Read
Apr 15 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...
4 mins > Read
Nov 05 2023
On Consuming Limited Resources
We started with an assumption that would later bite us: rewards were infinite.
3 mins > Read
Aug 15 2023
On Generating Unique IDs, Part 2
In Part 1, we talked about how UUID assumptions can crack at scale. The probabilistic guarantees ...
6 mins > Read
Jul 12 2023
On Generating Unique IDs
We reach for UUIDs as the default solution for generating unique identifiers. Need a primary key?...
5 mins > Read
Dec 03 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 straig...
6 mins > Read
Apr 23 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...
2 mins > Read
Dec 09 2021
Patching Vite HMR To Work With Tailwind JIT
During my work at Learnlife, we use React + Vite + Tailwind JIT in our frontend, because we love ...
15 mins > Read
Jul 04 2021
OOP Untangled Part 3: Other Languages Worth Mentioning
In the previous articles, we used some well-known languages that were known for the OOP to achiev...
5 mins > Read
May 16 2021
OOP Untangled Part 2: Object-Orientation and Statically Typed Languages
In the first part, we tried to understand the Object-Orientation according to Alan Kay’s definiti...
6 mins > Read
Apr 08 2021
On Working Hard And Workaholism
Work more! Work more! You should’ve heard somebody says that before. It might look like good advi...
3 mins > Read
Feb 08 2021
OOP Untangled Part 1: Object-Orientation and Dynamic Languages
If you are a programmer, it means that you are already familiar with the term OOP; if you are not...
8 mins > Read