Recent Articles

> or browse articles by category
Feb 12 2026
thumbnail of the page

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
thumbnail of the page

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
thumbnail of the page

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
thumbnail of the page

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
Sep 23 2024
thumbnail of the page

Redis atomic writes

Concurrency bugs are usually invisible until they become expensive.
1 min > Read
Jul 05 2024
thumbnail of the page

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
thumbnail of the page

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
thumbnail of the page

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
thumbnail of the page

On Consuming Limited Resources

We started with an assumption that would later bite us: rewards were infinite.
3 mins > Read
Aug 15 2023
thumbnail of the page

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
thumbnail of the page

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
thumbnail of the page

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
thumbnail of the page

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
Apr 18 2022
thumbnail of the page

Proof of Concept: Go-like Implicit Interfaces with Ruby and Sorbet

The implicit interfaces in Golang are my favorite feature in the language. I think they make perf...
13 mins > Read
Dec 09 2021
thumbnail of the page

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
thumbnail of the page

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
thumbnail of the page

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
thumbnail of the page

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
Apr 04 2021
thumbnail of the page

Introducing Factory Bakery

Fixtures in Rails are the default way of filling the test database with random data. There are ot...
7 mins > Read
Feb 08 2021
thumbnail of the page

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
Dec 22 2020
thumbnail of the page

A Blog with "Boring" Technology

Earlier this year, I’ve decided that I want to write about my thoughts and experiences on my blog...
5 mins > Read