ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
How LLMs work, from first principles — an interactive 3D explainer
Translation pending
EducationTypeScript · HTMLGitHub @dzhngOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
"How LLMs work, from first principles": an interactive 3D explainer that starts from
word-pair counts and adds one part per chapter until it reaches a production LLM. Every
part is a machine drawn on the GPU and backed by a real tiny model trained for that
chapter. Bun + Turborepo monorepo; why it is built this way, and the decisions behind it,
live in specs/done/llm-explainer.
The live site is https://aiexplainer-red.vercel.app, deployed from main. Work happens on
llm-explainer (each push builds a Vercel preview), and production is
git push origin llm-explainer:main.Read the full README ↗"How LLMs work, from first principles": an interactive 3D explainer that starts from word-pair counts and adds one part per chapter until it reaches a production LLM. Every part is a machine drawn on the GPU and backed by a real tiny model trained for that chapter. Bun + Turborepo monorepo; why it is built this way, and the decisions behind it, live in specs/done/llm-explainer.
The live site is https://aiexplainer-red.vercel.app, deployed from main. Work happens on
llm-explainer (each push builds a Vercel preview), and production is
git push origin llm-explainer:main.
The next feature is specs/lab-hub: it retells the explainer for people with no tech background, as a build-up story set in one lab hall you fly through. Start at its Next Agent Prompt.
The tree splits by what each part owns. A concept has exactly one home. A second copy is a bug, so find the owner before writing a helper.
apps/explainer: the site. It holds chapters as data,
scene builders that turn model output into frames, the HUD, the lab review pages and
the browser harness.packages/renderer: the WebGPU renderer (TypeGPU). It
draws the FrameInput it is handed and never reads app state. It owns the camera math,
label placement and the kit of scene primitives.packages/llm: the model runtime in plain TypeScript. It
owns the manifest format, the tokenizer, the forward pass, sampling and the
production-scale arithmetic.training: the PyTorch side, a uv project rather than a bun
workspace. It trains, probes and exports every model into
apps/explainer/public/models.assets/blender: Blender scripts that build the committed props
(bun run props:build). Every asset can be reproduced from code.packages/typescript-config: the shared tsconfig base..agents/skills: agent skills from dzhng/skills.
.claude/skills symlinks into it. Read renderer
before GPU work."exports": { ".": "./src/index.ts" }).
Only the app has a build step.build, check-types, lint and test it needs.
The root runs them across the graph with turbo.catalog and are referenced as
"catalog:". typegpu and math are young, so they are pinned exactly.bun install
cd training && uv sync && cd .. # the Python env, only needed to retrain
bun run verify # format, types, lint, bun tests, training tests
bun run format
The browser harness, which runs on a real GPU, is described in apps/explainer.
Source files are limited to 8,000 estimated tokens (bytes divided by four). The pre-commit hook runs scripts/check-file-size.mjs through lint-staged, so a clone must install the repository dependencies before commits. Existing oversized authored files are frozen at their current size; generated and vendored paths are excluded through .gitattributes. A file may use @ratchet-files-ignore in its first 10 lines only when splitting it would cost more than it saves, with the reason beside the pragma.