By category
or view all articles
#Ruby 6 essays
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...
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 perfect sense to use with Object-O...
Introducing Factory Bakery
Fixtures in Rails are the default way of filling the test database with random data. There are other solutions like factory_bot...
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, Object-Oriented Programming ...
A Blog with "Boring" Technology
Earlier this year, I’ve decided that I want to write about my thoughts and experiences on my blog. However, it’s the end of the...
#Jekyll 1 essay
#Tailwind 2 essays
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 them! At some point in time, w...
A Blog with "Boring" Technology
Earlier this year, I’ve decided that I want to write about my thoughts and experiences on my blog. However, it’s the end of the...
#Other 1 essay
#OOP 4 essays
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 perfect sense to use with Object-O...
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 achieve object orientation according...
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 definition, and we gave examples in dy...
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, Object-Oriented Programming ...
#Fundamental 1 essay
#Messaging 1 essay
#Factory 1 essay
#Testing 1 essay
#Rails 2 essays
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...
Introducing Factory Bakery
Fixtures in Rails are the default way of filling the test database with random data. There are other solutions like factory_bot...
#Gems 1 essay
#Work 1 essay
#Life 1 essay
#Fundamentals 2 essays
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 achieve object orientation according...
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 definition, and we gave examples in dy...
#Kotlin 1 essay
#Swift 1 essay
#Go 3 essays
Announcing config-sync
I built a small tool called config-sync to solve a problem I kept hitting: my config files are scattered across machines, and t...
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 perfect sense to use with Object-O...
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 achieve object orientation according...
#Crystal 1 essay
#Vite 1 essay
#JIT 1 essay
#JavaScript 1 essay
#HMR 1 essay
#Sorbet 1 essay
#Docker 1 essay
#Node 1 essay
#Containers 1 essay
#Alpine 1 essay
#Apple 1 essay
#Oauth 1 essay
#OmniAuth 1 essay
#ReactNative 1 essay
#uuid 2 essays
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?...
#distributed-systems 2 essays
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?...
#architecture 2 essays
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...
#product-engineering 1 essay
#ux 1 essay
#postgresql 1 essay
#sql 1 essay
#database 1 essay
#Security 2 essays
Security: Consider CWE and CAPEC
One security habit that improved my engineering decisions: before shipping a feature, I quickly check related CWE and CAPEC ent...
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...
#OAuth 2 essays
Mobile Apps: Connectivity Loss When In Background
One mobile caveat that surprised me: when the app goes to background, network behavior can become unreliable, and right after r...
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...
#Authentication 1 essay
#DevOps 1 essay
#Observability 1 essay
#Monitoring 1 essay
#Redis 1 essay
#Concurrency 1 essay
#Backend 2 essays
Security: Consider CWE and CAPEC
One security habit that improved my engineering decisions: before shipping a feature, I quickly check related CWE and CAPEC ent...
Redis atomic writes
Concurrency bugs are usually invisible until they become expensive.
#Communication 1 essay
#Incident Management 1 essay
#Career 1 essay
#Mobile 1 essay
#React Native 1 essay
#Engineering 1 essay
#Product Update 1 essay
#Tooling 3 essays
AI Chronicles: Optimizing Code Review Layer Generation WIP
AI agents generate thousands lines of code in no time, the bottleneck is code review. AI should also boost code review process.
Announcing config-sync
I built a small tool called config-sync to solve a problem I kept hitting: my config files are scattered across machines, and t...
Introducing go:bangs: A search engine approach for golinks
Most go-links solutions push teams toward browser extensions or fragile custom setups.