T27.AI

Blog

Course 0: t27 basics in 27 lessons, each with an infographic

2026-10-07 · 5 min read

[the browser runner skips invariant and bench blocks; the lesson specs are not yet in gHashTag/t27] A new course comes before the FPGA and AI numbers courses: 27 lessons on the t27 language, each with a black-and-white table or diagram drawn from its own spec and a lesson spec that compiles on all 7 backends.

Three-panel engraved illustration for: Course 0: t27 basics in 27 lessons, each with an infographic
View the complete triptych at full size
#t27#Course

The t27 courses started at the chip: course 1 teaches an FPGA and course 2 the numbers AI chips store. Both expect the reader to read a .t27 spec already. Course 0 comes before them and teaches that: 27 lessons on the language itself, in 9 modules of 3 lessons, ending where course 1 starts.

What each lesson opens

Every lesson opens one infographic and one spec. The infographic is a black-and-white table, and in 11 of the 27 lessons also a flow diagram; its words and rows live in a .t27 widget spec (specs/widgets/basics-<lesson>.t27), and a widget spec test checks that the table has whole rows. The lesson spec lives under specs/basics/ and compiles clean on all 7 backends in the browser, with its tests passing; the course generator refuses to build if one of them does not.

The tables are real HTML tables with a caption and header cells, and the diagrams are SVG with a title, so a screen reader reads both. On a phone the table turns into one card per row.

The 27 lessons

LessonTitleInfographic
1What a spec istable + flow diagram: The parts of a spec, top to bottom
2The module linetable: Module lines, as the compiler answered
3Comments and prose linestable: Notes in a spec, as the compiler answered
4Constantstable: pub const WIDTH : u8 = 8;
5Whole numbers and their widthstable + flow diagram: Integer types
6True, false and texttable: bool and str
7Arraystable: pub const PRIMES : [5]u8 = [2, 3, 5, 7, 11];
8Trits: minus one, zero, onetable + flow diagram: A trit as i8 constants
9Expressionstable: A = 17, B = 5
10A test blocktable + flow diagram: test a_year_is_52_weeks_and_a_day
11Many tests in one spectable: The tests of the lesson spec
12Functionstable: fn add(a: u8, b: u8) -> u8
13Local names: let and vartable: Three kinds of names
14Choices: if, else and switchtable + flow diagram: Choice forms, as the compiler answered
15Loops: while and fortable + flow diagram: Loop forms, as the compiler answered
16pub or privatetable: pub and private constants through gen-ts
17Structstable: The structs of the lesson spec
18Enumstable: The enums of the lesson spec
19Using other modulestable: use base::types;
20Invariants and benchestable: Checking blocks and the site test runner
21gen-ts: a spec becomes TypeScripttable + flow diagram: gen-ts on the lesson spec
22Seven backendstable: Backends on the lesson spec
23The stages of t27ctable + flow diagram: Stages on the lesson spec
24tri: the command linetable + flow diagram: tri commands, from scripts/tri
25Reading compiler errorstable: Mistakes, as the compiler answered
26A small complete programtable + flow diagram: gen-verilog on the lesson spec
27Where to go nexttable + flow diagram: The courses, in order

What it does not do yet

Try it

What this does not settle

Receipts

Work with me

Need an FPGA/RTL problem taken to measured hardware?

I work contract and part-time on hardware-AI, FPGA/RTL and ML systems — from specification and open toolchains to reproducible measurements.