NME learning guides
88 short guides, written to be read in order. Each one teaches a single
idea, ends with something to try and a summary of what it taught, and every
piece of code in them passes nme check.
- 01–04 Your first day. Sentence syntax only — no quotes, no equals signs, no colons.
- 05–12 Repeating, choosing, randomness, and the command-line tools.
- 86–88 Stories, the screen, the stopwatch and cooldowns. Still sentence syntax — read these straight after 12, not last. They carry high numbers only because they were written later.
- 13–22 Files, JSON, small projects, a blockchain, the network. Beginner syntax starts to appear.
- 23–52 Modules, games, a calculator, data, strings, grids. More than half of it is Python.
- 53–85 Statistics, search, algorithms, compilers. Effectively Python programs.
Difficulty
- ★☆☆☆☆ (1/5) — first day, sentence syntax only
- ★★☆☆☆ (2/5) — getting comfortable with sentence syntax
- ★★★☆☆ (3/5) — beginner syntax and files mixed in
- ★★★★☆ (4/5) — more than half Python
- ★★★★★ (5/5) — essentially Python
The number is the difficulty. Read them in order and no single step is a jump.
Learn in order
- 01 — Hello: say your first words
- 02 — Ask: have a conversation
- 03 — Set: store a value
- 04 — Update: change a value
- 05 — Repeat: do something many times
- 06 — If: make a choice
- 07 — While: keep going
- 08 — Break: stop a loop
- 09 — And / Or: combine conditions
- 10 — Random: dice and picks
- 11 — Check & Build: see the Python
- 12 — Convert: turn Python into NME
- 13 — Files: save and read text
- 14 — JSON: save and load data
- 15 — High score: a tiny project
- 16 — Name list: read lines from a file
- 17 — Cryptocurrency ledger — state and transactions
- 18 — Proof of work — mining transaction blocks
- 19 — Transaction proofs — wallet ownership and replay prevention
- 20 — Full-chain validation — recompute from genesis
- 21 — HTTP — asking a web server
- 22 — Terminal menu — a small TUI
- 23 — Modules: split your program into files
- 24 — Python packages: the standard library and installed libraries
- 25 — Native: compile to machine code
- 26 — Adventure — a small text game
- 27 — Calculator — a command-line project
- 28 — Your first compiler — a tiny language
- 29 — Bootstrap: NME compiling a tiny language
- 30 — Data: statistics on a list
- 31 — Records: a small address book
- 32 — Weather: reading JSON from the web
- 33 — Todo: a growing project
- 34 — Self-host: NME running NME
- 35 — Diary: notes saved by date
- 36 — Word count: how often each word appears
- 37 — Word guess: a hidden-word game
- 38 — Quiz — questions from a file
- 39 — Sorting — putting a list in order
- 40 — Report — writing a summary file
- 41 — Text stats: letters and words
- 42 — Compare: two groups of numbers
- 43 — Project: a habit tracker
- 44 — Playlist: a random music player
- 45 — CSV: rows of data
- 46 — Compiler tier: a small expression language
- 47 — Progress — a bar in the terminal
- 48 — Shop — an inventory store
- 49 — Compiler tier: reading tokens
- 50 — Strings: slicing and changing text
- 51 — Grid: a board of lists
- 52 — Game: tic-tac-toe
- 53 — Sets: unique values
- 54 — Stats: understanding data
- 55 — Network: a mini chat
- 56 — Log: an event record
- 57 — Group: data by category
- 58 — Compiler tier: a tiny bytecode runner
- 59 — Editor — a tiny text editor
- 60 — Search — finding items in JSON
- 61 — Project — a mini bank
- 62 — Bubble sort — your first algorithm
- 63 — ASCII art — drawing with characters
- 64 — Binary search — halving the guess
- 65 — Files: processing many files
- 66 — Top ten: ranking records
- 67 — Project — a grade book
- 68 — Errors: handling problems
- 69 — Patterns: finding matches with regex
- 70 — Game: a reaction time test
- 71 — Chart: a bar chart in the terminal
- 72 — Modules: a project across files
- 73 — Capstone: a language that compiles to Python
- 74 — Merge: joining two lists
- 75 — Game: a simple opponent
- 76 — Network: polling a server
- 77 — Network: downloading files
- 78 — Data: analyzing a month of temperatures
- 79 — Compiler tier: functions in the mini language
- 80 — Tools: reading command-line arguments
- 81 — Testing: checking the functions you wrote
- 82 — Compiler tier: expressions as trees
- 83 — Game: Mastermind, guessing a secret code
- 84 — Web: extracting links from a page
- 85 — Compiler tier: from tree to bytecode
- 86 — Story: letters arriving one at a time
- 87 — Screen: clearing, ruling and boxing
- 88 — Time: a stopwatch and cooldowns
Topic lookup
- first program and output: 01
- input: 02
- storing values: 03
- changing values: 04
- loops: 05, 08
- conditions: 06, 09
- loops and conditions: 07
- random: 10
- using the tools: 11, 12
- files: 13, 35, 40
- json: 14
- project: 15
- files and lists: 16
- cryptocurrency ledger and transactions: 17
- proof of work and block linkage: 18
- transaction proofs and replay prevention: 19
- chain validation and consensus boundaries: 20
- networks and HTTP: 21
- terminal menus: 22
- modules: 23
- Python packages: 24
- native compilation: 25
- a small project: 26
- a project: 27, 33, 43, 48, 61
- compiler: 28, 46, 49, 58
- bootstrap: 29
- data: 30, 36, 39, 45, 57
- records: 31
- web data: 32
- self-hosting: 34
- game: 37, 52
- game & data: 38
- text & data: 41
- data & comparison: 42
- game & random: 44
- terminal output: 47
- strings: 50
- nested data: 51
- sets & data: 53
- statistics: 54
- network: 55
- files & logging: 56
- a terminal app: 59
- search & data: 60
- algorithm: 62, 64
- output & loops: 63
- files & folders: 65
- data & ranking: 66
- a capstone project: 67
- exceptions: 68
- regular expressions: 69
- game & timing: 70
- visualization: 71
- modules & structure: 72
- compiler capstone: 73
- data & merging: 74
- game & strategy: 75
- network & timing: 76
- network & files: 77
- data analysis: 78
- compiler & functions: 79
- command-line tools: 80
- testing: 81
- compiler & AST: 82
- game & logic: 83
- web & text: 84
- compiler & bytecode: 85
- stories and slow output: 86
- arranging the screen: 87
- stopwatch and cooldowns: 88
All guides
| # | Difficulty | Topic | Title | Result |
|---|---|---|---|---|
| 01 | ★☆☆☆☆ | first program and output | Hello: say your first words | a program that prints a message with nme run |
| 02 | ★☆☆☆☆ | input | Ask: have a conversation | a program that asks a name and greets it in a sentence |
| 03 | ★☆☆☆☆ | storing values and lists | Set: store a value | a program that keeps text, numbers and lists in named values |
| 04 | ★☆☆☆☆ | changing values | Update: change a value | a program that adds to and subtracts from a score |
| 05 | ★★☆☆☆ | repetition, walking a list, waiting | Repeat: do something many times | a program that repeats lines, walks a list, and pauses |
| 06 | ★★☆☆☆ | conditions | If: make a choice | a program that runs different lines depending on a condition |
| 07 | ★★☆☆☆ | loops and conditions | While: keep going | a block that loops while a condition is true |
| 08 | ★★☆☆☆ | loops | Break: stop a loop | a program that leaves a loop early |
| 09 | ★★☆☆☆ | conditions | And / Or: combine conditions | a program that judges combined conditions |
| 10 | ★★☆☆☆ | random | Random: dice and picks | a program that rolls a die and picks a color |
| 11 | ★★☆☆☆ | using the tools | Check & Build: see the Python | the habit of verifying programs and reading the generated Python |
| 12 | ★★☆☆☆ | using the tools | Convert: turn Python into NME | a small Python file converted into NME |
| 13 | ★★★☆☆ | files | Files: save and read text | a program that saves text to a file and reads it back |
| 14 | ★★★☆☆ | json | JSON: save and load data | a program that saves a name and a score and loads them back |
| 15 | ★★★☆☆ | project | High score: a tiny project | a dice game that remembers its best score |
| 16 | ★★★☆☆ | files and lists | Name list: read lines from a file | a program that reads a list of names from a file and picks from it |
| 17 | ★★★☆☆ | cryptocurrency ledger and transactions | Cryptocurrency ledger — state and transactions | a small cryptocurrency ledger with balances, fees, supply, and transaction nonces |
| 18 | ★★★☆☆ | proof of work and block linkage | Proof of work — mining transaction blocks | link transactions to the previous block and perform SHA-256 proof of work |
| 19 | ★★★☆☆ | transaction proofs and replay prevention | Transaction proofs — wallet ownership and replay prevention | validate transaction authorization with a public value and reject replay |
| 20 | ★★★☆☆ | chain validation and consensus boundaries | Full-chain validation — recompute from genesis | a single-node validator that replays every transaction and block from genesis |
| 21 | ★★★☆☆ | networks and HTTP | HTTP — asking a web server | fetching a page from a local server |
| 22 | ★★★☆☆ | terminal menus | Terminal menu — a small TUI | a loop-driven terminal menu |
| 23 | ★★★★☆ | modules | Modules: split your program into files | splitting a program across .nme files |
| 24 | ★★★★☆ | Python packages | Python packages: the standard library and installed libraries | using the standard library and installed libraries |
| 25 | ★★★★☆ | native compilation | Native: compile to machine code | running a program as machine code without CPython |
| 26 | ★★★★☆ | a small project | Adventure — a small text game | a room-by-room text adventure with choices |
| 27 | ★★★★☆ | a project | Calculator — a command-line project | a repeat-until-quit calculator with functions and a module file |
| 28 | ★★★★☆ | compiler | Your first compiler — a tiny language | a tiny language that reads lines like add 2 3 and prints the answer |
| 29 | ★★★★☆ | bootstrap | Bootstrap: NME compiling a tiny language | a tiny compiler written in NME |
| 30 | ★★★★☆ | data | Data: statistics on a list | loading numbers from a JSON file and computing mean/median/max with the statistics standard library |
| 31 | ★★★★☆ | records | Records: a small address book | a JSON-file address book that adds, lists, and searches contacts |
| 32 | ★★★★☆ | web data | Weather: reading JSON from the web | fetching a local HTTP server's JSON and printing a mini weather report |
| 33 | ★★★★☆ | a project | Todo: a growing project | a JSON-persisted todo list with add, done, list, and a module file for the storage logic |
| 34 | ★★★★☆ | self-hosting | Self-host: NME running NME | an NME program that compiles a tiny NME-like subset (say/set/while) to Python |
| 35 | ★★★★☆ | files | Diary: notes saved by date | a diary that saves each day's note to a dated file and can read it back |
| 36 | ★★★★☆ | data | Word count: how often each word appears | reading a text file and counting how often each word appears, using a dict and collections.Counter |
| 37 | ★★★★☆ | game | Word guess: a hidden-word game | a hangman-style game where you guess letters of a hidden word with limited tries |
| 38 | ★★★★☆ | game & data | Quiz — questions from a file | a multiple-choice quiz that loads questions from a JSON file, scores answers, and reports the result |
| 39 | ★★★★☆ | data | Sorting — putting a list in order | loading numbers from a JSON file and showing sorted ascending and descending orders with the Python sort method |
| 40 | ★★★★☆ | files | Report — writing a summary file | reading a few JSON data files and writing one text report with file_write |
| 41 | ★★★★☆ | text & data | Text stats: letters and words | reading a text file and reporting character count, word count, longest word, and most common word (with collections.Counter) |
| 42 | ★★★★☆ | data & comparison | Compare: two groups of numbers | loading two JSON number lists and comparing their means and maxima |
| 43 | ★★★★☆ | a project | Project: a habit tracker | a JSON-persisted habit tracker with add, check, streak, list, quit, and a module file for the storage logic |
| 44 | ★★★★☆ | game & random | Playlist: a random music player | a playlist loaded from JSON with shuffle, next, and a loop of songs |
| 45 | ★★★★☆ | data | CSV: rows of data | reading a comma-separated text file with split(","), computing a column's average, and writing a summary CSV |
| 46 | ★★★★☆ | compiler | Compiler tier: a small expression language | a tiny calculator that evaluates 2 + 3 * 4 respecting precedence, as a step toward a real expression compiler |
| 47 | ★★★★☆ | terminal output | Progress — a bar in the terminal | a terminal progress bar that fills a row as a loop runs |
| 48 | ★★★★☆ | a project | Shop — an inventory store | a JSON-persisted store with buy/sell/stock/list and a money balance |
| 49 | ★★★★☆ | compiler | Compiler tier: reading tokens | splitting a command line into tokens and dispatching them, a step toward a real tokenizer and parser |
| 50 | ★★★★☆ | strings | Strings: slicing and changing text | slicing text[start:end], .upper()/.lower(), .replace(), and .strip() on a sentence |
| 51 | ★★★★☆ | nested data | Grid: a board of lists | a tic-tac-toe style 3x3 board stored as a list of lists, reading and writing cells with board[row][col] |
| 52 | ★★★★☆ | game | Game: tic-tac-toe | a playable two-player tic-tac-toe with a win check |
| 53 | ★★★★★ | sets & data | Sets: unique values | using a Python set to find unique words in a text file, then unique letters in a sentence |
| 54 | ★★★★★ | statistics | Stats: understanding data | loading a JSON list and reporting count, mean, median, mode, min, max, and range |
| 55 | ★★★★★ | network | Network: a mini chat | fetching messages from a local HTTP server and showing them like a mini chat |
| 56 | ★★★★★ | files & logging | Log: an event record | appending a dated line to a log file each time the program runs, using datetime and file_write |
| 57 | ★★★★★ | data | Group: data by category | grouping a list of dicts by a category key into a dict of lists, then reporting counts per category |
| 58 | ★★★★★ | compiler | Compiler tier: a tiny bytecode runner | compiling simple instructions into a list of steps and running them one by one like a tiny virtual machine |
| 59 | ★★★★★ | a terminal app | Editor — a tiny text editor | a line-based editor with a buffer and add, list, remove, save, and quit commands |
| 60 | ★★★★★ | search & data | Search — finding items in JSON | loading a JSON catalog from a local server or file and searching it by keyword, case-insensitively |
| 61 | ★★★★★ | a project | Project — a mini bank | a JSON-persisted bank account with deposit, withdraw, balance, history, and a storage module |
| 62 | ★★★★★ | algorithm | Bubble sort — your first algorithm | implementing bubble sort by hand with nested loops and a swap, then comparing the result with Python's built-in sort |
| 63 | ★★★★★ | output & loops | ASCII art — drawing with characters | building a right triangle, an upside-down triangle, and a diamond with nested loops and string multiplication |
| 64 | ★★★★★ | algorithm | Binary search — halving the guess | finding a number in a sorted list by halving the search range each step, showing the step count and the found index |
| 65 | ★★★★★ | files & folders | Files: processing many files | listing the files in a folder with os.listdir, reading each with file_read, and reporting total words and letters across all of them |
| 66 | ★★★★★ | data & ranking | Top ten: ranking records | loading JSON records, sorting by a numeric score with sorted(..., key=...), and showing the top ten |
| 67 | ★★★★★ | a capstone project | Project — a grade book | a JSON-persisted grade book with add-student, add-grade, report-averages, and a storage module |
| 68 | ★★★★★ | exceptions | Errors: handling problems | a program that reads a missing file and converts bad input without crashing |
| 69 | ★★★★★ | regular expressions | Patterns: finding matches with regex | a program that finds phone numbers and email addresses in a text file |
| 70 | ★★★★★ | game & timing | Game: a reaction time test | a game that measures reaction time with time.time() and reports the best of several rounds |
| 71 | ★★★★★ | visualization | Chart: a bar chart in the terminal | drawing a horizontal bar chart with # blocks from a JSON list, scaled to the largest value |
| 72 | ★★★★★ | modules & structure | Modules: a project across files | a small weather-report project split into three .nme modules (fetch, analyze, report) with clear interfaces, imported by a main program |
| 73 | ★★★★★ | compiler capstone | Capstone: a language that compiles to Python | an NME program that reads a small custom language (say/set/add/while/end), compiles it to Python source, writes it to a file, and runs it |
| 74 | ★★★★★ | data & merging | Merge: joining two lists | loading two JSON lists and joining records by name key into one report |
| 75 | ★★★★★ | game & strategy | Game: a simple opponent | a take-away game where the computer follows a winning strategy |
| 76 | ★★★★★ | network & timing | Network: polling a server | repeatedly fetching a status.json from a local server every few seconds and reporting changes |
| 77 | ★★★★★ | network & files | Network: downloading files | downloading a file from a local HTTP server and saving it while showing progress |
| 78 | ★★★★★ | data analysis | Data: analyzing a month of temperatures | loading a month of temperatures, computing statistics and a histogram, and saving a report file |
| 79 | ★★★★★ | compiler & functions | Compiler tier: functions in the mini language | a compiler that translates a mini language with def, return, and calls into Python and runs it |
| 80 | ★★★★★ | command-line tools | Tools: reading command-line arguments | a todo tool that takes commands like nme r todo add "buy milk" on the command line |
| 81 | ★★★★★ | testing | Testing: checking the functions you wrote | a tiny test runner that calls your own functions, compares each result with the expected value, and reports pass or fail |
| 82 | ★★★★★ | compiler & AST | Compiler tier: expressions as trees | a calculator that parses an expression into a tree and evaluates the tree recursively, respecting precedence |
| 83 | ★★★★★ | game & logic | Game: Mastermind, guessing a secret code | a Mastermind-style game that hides a 4-color code and gives black/white feedback for each guess |
| 84 | ★★★★★ | web & text | Web: extracting links from a page | fetching an HTML page from a local server and listing every link on it as a full URL |
| 85 | ★★★★★ | compiler & bytecode | Compiler tier: from tree to bytecode | a compiler that flattens an expression tree into instruction lines and runs them on a stack machine |
| 86 | ★★☆☆☆ | stories and slow output | Story: letters arriving one at a time | a program whose text appears one letter at a time, the way a novel unfolds |
| 87 | ★★☆☆☆ | arranging the screen | Screen: clearing, ruling and boxing | a program that clears the screen, centres a title and draws a box |
| 88 | ★★☆☆☆ | stopwatch and cooldowns | Time: a stopwatch and cooldowns | a program that times itself and stops an action from repeating too soon |
Where to continue
- Getting started: the five-minute path from hello to a number game
- Tutorial: seven projects from Hello World to a compiler
- Language reference: exact rules for all three levels
- Syntax list: every accepted spelling, in one table
- Prompts to hand to an AI: paste one into a chat and the AI can write NME
- If installing is hard, write and run programs at needmoreeasy.com — it works on a phone.
All 88 guides
88 guides
- 01 — Hello: say your first wordsfirst program and output★☆☆☆☆
- 02 — Ask: have a conversationinput★☆☆☆☆
- 03 — Set: store a valuestoring values and lists★☆☆☆☆
- 04 — Update: change a valuechanging values★☆☆☆☆
- 05 — Repeat: do something many timesloops★★☆☆☆
- 06 — If: make a choiceconditions★★☆☆☆
- 07 — While: keep goingloops and conditions★★☆☆☆
- 08 — Break: stop a looploops★★☆☆☆
- 09 — And / Or: combine conditionsconditions★★☆☆☆
- 10 — Random: dice and picksrandom★★☆☆☆
- 11 — Check & Build: see the Pythonusing the tools★★☆☆☆
- 12 — Convert: turn Python into NMEusing the tools★★☆☆☆
- 13 — Files: save and read textfiles★★★☆☆
- 14 — JSON: save and load datajson★★★☆☆
- 15 — High score: a tiny projectproject★★★☆☆
- 16 — Name list: read lines from a filefiles and lists★★★☆☆
- 17 — Cryptocurrency ledger — state and transactionscryptocurrency ledger and transactions★★★☆☆
- 18 — Proof of work — mining transaction blocksproof of work and block linkage★★★☆☆
- 19 — Transaction proofs — wallet ownership and replay preventiontransaction proofs and replay prevention★★★☆☆
- 20 — Full-chain validation — recompute from genesischain validation and consensus boundaries★★★☆☆
- 21 — HTTP — asking a web servernetworks and HTTP★★★☆☆
- 22 — Terminal menu — a small TUIterminal menus★★★☆☆
- 23 — Modules: split your program into filesmodules★★★★☆
- 24 — Python packages: the standard library and installed librariesPython packages★★★★☆
- 25 — Native: compile to machine codenative compilation★★★★☆
- 26 — Adventure — a small text gamea small project★★★★☆
- 27 — Calculator — a command-line projecta project★★★★☆
- 28 — Your first compiler — a tiny languagecompiler★★★★☆
- 29 — Bootstrap: NME compiling a tiny languagebootstrap★★★★☆
- 30 — Data: statistics on a listdata★★★★☆
- 31 — Records: a small address bookrecords★★★★☆
- 32 — Weather: reading JSON from the webweb data★★★★☆
- 33 — Todo: a growing projecta project★★★★☆
- 34 — Self-host: NME running NMEself-hosting★★★★☆
- 35 — Diary: notes saved by datefiles★★★★☆
- 36 — Word count: how often each word appearsdata★★★★☆
- 37 — Word guess: a hidden-word gamegame★★★★☆
- 38 — Quiz — questions from a filegame & data★★★★☆
- 39 — Sorting — putting a list in orderdata★★★★☆
- 40 — Report — writing a summary filefiles★★★★☆
- 41 — Text stats: letters and wordstext & data★★★★☆
- 42 — Compare: two groups of numbersdata & comparison★★★★☆
- 43 — Project: a habit trackera project★★★★☆
- 44 — Playlist: a random music playergame & random★★★★☆
- 45 — CSV: rows of datadata★★★★☆
- 46 — Compiler tier: a small expression languagecompiler★★★★☆
- 47 — Progress — a bar in the terminalterminal output★★★★☆
- 48 — Shop — an inventory storea project★★★★☆
- 49 — Compiler tier: reading tokenscompiler★★★★☆
- 50 — Strings: slicing and changing textstrings★★★★☆
- 51 — Grid: a board of listsnested data★★★★☆
- 52 — Game: tic-tac-toegame★★★★☆
- 53 — Sets: unique valuessets & data★★★★★
- 54 — Stats: understanding datastatistics★★★★★
- 55 — Network: a mini chatnetwork★★★★★
- 56 — Log: an event recordfiles & logging★★★★★
- 57 — Group: data by categorydata★★★★★
- 58 — Compiler tier: a tiny bytecode runnercompiler★★★★★
- 59 — Editor — a tiny text editora terminal app★★★★★
- 60 — Search — finding items in JSONsearch & data★★★★★
- 61 — Project — a mini banka project★★★★★
- 62 — Bubble sort — your first algorithmalgorithm★★★★★
- 63 — ASCII art — drawing with charactersoutput & loops★★★★★
- 64 — Binary search — halving the guessalgorithm★★★★★
- 65 — Files: processing many filesfiles & folders★★★★★
- 66 — Top ten: ranking recordsdata & ranking★★★★★
- 67 — Project — a grade booka capstone project★★★★★
- 68 — Errors: handling problemsexceptions★★★★★
- 69 — Patterns: finding matches with regexregular expressions★★★★★
- 70 — Game: a reaction time testgame & timing★★★★★
- 71 — Chart: a bar chart in the terminalvisualization★★★★★
- 72 — Modules: a project across filesmodules & structure★★★★★
- 73 — Capstone: a language that compiles to Pythoncompiler capstone★★★★★
- 74 — Merge: joining two listsdata & merging★★★★★
- 75 — Game: a simple opponentgame & strategy★★★★★
- 76 — Network: polling a servernetwork & timing★★★★★
- 77 — Network: downloading filesnetwork & files★★★★★
- 78 — Data: analyzing a month of temperaturesdata analysis★★★★★
- 79 — Compiler tier: functions in the mini languagecompiler & functions★★★★★
- 80 — Tools: reading command-line argumentscommand-line tools★★★★★
- 81 — Testing: checking the functions you wrotetesting★★★★★
- 82 — Compiler tier: expressions as treescompiler & AST★★★★★
- 83 — Game: Mastermind, guessing a secret codegame & logic★★★★★
- 84 — Web: extracting links from a pageweb & text★★★★★
- 85 — Compiler tier: from tree to bytecodecompiler & bytecode★★★★★
- 86 — Story: letters arriving one at a timestories and slow output★★☆☆☆
- 87 — Screen: clearing, ruling and boxingarranging the screen★★☆☆☆
- 88 — Time: a stopwatch and cooldownsstopwatch and cooldowns★★☆☆☆