hnq.me

Self-taught developer / Systems notes

A quiet place for
life, systems,
and long learning.

I am Huynh Nhan Quoc, a self-taught developer from Tam Ky, Vietnam. I have been learning through real products, broken deployments, private systems, and years of starting again. This site keeps that road in one place: the ideas, the work, and the life around them.

2015 Started learning
Tam Ky Home
Go + JS Working tools
In public Current chapter

Ways into this site

Enter through the question you have.

Explore the archive

One body of work, several ways in.

Look up one concept, follow a topic across formats, or begin with a collection selected in reading order.

choose where to begin
concepts
31
articles
64
topics
20
collections
4
Featured collection Runtime foundationsA path through source code, bytecode, virtual machines, and the boundaries of execution. 9 entries

Now

What is moving today.

Building Kitwork Runtime workbench for multi-tenant websites Learning / 2026-07-09 Zero VM A beginner-friendly guide to understanding requests that bypass VM execution. Source / e3fce05 database/fulltext: reuse no longer writes the signature it read into the index's state, a Fold that first merged the segments of shopping's index (3 minutes) while the watch, seeing no index yet, built 13.7 million rows again; the watch leaves a table alone while Open looks at its index Tried on a copy of the real shopping (27.6 GB, its index of 31/10/2026, signature without a definition): with 9afcf319 the start built the index again. Each step of reuse alone passed; reuse itself took 187 s, in Container.Fold(…, nil), which merges a range of segments of an index past containerMaximumSegments (48) before it writes. Meanwhile the table had no index and no signature, and the watch, every 30 s, enqueued a build. The signature read at reuse is now kept in memory only (the next start reads the commits since the build again, cheap), and Table.opening keeps the watch off a table while Open runs reuse, whatever makes it slow. With both, on the same copy: the index used in 1 s ("unchanged since it was built"); a table made in the file and rows written to it, two looks of the watch later, still no build; MATCH 'ban phim logitech' answered (406 ms). An index of before keeps its old signature on disk, so the first start after the file's schema moves builds it once; from then on its signature has the table's definition. Seen on the way, not changed: the old engine's first write to a file of before writes its .base at once (27.6 GB, the statement canceled at 84 s), as on 07/11; engine2 opens without it (slice 4). Control: with the watch not asking opening, "while it opens: posts' index was built again". Quốc: "vâng theo ý bạn", 09/11/2026. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> 2026-11-09

Latest articles

Fresh from the long road.

archive

A concept becomes executable

The path from text to behavior.

01 Source
02 Lexer
03 AST
04 Compiler
05 Bytecode
06 VM

Runtime

The place where code receives memory, values, limits, and a world in which to run.

Bytecode

The compact instruction layer between source language and machine behavior.

Virtual machine

A machine made of software that reads those instructions and enforces their boundaries.

explore all concepts

The road so far

Not a straight line.

2015

Blogger and HTML. The first small changes that made the hidden structure of a website visible.

2018

A friend's coffee shop and a Firebase night. Dependency stopped being an abstract technical word.

2020

Home, delivery work, and Kitstack. Real projects began shaping a private Go platform.

Now

Opening the useful parts. Kitwork, concepts, articles, and source code turn private lessons into public material.

This site is also an experiment

The URL follows the directory tree.

Each folder can inherit layout, metadata, and runtime behavior from the folders above it. The page you are reading is both a personal homepage and a working Kitwork tenant.

Search