Notes and progress

Private notes, your start date, and backups of everything you have recorded.

Where this data lives

Progress, settings and notes are stored in this browser’s local storage for this site’s origin only. They are not sent anywhere, do not sync across devices or browsers, and can be cleared by the browser or by clearing site data. Export a backup regularly. If this site moves to a different domain, export here first and import on the new address.

Notes, progress and backups need JavaScript. All lessons remain readable without it.

Progress

  • Compiler foundations:
  • LLVM IR:
  • Clang frontend:
  • First contribution:

Calendar (optional)

Lessons use study-day numbers. Set a start date to see a planned local date on each day. Changing or clearing it never touches your progress, and missing a day does not erase anything.

Backup

Export saves progress, settings and notes as one JSON file. Import validates the file first and, after you confirm, replaces what is stored here. A file that fails validation changes nothing. Imports are limited to 1,000,000 characters and 20,000 characters per note.

General notes

Daily note template

Keep it short enough to complete in ten minutes. None of the prompts are required.

  • Study day and actual date
  • Toolchain version or commit SHA when relevant
  • What I expected and what I observed
  • Files or commands that reproduce the result
  • One concept I can explain without notes
  • One uncertainty and the next concrete investigation
  • Completion evidence and optional public link

Daily notes

Each day’s notes are also on its lesson page.

Day 01: Understand what a compiler does

Open the lesson

Day 02: Prepare a reproducible learning environment

Open the lesson

Day 03: Turn characters into tokens

Open the lesson

Day 04: Represent syntax with trees

Open the lesson

Day 05: Write a recursive descent parser

Open the lesson

Day 06: Check meaning before generating code

Open the lesson

Day 07: Consolidate the compiler foundations

Open the lesson

Day 08: Read LLVM intermediate representation

Open the lesson

Day 09: Generate IR from your AST

Open the lesson

Day 10: Compile and run a tiny program

Open the lesson

Day 11: Understand control flow and optimization

Open the lesson

Day 12: Connect IR learning to the C++ compiler

Open the lesson

Day 13: Navigate the Clang source tree

Open the lesson

Day 14: Inspect C++ AST nodes and types

Open the lesson

Day 15: Learn the LLVM regression test workflow

Open the lesson

Day 16: Write focused diagnostic tests

Open the lesson

Day 17: Use FileCheck and trace a diagnostic

Open the lesson

Day 18: Study one C++ semantic rule

Open the lesson

Day 19: Debug the frontend

Open the lesson

Day 20: Read the contribution rules and a small merged change

Open the lesson

Day 21: Check readiness for a first contribution

Open the lesson

Day 22: Choose a small useful contribution

Open the lesson

Day 23: Reduce the reproducer and establish expected behavior

Open the lesson

Day 24: Locate the smallest responsible code path

Open the lesson

Day 25: Capture the regression first

Open the lesson

Day 26: Implement the smallest correct change

Open the lesson

Day 27: Test the effect beyond the reproducer

Open the lesson

Day 28: Prepare and submit a reviewable contribution

Open the lesson

Day 29: Respond to review or strengthen the evidence

Open the lesson

Day 30: Publish a learning retrospective and choose the next month

Open the lesson