Issue № 032MAY 2026

Thinking out loud
about shipping
software.

Field notes from a decade of fullstack work across banking, healthcare, and global consumer platforms. Pinterest, Squarespace, now Zoom. Written between deploys.

№ 032
MAY 09, 2026

Reverse Proxy Demystified: Nginx, Caddy, and Traefik in Practice

A practical guide to Reverse Proxies: understand the differences between Nginx, Caddy, and Traefik, with configuration examples for SSL, caching, load balancing, and more.

ARCHITECTURE · 8 MINREAD →
№ 031
MAY 03, 2026

Single Tenant vs Multi Tenant: Which Architecture Should You Choose for Your SaaS?

Compare Single Tenant and Multi Tenant in depth: costs, isolation, compliance, performance. Discover which model fits your scenario.

ARCHITECTURE · 8 MINREAD →
№ 030
APR 30, 2026

Fault Tolerance: How to Build Systems That Survive Failures

Circuit breakers, retries, timeouts, fallbacks: the essential patterns for building resilient systems that keep working when everything goes wrong.

ARCHITECTURE · 7 MINREAD →
№ 029
APR 27, 2026

Load Balancing: How to Distribute Traffic and Scale Your Application

Understand load balancing algorithms, compare Nginx vs HAProxy vs cloud load balancers, and learn how to scale your application horizontally.

ARCHITECTURE · 7 MINREAD →
№ 028
APR 26, 2026

Session Tokens: The Digital Badge That Authenticates Every Request

From opaque tokens to JWT with refresh token rotation, understand how session tokens work across backend, database, and frontend -- with full implementation.

SECURITY · 12 MINREAD →
№ 027
APR 24, 2026

Async Processing: How to Stop Blocking Your API with Heavy Tasks

Learn how to decouple heavy tasks from your API using queues, workers, and event-driven architecture. Practical examples with BullMQ, Redis, and Node.js.

ARCHITECTURE · 8 MINREAD →
№ 026
APR 21, 2026

Apache Kafka: What You Need to Know Before Adopting Event Streaming

A practical guide to Apache Kafka: when to use it, how it works under the hood, and how to implement producers and consumers in Node.js.

ARCHITECTURE · 7 MINREAD →
№ 025
APR 18, 2026

RPC in Practice: How to Make Your Services Talk Without the Headaches

Understand RPC (Remote Procedure Call), compare gRPC, tRPC, and JSON-RPC, and discover when to use each one in your microservices architecture.

ARCHITECTURE · 7 MINREAD →
№ 024
APR 15, 2026

Idempotency: The Technique That Separates Amateur Systems from Production-Grade Ones

Understand why idempotency is essential for distributed systems and learn how to implement idempotent operations with practical examples in Node.js and SQL.

ARCHITECTURE · 9 MINREAD →
№ 023
MAR 20, 2026

Data Normalization on the Frontend: Why Your State Management Will Thank You

Duplicated data in state causes bugs and slowness. Learn how to normalize data like a relational database and simplify updates, caching, and real-time sync.

JAVASCRIPT · 4 MINREAD →
№ 022
MAR 20, 2026

Polling and Long Polling: when WebSocket is overkill

Understand Short Polling and Long Polling, how to implement each from backend to frontend, and when they're the best choice over WebSocket.

NETWORKING · 24 MINREAD →
№ 021
FEB 20, 2026

WebSockets in practice: from handshake to production deploy

Complete guide to WebSockets: how they work, implementation with Socket.IO and ws, scaling with Redis, and when to actually use them.

NETWORKING · 38 MINREAD →
№ 020
FEB 18, 2026

Database normalization: how far to go (and when to stop)

Understand normal forms (1NF through 5NF), why to normalize, when to denormalize, and how to make practical decisions about database schema design.

DATABASE · 44 MINREAD →
№ 019
FEB 17, 2026

Rate Limiting: How to protect your API without losing your mind

Rate limiting algorithms (Token Bucket, Sliding Window), implementations with Redis, Express and Nginx, and how to handle 429s on the frontend.

SECURITY · 25 MINREAD →
№ 018
FEB 16, 2026

Redis: Way more than just a cache

Redis beyond the basics: data structures, pub/sub, rate limiting, queues, sessions, leaderboards and how to use it in production.

DATABASE · 2 MINREAD →
№ 017
JAN 17, 2026

