Billy Okeyo

Writing

How software actually works. The unglamorous version.

Essays on retries, transactions, architecture, and the browser. Full pieces live on billyokeyo.dev, where I go on for longer than a card allows.

Frontend · Beyond the UI

Client-Side Rendering vs Server-Side Rendering Explained

Where should your UI be built? A clear look at CSR and SSR: what they actually do, when each is the right choice, and why the distinction still matters.

28 Aug 202612 minRead

Frontend · Beyond the UI

The JavaScript Event Loop Explained

What happens when JavaScript takes over the browser’s main thread, and why a button click can freeze an entire interface.

20 Aug 202611 minRead

Frontend · Beyond the UI

Hydration Explained

How server-rendered HTML becomes an interactive application, what hydration actually attaches, and where the common failures come from.

14 Aug 202610 minRead

Frontend · Beyond the UI

Reflow and Repaint Explained

Why layout and paint are expensive, how the browser decides to redo them, and what that means for interfaces that feel slow.

8 Aug 20269 minRead

Frontend · Beyond the UI

The Browser Rendering Pipeline Explained

From HTML and CSS to pixels on screen: how browsers parse, style, layout, paint, and composite a page.

2 Aug 202613 minRead

Frontend · Beyond the UI

State Management Explained

What state actually is, where it should live, and why most state problems are design problems rather than library problems.

28 Jul 202611 minRead

Architecture · Beyond CRUD

Event-Driven Architecture Explained

How independent services communicate by reacting to events, and how idempotency, outbox, sagas, and CQRS fit together.

22 Jul 202614 minRead

Architecture · Beyond CRUD

CQRS Explained

Why reads and writes pull a model in opposite directions, and when separating them is worth the extra moving parts.

18 Jul 202612 minRead

Distributed Systems · Beyond CRUD

Saga Pattern Explained

Managing long-running business processes across services without pretending distributed transactions are local ones.

15 Jul 202613 minRead

Distributed Systems · Beyond CRUD

The Outbox Pattern Explained

Publishing events without losing data: how to solve the dual-write problem by committing the event with the business data.

12 Jul 202612 minRead

Distributed Systems · Beyond CRUD

Distributed Locks Explained

How multiple servers agree that only one of them may perform a particular operation, and what locks cannot save you from.

9 Jul 202611 minRead

Databases · Beyond CRUD

Database Isolation Levels Explained

Why two transactions can see different data, and how isolation levels trade consistency for concurrency.

6 Jul 202612 minRead

Databases · Beyond CRUD

Database Transactions Explained

Keeping data correct when things go wrong: atomicity, rollback, and what transactions do not solve.

3 Jul 202611 minRead

Backend · Beyond CRUD

Race Conditions Explained

The concurrency bug every backend developer should understand, and why it only shows up in production.

28 Jun 202612 minRead

APIs · Beyond CRUD

Idempotency Explained

Building APIs that survive retries: why duplicate requests are normal, and how to keep side effects from happening twice.

25 Jun 202613 minRead

APIs · Beyond CRUD

API Versioning Explained

How to evolve a public interface without breaking the clients that already depend on it.

18 Jun 202610 minRead