Volume 01 · A public learning log · 2026—

Learning how
machines learn.

I read the ideas, rebuild the small parts, and write down what actually changed my mind.

A note is not finished when it sounds clear. It is finished when an experiment leaves evidence behind.

The register

Notes, in the order they happened.

Complete index →

The Loss Is Not the Task

A 50-step math adapter beat a 600-step one, and ViT-Large was best after one epoch—on a single Colab A100.

There Is No Autograd Here

Paired layer functions, mean-loss seeds, AdamW on a flat parameter tape, and the 41-step sanity loop I read but have not yet run.

Python Writes the Answer Sheet

train_gpt2.py as nanoGPT-shaped model, token-river loader, and a write_state bridge that dumps weights, grads, logits, and loss.

The Model File Has No Names

A 28-byte header, 58 MB of unnamed floats, one C inference loop, and the contract that holds them together.

The Extra Code Is Not Another Brain

Flash Attention, mixed precision, DDP, shards, checkpointing, and HellaSwag without pretending I trained GPT-2.

Width Paid, Context Lied, Last Step Lost

Tiny Shakespeare ablations for context, depth, and width—and the caveats that matter more than the leaderboard.

A Live Wire Is Not a Language

The complete Tiny Shakespeare baseline as an instrument: diagnostics, curve, checkpoint, and one revealing broken specimen.

The Residual Stream Is the Model

Pre-LN, identity gradients, residual initialization, and why a block is two writes into one persistent stream.

Four Ways to Average the Past

From a loop mean to scaled causal self-attention, following every tensor shape through the implementation.

The Batch Is a Factory of Futures

A shifted batch, 4,096 simultaneous next-character bets, and the first numerical check that tells me whether the model is alive.