Skip to content
Huỳnh Tiến Dĩ

Frontend, systems and AI, written from production experience.

In-depth articles on React, Next.js, performance, architecture and LLM integration. Every post comes with working code, the trade-offs and the mistakes I made along the way, so you can make the call faster in your own codebase.

Writing rhythm by monthSystems & architectureFrontend & UIPerformanceTooling & workflowLearning & career
  1. 2 posts · Jan 2025
    '25
  2. 2 posts · Feb 2025
  3. 2 posts · Mar 2025
  4. 2 posts · Apr 2025
  5. 2 posts · May 2025
  6. 1 post · Jun 2025
  7. 2 posts · Jul 2025
  8. 2 posts · Aug 2025
  9. 2 posts · Sep 2025
  10. 2 posts · Oct 2025
  11. 2 posts · Nov 2025
  12. 2 posts · Dec 2025
  13. 2 posts · Jan 2026
    '26
  14. 4 posts · Feb 2026
  15. 4 posts · Mar 2026
  16. 3 posts · Apr 2026
  17. 3 posts · May 2026
  18. 3 posts · Jun 2026
  19. 3 posts · Jul 2026
  20. 5 posts · Aug 2026
  21. 14 posts · Sep 2026
  22. 13 posts · Oct 2026
  23. 0 posts · Nov 2026

Fresh off the keyboard

The newest articles and notes.

View all

Bundle Analysis and Tree Shaking: What's in Your Bundle and Why

How to read a bundle analyzer in 2026 (next analyze, rollup-plugin-visualizer, source-map-explorer), how tree shaking really works with ESM, sideEffects, barrel files and CommonJS, the usual traps like moment and lodash, duplicate dependencies, polyfills, and bundle budgets in CI with size-limit.

Tooling & workflow7 min

Read a series

Posts in order, from fundamentals to production.

View all
099 parts · 168 min read

Systems & architecture

Web application security

Start with threat modeling, then work through XSS and CSP, CORS and cross-origin isolation, OAuth/OIDC, JWT, the OWASP API Top 10, SSRF and file uploads, secrets management and the npm supply chain — each layer of defense for a real app.

0/9 read
  1. 1Threat Modeling for Product Teams: STRIDE, Data Flow Diagrams and Trust Boundaries, from a 60-Minute Session to Tickets
  2. 2Practical Frontend Security: XSS in React, Nonce-Based CSP, Trusted Types, CSRF and Clickjacking
  3. 3CORS and cross-origin isolation in depth: origin vs site, preflights, credentials, CORP, COEP, COOP and Fetch Metadata
  4. +6 more parts
View series
014 parts · 86 min read

Systems & architecture

AI engineering for web developers

From a streaming chat UI and RAG that answers correctly to MCP servers for agents and LLM app security — what a web developer needs to ship AI features to production.

0/4 read
  1. 1Building a Streaming AI Chat UI That Stays Smooth: SSE, ReadableStream, Incremental Markdown and a Stop Button
  2. 2RAG That Actually Answers Correctly: Chunking, Hybrid Search with pgvector, Reranking and Evaluation
  3. 3Model Context Protocol in Practice: Building a Production MCP Server in TypeScript
  4. +1 more part
View series
086 parts · 147 min read

Learning & career

Business analysis for product teams

Eliciting the real requirements, writing testable user stories and acceptance criteria, modeling processes with BPMN, Event Storming, PRDs with measurable non-functional requirements and product metrics in SQL.

0/6 read
  1. 1Requirements Elicitation for Engineers: A Business Analyst's Toolbox, from Interviews to Assumption Logs
  2. 2User Stories and Acceptance Criteria: Write Them So Developers Can Build and Testers Can Verify
  3. 3Business Process Modeling with BPMN 2.0: From As-Is Diagrams to Running Software
  4. +3 more parts
View series

Roadmap

Learning maps for frontend, backend, mobile, QA, DevOps and AI engineering, drawn from my own journey.

View all

Frontend Engineer

My main role

Building web interfaces that stay fast, accessible and maintainable as products grow

10 stages, 51 topics, ~34 weeks

Designs, builds and runs the APIs, data and services behind every product

10 stages, 52 topics, ~37 weeks

Build iOS and Android apps that feel smooth, work offline and ship safely

10 stages, 50 topics, ~34 weeks

