Writing · 14 articles

Notes from a working engineer.

Essays on systems, architecture, and the boring slow decisions that decide whether a team ships in March or July.

Featured

ReactJun 14, 2026 · 9 min read

React Code Splitting: Why dynamic import and Suspense Matter

Code splitting is not just about a smaller bundle. It is about a page that becomes interactive faster. Here is how dynamic import, React.lazy and Suspense improve the user experience, and the traps that quietly make it worse.

Archive

May 30, 2026
Streaming AI Responses with SSE
SSE is the foundation of any dynamic AI interface. Here is how to wire it correctly in Next.js App Router, stream reasoning models, and extend the pattern to structured outputs with Zod.
7 min
May 22, 2026
How to Fix Cumulative Layout Shift (CLS) in Next.js
CLS is the Core Web Vital where Lighthouse regularly lies to you. Here is how to find the real causes of layout instability and fix them in Next.js: images, fonts, dynamic content, and animations.
8 min
May 15, 2026
How to Reduce Total Blocking Time (TBT) in Next.js
TBT is 30% of your Lighthouse score and the hardest metric to diagnose. Here is how to find long tasks, audit your bundle, and fix the main causes in Next.js.
10 min
May 11, 2026
How to Improve Largest Contentful Paint (LCP) in Next.js
LCP is 25% of your Lighthouse score. Unlike FCP, there is no single fix. Here is how to diagnose it and improve it systematically in Next.js.
8 min
Apr 2, 2026
How to Improve First Contentful Paint (FCP) in Next.js
FCP is only 10% of your Lighthouse score, but it is the first thing your users experience. Here is what blocks it and how to fix it in Next.js.
7 min
Mar 29, 2026
What is Lighthouse Performance, Really?
Every front-end dev has seen that score. Few actually know what's behind it. Here is a clear breakdown of the 5 metrics, how the score is calculated, and where to start looking.
6 min
Mar 13, 2026
Knower: One Memory Layer for Every AI Tool
We built Knower at the Mistral Online Hackathon: a local, portable memory service that lets any AI agent share the same context, regardless of which tool you're using.
6 min
Feb 6, 2026
I Built a SaaS Boilerplate for Builders
How and why I built an open-source Next.js SaaS boilerplate with tRPC, Drizzle, Better-Auth, and PlateJS. A production-ready foundation for builders who want to ship fast.
7 min
Jan 18, 2026
Deploying Docker Compose with Dokploy: A Self-Hosted PaaS Guide
A direct guide to installing Dokploy on a VPS and deploying a production-ready Docker Compose application.
6 min
Jan 10, 2026
Production-Ready Drizzle: Bundling Migrations with Docker and Next.js
Here is how to bundle your migration scripts with esbuild for a robust, self-contained Docker image.
5 min
Dec 15, 2025
Refactoring Django: Moving from GraphQL to a Layered REST Architecture
Why we ditched Graphene for a Service-Repository pattern in Django Rest Framework.
10 min
Dec 10, 2025
React Activity Component: Prioritize What Matters
How to use React's new Activity component to preserve state.
4 min
Dec 7, 2025
Centralizing Logs with PLG Stack
How we moved from SSH-based debugging to a centralized PLG stack using Grafana Alloy and Loki.
8 min