Writing
Essays, analyses and puzzles: one argued claim, a sourced verdict, or an open question worked in public.
2026
- Agentic engineering: the series map and how to read it
A series on building agentic software for engineers who know the classic lifecycle, and how its pillars, deep dives and reading paths fit together.
- Owner agents, plain functions: where the model sits in our ops estate
Give each domain one owner agent that reports back, keep the steps as plain functions, and add autonomy to a running platform one gated decision at a time.
- No. 43: Tuan Dao on delegating to AI
Tuan Dao, an engineer at Dwarves, on moving from pair programming with AI to delegating to it, and why human review is always the bottleneck.
- #5 Building is cheap now, getting heard is the hard part
Han talks with Ethan Phan, co-founder and CTO of Plot, about reading a pivot signal, staying lean for 2.5 to 3 years, and running an AI-native engineering team where…
- 3,016 delegations to agents: the long briefs cost the most
Median brief 289 words, median run 6.4 minutes, 14.5% needed a follow-up. What 24 days of Claude Code subagent logs say about briefing agents, and where a brief cost…
- Harness engineering notes from a team running agents all day
Nine field notes on running coding agents in production at Dwarves: the harness around the model, how we check and guard it, what we put it to work on, and what it does…
- How trust works at Dwarves: from your team to the people we call first
Trust grows in three circles, from your team to the people we call first in a crisis. What each circle gets, what membership costs, and how a person or a report loses it.
- Onboarding without flattening: what 9T keeps hard on purpose
A tester opened 9T and understood nothing. bievh kept the guide at four tabs and left the rest hidden. Two weeks later tuanddd proposed a story opening at full power,…
- Play a quarter, wait the rest: the dead-air problem in turn-based artillery games
In a four-player artillery match you play about a quarter of the time and nothing after you die. tieubao's T/N formula and the off-turn options the lobshot thread raised.
- The Go bet worked, then we tried to double the team
A hindsight report on Dwarves' Go bet: headcount from 2015 to 2024, 43 start dates in four quarters, who stayed past a year, and the hiring rules we changed afterwards.…
- Twenty accounts and the rich players: the economy loop behind farm-and-fight MMOs
bievh's account of why farm-and-fight MMOs pay: 20-account farmers supply the rich players, who keep paying. Plus the Vietnam licensing wall a solo builder hits before…
- We stopped testing engineers on speed
Dwarves cut the weight of timed algorithm problems in its technical interview from 60% to 15%. The dates, the weights, and the new hour.
- Designing Out SNAP Fraud
A taxonomy of SNAP trafficking, theft, and error, and a layered program and software architecture that designs fraud out.
- Five layers to tune before you fork your agent
What makes AI agentic, how to split a deterministic core from an agentic edge, and the five layers you can tune without rebuilding the harness. Real numbers from circle…
- Dispatch #1: UI kit workflow: bốn bước từ setup đến implement
Kit này ghép nhiều skill/command lại thành một workflow gồm bốn bước chính: setup, initial design system, prototype, và implement. Bước setup hỏi user về tech stack và…
- Dispatch #2: handoff pattern: từ ảnh chụp app đến Figma và video demo
Dùng pattern prompt end-to-end test để AI tự chụp ảnh app rồi convert sang Figma, thay vì test tay. MCP Bridge Figma UI của một bạn Việt Nam trên GitHub giúp tiết kiệm…
- What the Engelberg report got right about us
Thoughtworks published the findings of its second Future of Software Engineering retreat. Most of what the room converged on is what we have been learning and putting…
- Claude Code 2.1.259 turned our Read() deny rules into a Bash tripwire
Bypass-mode sessions started stalling on 'a Read() deny rule is configured' prompts. What the harness now infers from a Bash command, why a CLAUDE.md rule couldn't stop…
- The debug loop: make the agent measure the browser before it touches the CSS
A repeatable loop for AI-driven UI debugging: name the metric, name the axis, drive a real browser over CDP, read the DOM into a table, kill theories, sweep the suspect,…
- DeepSeek harness, dissected
An architecture read of dsh, DeepSeek's new agent harness: the plugin tree, the patch-layer boot, the log-first session model, and what it means for a Claude Code shop.
- What stays valuable when anyone can build anything
As AI makes building cheap, value concentrates in judgment (inside) and trust (outside): the two inputs it cannot mass-produce. A lens on what to own in the AI era.
- The tells
AI writing gives itself away at the level of structure, not word choice. A field guide to the patterns, and the guideline change that bans them from our posts.
2025
- CAP breakdown
Technical analysis of CAP, an open-source, cross-platform screen recording system and its Instant mode screen recording implementation.
- Stagehand breakdown
A comprehensive technical breakdown of Stagehand, an advanced browser automation framework by Browserbase
- Context7 breakdown
Technical analysis of Context7, an intelligent documentation indexing and retrieval system that transforms raw library docs into AI-optimized, ranked snippets for…
- E2b breakdown
Technical analysis of E2B, a cloud infrastructure platform that runs AI-generated code in secure, isolated sandboxes using lightweight virtual machines that start in…
- Dify breakdown
Technical analysis of the Dify platform, its architecture, and engineering decisions that enable scalable LLM application development.
- Maybe finance breakdown
An in-depth analysis of a $1M open-source personal finance application built with Ruby on Rails
- Umami breakdown
Comprehensive technical analysis of Umami, a modern, privacy-focused web analytics platform.
- Mem0 & Mem0-Graph breakdown
Technical analysis of Mem0, a scalable memory architecture for LLMs, and its graph-based variant, Mem0-Graph, designed for long-term conversational coherence.
- Cline breakdown
Comprehensive technical analysis of Cline's VS Code extension architecture, covering system design, implementation patterns, and architectural innovations
- Ax framework breakdown
Technical analysis of the Ax TypeScript framework for building LLM-powered agents with DSPy capabilities.
- Crawl4AI breakdown
Deep dive into Crawl4AI's architecture, data structures, and algorithms - from async pipelines and strategy patterns to browser management and intelligent content…
- Zen MCP breakdown
Technical analysis of the Zen MCP (Model Context Protocol) Server architecture, implementation, and design patterns.
- Better engineering
A personal take on how AI is changing software development and why better engineering still comes down to human judgment, not just better tools.
- Speed beats perfectionism in AI adaptation
Developers who adapt fast to AI are thriving. Those who overthink are falling behind.
- Engineers in the AI landscape: architects, tinkerers, planners, and the vibers
Exploring the new archetypes of software engineers in the age of AI: architects, tinkerers, planners, and vibers.
- Composing the future, part 1: agent basics, LangGraph and Autogen
What makes a system agentic, why multi-agent beats single-agent, how orchestration works, and a close look at LangGraph and Microsoft Autogen.
- Composing the future, part 2: OpenAI's agent tools, MCP and fast-agent
How OpenAI's Swarm and newer agent tools work, why Model Context Protocol matters for tool access, and how fast-agent builds MCP-native agents.
- Composing the future, part 3: Mastra and CrewAI
Two frameworks with opposite instincts: Mastra for TypeScript teams building web-native agents, and CrewAI for role-playing crews of Python agents.
- Composing the future, part 4: LlamaIndex and the framework face-off
LlamaIndex's agent features for document-heavy work, then a side-by-side comparison of the frameworks on differentiators, strengths and ease of development.
- Composing the future, part 5: agent patterns, open problems and how to choose
The common agent composition patterns, the problems that remain unsolved, where the field is heading, and guidance for picking a framework.
- Strategic thinking behind our hiring
Why we're building a complete pipeline from research to delivery - the philosophy behind our role strategy and how it supports our research-first consulting model.
- Skillmaxing
A guide for talents on how to cultivate the mindset and skills to become a proven, AI-augmented engineer, inspired by the principles of vetting top-tier individuals.
- Vetting proven talents
Guidelines and criteria for vetting high-level engineering talents, especially those leveraging AI.
- Client-side and agency-side
Get the scoop on consulting and product companies in tech. Find out what ascertain their roles, perks, and how to win clients.
- Inefficiency arbitrage
Discover how Dwarves use inefficiency arbitrage to spot and solve client tech gaps. Learn practical ways to find opportunities and deliver value.
- Append-only concept embedding log
RFC proposing a novel approach to track concept evolution using TimescaleDB with pgvector/pgvectorscale, enabling historical semantic analysis and preventing…
- Build a brain that never forgets
Explore how we solved the catastrophic forgetting problem in LLMs by building an external knowledge system that mimics learning through context manipulation, without…
- Data flow in Brainery
How data flows through Brainery's second brain system, from Discord, Memo Blog, and GitHub sources to TimescaleDB via MCP, with an LLM-powered interface for natural…
- Database design and philosophy
A migration-less, append-only database design using TimescaleDB's hypertables and continuous aggregates to capture observational data and detect emerging patterns…
- MCP authorization over SSE
A Request for Comments (RFC) detailing a comprehensive specification for implementing OAuth 2.1 authorization within the Model Context Protocol (MCP) when using…
- Building use-cases
Building systems that actually learn and get smarter over time is hard, facing challenges with traditional databases and LLMs. This post outlines an approach to building…
- Promoting raw data to insight
This post explains the multi-stage process of transforming raw data into structured information, and then synthesizing that information into persistent insight and…
- Access the brainery
This page outlines how developers can connect to and utilize Brainery's extensive knowledge base and AI-driven capabilities. By integrating a straightforward MCP…
- Brainery architecture
An overview of Brainery's architecture, detailing how it ingests, processes, and transforms data from diverse sources into a dynamic knowledge base.
- Market players
Understanding the consulting industry landscape and our place within it.
2024
- #1 Coffee craftsmanship lessons for software engineering
Our visit to 43 Factory coffee shop in Danang revealed surprising parallels between coffee craftsmanship and software engineering. We discovered valuable insights about…
- #2 Film production lessons for software engineering
Our visit to DZS Media revealed surprising parallels between film production and software development. Their meticulous planning, focus on getting things right the first…
- Design a file-sharing system: directory structure, permissions and passwords
How I designed a Google Drive-style file storage and sharing system for our website, covering the data model, a path field for the folder hierarchy, role-based…
- Pricing model: bill by hours
A new hourly billing model is introduced to ensure fair compensation for effort, flexibility in project scope, control over additional work, and transparency with…
- #3 Digital transformation insights from the energy sector
Our visit to SP Group offered valuable perspectives on enterprise digital transformation challenges. We learned that successful transformation depends more on people and…
2023
- Fixed-budget, scope-controlled
Learn about the Fixed-budget, Scope-controlled (FBSC) approach to software development, contrasting it with traditional models and highlighting its benefits.
- No. 19: Tay Nguyen on focusing on the core
Tay Nguyen, a Senior Software Engineer at Dwarves in 2023, on how he knew IT was his field, his rule of fixing the core of a problem, and leaving a good job that did not…
2022
- #4 Transforming healthcare with technology
Momby founder Ruby Nguyen on building a maternity health app from personal need, the data accuracy health tech demands, leading with care, and starting before it is…
- Zaplib post-mortem
Zaplib is a frontend framework that helps to port your JS/TS app to Rust/Wasm. This idea was found after the founder's painful work at https://webviz.io when he had to…
2021
- No. 10: Duc Nghiem on motivation from within
Duc Nghiem, part 2 of his story as a father: how his own dad shaped him, how his drive came from proving himself to his dad until he burned out, and why he sets no…
- No. 09: Duc Nghiem on raising a daughter
Duc Nghiem, part 1 of his story as a father: an unplanned pregnancy, stepping back from his startup career for his daughter's first three years, and what raising her…
- No. 08: Huy Tieu on joining a nonprofit
Huy Tieu on feeling lost when work stops teaching you, moving from business analyst at a tech company to product manager at a nonprofit, and staying kind through…
- No. 06: Loc Nguyen on working in Germany
Loc Nguyen, ten years into system architecture in Vietnam when he moved to Germany in 2019, on the culture shock of German work: no pings, booked time, consensus, and…
- No. 04: Duc Nghiem on backing startups
Duc Nghiem on moving from photography and design into startups, building the SHIELD startup community in Vietnam, and how he weighs a startup as an investor. A…
2020
- No. 03: Quynh Le on testing as a career
Quynh Le on fighting her way into IT, moving from Java developer to tester, and why testing is a career, not a fallback for people who cannot code. A TechieStory…
- The adjacent possible
The concept of the adjacent possible originates from Stuart Kauffman and his work on biological evolution.
- Ideas over titles at Dwarves
The working principles behind how Dwarves runs its team, from ideas that win on merit to open check-ins, hiring on skill and shipping to users, collected from culture…