Find risk before users do and turn quality into something the team can measure

10 stages, 50 topics, ~36 weeks

Builds infrastructure, pipelines and platforms so teams ship fast, safely and reliably

10 stages, 56 topics, ~42 weeks

Build products on top of LLMs: APIs, RAG, agents, evals and running it all in production

10 stages, 58 topics, ~31 weeks

Guides

Long-form, chapter-by-chapter guides for the tools you ship with.

View all
  1. 01Frontend Architecture for Design SystemsFrontend3 parts
  2. 02Monolith to MicroservicesSoftware Architecture5 parts
  3. 03React Design PatternsFrontend16 chapters
  4. 04Security GatesSecurity4 chapters
  5. 05Introduction to PackerInfrastructure as Code6 chapters
  6. 06Introduction to AWSAWS10 chapters

Tools

Browser-only utilities for everyday dev work.

View all

Topics

Five lenses for everything on this blog.

23 posts

Systems & architecture

State, data flow and the boundaries that keep apps sane as they grow.

  • SSRF and File Upload Security: URL Fetching and Uploads That Don't Hand Over Your Network
  • LLM and Agent Application Security: Prompt Injection, Excessive Agency and the OWASP Top 10 for LLMs
  • The OWASP API Security Top 10 in NestJS: vulnerable code, fixed code, and the tests that keep it fixed
  • JWT in Depth: Verification Pitfalls, the Classic Attacks, and Key Rotation with JWKS
21 posts

Frontend & UI

Components, design systems and the craft of interfaces people enjoy.

  • CORS and cross-origin isolation in depth: origin vs site, preflights, credentials, CORP, COEP, COOP and Fetch Metadata
  • On-Device AI in the Browser: WebGPU, Web Workers and Chrome's Built-in AI
12 posts

Performance

Bundles, rendering and measuring what actually makes apps feel fast.

  • Getting Work Off the Main Thread: Web Workers, Transferables, SharedArrayBuffer and Worker Pools
  • Frontend Observability in Practice: RUM with web-vitals, Private Source Maps and Browser-to-Backend Traces
12 posts

Tooling & workflow

Runtimes, monorepos and the tools that keep the feedback loop short.

  • Secrets Management for Small Teams: From .env Files to GitHub Actions OIDC and Short-Lived Credentials
  • Bundle Analysis and Tree Shaking: What's in Your Bundle and Why
9 posts

Learning & career

Notes on learning, writing and growing as an engineer.

  • Product Analytics in SQL: Metric Definitions, Tracking Plans, Funnels, Cohort Retention and A/B Tests That Don't Fool You
  • Writing a PRD Engineering Can Estimate and QA Can Test: Structure, Testable Requirements and Measurable NFRs

How I Think About Building Software

Tools change. Frameworks evolve. But the principles behind good systems stay the same.

These principles guide every article on this blog — not trends, but ways of thinking that scale over time.

  1. 01Performance

    Performance is a Feature

    Speed is not an optimization — it's part of the product. Slow systems create friction, and friction kills user experience. Every layer matters.

  2. 02Architecture

    Think in Systems, Not Screens

    Apps are not pages. They are systems with state, data flow, and constraints. If you only think in UI, your app will break when it scales.

  3. 03Code Quality

    Clarity Over Cleverness

    Good code is not the smartest code — it's the code others can understand quickly. Maintainability beats clever tricks every time.

  4. 04Scalability

    Build for Change

    Requirements will always change. Systems that survive are designed to adapt, not ones that assume everything is fixed.

  5. 05Real-world

    Production is the Truth

    What works locally doesn't matter. Real understanding comes from production — edge cases, failures, and unexpected behavior.

  6. 06Simplicity

    Simplicity Wins Long-term

    Complexity compounds over time. Simple systems are easier to debug, scale, and evolve. Simplicity is a design decision, not a limitation.

The whole archive

Every article as a tile. Hover or focus a tile to peek, filter by topic to narrow down.

View all
Huỳnh Tiến Dĩ

About the author

Huỳnh Tiến Dĩ

Hi, I’m Dĩ — a software engineer in Ho Chi Minh City, mostly working with React, Next.js and the systems behind them. This blog is where I slow down and write about how things actually work in production: the trade-offs, the mistakes and the patterns worth keeping.

More about me