Why Your First Design System Will Fail (And That's Okay)

Your first Design System will fail—and that's okay. Learn why perfection is impossible, how to iterate healthily, and why continuous improvement beats upfront planning.

PERFORMANCE · 4 MINREAD →
№ 016
JAN 16, 2026

Atomic Design in Practice: From Atoms to Pages

Build interfaces like chemists build molecules. Learn Brad Frost's 5-level methodology—atoms, molecules, organisms, templates, pages—with practical React examples.

FRONTEND · 7 MINREAD →
№ 015
JAN 15, 2026

Pixel Perfect Forever: Visual Regression Testing

Catch unintended CSS changes before production. Automate visual comparisons with Playwright, Chromatic, or BackstopJS and build confidence to refactor without fear.

TESTING · 6 MINREAD →
№ 014
JAN 14, 2026

Performance Budget: The Financial Discipline of Frontend

Performance Budget: Set page weight and timing limits like a financial budget. Learn to measure with Lighthouse, automate checks in CI/CD, and make conscious decisions about every KB you add.

PERFORMANCE · 5 MINREAD →
№ 013
JAN 13, 2026

Goodbye Waterfall: The Workflow That Puts Frontend at the Center

Learn why waterfall fails for frontend teams and how a parallel workflow with browser prototyping, CI/CD automation, and cross-discipline collaboration delivers faster, more predictable results.

PORTFOLIO · 4 MINREAD →
№ 012
JAN 12, 2026

How Red Hat Refactored Their Design System Without Stopping the Site

It was an ordinary afternoon when someone asked a seemingly simple question: "How modular is our design? We'd like to share small parts of the theme with other company sites.” The honest answer? Nervous laughter.

CASE-STUDY · 4 MINREAD →
№ 011
JAN 11, 2026

Do You Really Need a JavaScript Framework?

When a new project starts, the first question is usually: "React or Vue? Next or Nuxt? What about Svelte?”. Rarely does anyone ask: "Do we need a framework?”.

JAVASCRIPT · 4 MINREAD →
№ 010
JAN 10, 2026

Specificity Wars: Why Your CSS Becomes a Mess and How to Fix It

CSS stands for "Cascading Style Sheets". The word "cascading" is beautiful, but hides a trap: styles overlap in not-always-obvious ways.

FRONTEND · 4 MINREAD →
№ 009
JAN 10, 2026

Style Guide-Driven Development: Documentation That Lives in the Code

Stop writing documentation that lies. Build living style guides with Storybook where docs update automatically with code. Includes setup, MDX, addons, and CI deployment.

FRONTEND · 7 MINREAD →
№ 008
JAN 10, 2026

Unit Testing in Frontend: The "Do One Thing Well" Mantra

Write testable frontend code by breaking functions into small, single-purpose units. Learn TDD, modern tools like Vitest, realistic coverage targets, and how to test React/Vue components.

TESTING · 5 MINREAD →
№ 007
JAN 09, 2026

From "Div Soup" to Modular Markup: The Evolution of HTML

In the old web publishing world, it was common for the frontend team to have **zero control** over markup. HTML was generated by the CMS, by backend developers who had already moved on to other tasks.

FRONTEND · 5 MINREAD →
№ 006
JAN 08, 2026

The 4 Pillars That Support a Scalable Design System

Every building needs a solid foundation, four walls, and a roof. Without these elements, it's not a building — it's a pile of materials waiting to collapse.

ARCHITECTURE · 4 MINREAD →
№ 005
JAN 07, 2026

What Does a Frontend Architect Do? Beyond Writing Code

Have you ever wondered what separates a senior frontend developer from a Frontend Architect? The answer might seem obvious at first — more experience, more responsibilities — but the reality is far more interesting.

CAREER · 3 MINREAD →
№ 004
DEC 11, 2025

Living with JSX

JSX is quite straightforward: It will take 1 minute to know about this is an awesome alternative to templates.

REACT · 4 MINREAD →
№ 003
DEC 11, 2025

Get window size in pure CSS

We all know that CSS it has become even harder nowadays. You wouldn't believe it, but CSS can define properties, do the math, and even directly get the window size!

CSS · 1 MINREAD →
№ 002
DEC 11, 2025

Web server from scratch with NodeJS Streams

In this post, I want to go back to the basics and build a simple web server from scratch with NodeJS. In doing so, we will review the structure of HTTP requests and responses and get an introduction to Node's Stream API

SCRATCH · 14 MINREAD →
№ 001
DEC 11, 2025

Building a vector space indexing engine

I've always wanted to code a search engine from scratch and discovered that it's pretty simple. Here is an example indexer I coded using Python. The first thing we need to do is have a way to take the documents we want to search on.

HANDS-ON · 11 MINREAD →

The author

Thiago Saraiva, fullstack engineer in São Paulo. A decade between banking, healthcare, and consumer platforms. Pinterest, Squarespace, now Zoom.

Currently

Building at Zoom.

About the author