# Hacker Tutorials > Build it from scratch. A course catalogue made of Hacker News posts, with the receipts. Courses are paths through sources, in learning order. Every step shows its Hacker News points (summed across every submission) and verbatim HN comments, criticism included. ## Courses - [Build a database](https://hackertutorials.com/tracks/databases/): A durable key-value store you wrote, with a B+tree, crash recovery and transactions, a small SQL layer on top, and enough knowledge of PostgreSQL's internals to read its source. 14,681 points across 21 sources; 3–5 months part-time (editorial estimate). - [Build an interpreter and a compiler](https://hackertutorials.com/tracks/compilers/): Two interpreters for one language (a tree-walker, then a bytecode VM with a garbage collector), a compiler that turns a real language into assembly you can run, and enough LLVM to know what you'd use in production. 24,263 points across 26 sources; 3–5 months part-time; add 3–4 months for the optional book in step 7 (editorial estimate). - [Build a neural network, then a GPT](https://hackertutorials.com/tracks/ml/): An autograd engine you wrote, a GPT you trained from scratch with a tokenizer you wrote, and a from-scratch inference loop for a modern open-weights architecture. Enough to read a model's source and know what every line does. 26,668 points across 30 sources; 4–6 months part-time (editorial estimate). - [Build an operating system](https://hackertutorials.com/tracks/os/): A Unix shell you wrote; a small RISC-V operating system with processes, paging, user mode, system calls and a file system; an x86-64 kernel in Rust with interrupts, paging and a heap allocator; xv6 extended through MIT's nine labs; and Linux kernel modules you built and loaded, with enough Linux internals to read the kernel's source. 29,894 points across 23 sources; 6–9 months part-time (editorial estimate). - [Build a network stack, then the protocols on top](https://hackertutorials.com/tracks/networking/): An HTTP server on raw sockets, a DNS resolver that walks from the root servers, a userspace TCP/IP stack (Ethernet, ARP, IPv4, ICMP, TCP) that answers ping and carries TCP connections, a toy TLS 1.3 client that talks to a real server, and a BitTorrent client that downloads a real file from real peers. 19,547 points across 22 sources; 4–6 months part-time (editorial estimate). - [Build your own developer tools](https://hackertutorials.com/tracks/tools/): A terminal text editor in about 1,000 lines of C, with search and syntax highlighting; a Git in about 1,000 lines of Python that can init, add, commit, log, checkout and tag, compatible with real Git repositories; and a Redis-like server in C with an event loop, hashtables, sorted sets and key expiry. 9,234 points across 8 sources; 6–10 weeks part-time for the opening stages (editorial estimate). ## Build a database: steps - 1. [Build your own database (interactive)](https://www.nan.fyi/database) by Nan Yu - 2. [How does a relational database work?](http://coding-geek.com/how-databases-work/) by Christophe Kalenzaga - 3. [CaskDB: build a Bitcask-style key-value store](https://github.com/avinassh/py-caskdb) by Avinash Sajjanshetty - 4. [Let's Build a Simple Database (a SQLite clone in C)](https://cstack.github.io/db_tutorial/) by Connor Stack - 5. [Compare your toy with the real thing: SQLite internals](https://jvns.ca/blog/2014/09/27/how-does-sqlite-work-part-1-pages/) - 6. [Build Your Own Database From Scratch](https://build-your-own.org/database/) by James Smith - 7. [Writing a SQL database from scratch in Go](https://notes.eatonphil.com/database-basics.html) by Phil Eaton - 8. [Side quest: Build Your Own Redis with C/C++](https://build-your-own.org/redis/) by James Smith - 9. [The Internals of PostgreSQL](https://www.interdb.jp/pg/) by Hironobu Suzuki - 10. [How Postgres Makes Transactions Atomic](https://brandur.org/postgres-atomicity) by Brandur Leach - 11. [CMU 15-445/645: Intro to Database Systems](https://15445.courses.cs.cmu.edu/) by Andy Pavlo - 12. [Implementing a distributed key-value store on top of Raft in Go](https://notes.eatonphil.com/2023-05-25-raft.html) by Phil Eaton ## Build an interpreter and a compiler: steps - 1. [The Super Tiny Compiler](https://github.com/jamiebuilds/the-super-tiny-compiler) by Jamie Kyle - 2. [(How to Write a (Lisp) Interpreter (in Python))](https://norvig.com/lispy.html) by Peter Norvig - 3. [Crafting Interpreters, part II: a tree-walk interpreter](https://craftinginterpreters.com/) by Robert Nystrom - 4. [Crafting Interpreters, part III: a bytecode virtual machine](https://craftinginterpreters.com/) by Robert Nystrom - 5. [Let's Build a Compiler](https://compilers.iecc.com/crenshaw/) by Jack Crenshaw - 6. [An Incremental Approach to Compiler Construction](http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf) by Abdulaziz Ghuloum - 7. [Writing a C Compiler (blog series)](https://norasandler.com/2017/11/29/Write-a-Compiler.html) by Nora Sandler - 8. [My First Language Frontend with LLVM (Kaleidoscope)](https://llvm.org/docs/tutorial/) by LLVM project ## Build a neural network, then a GPT: steps - 1. [An Introduction to Neural Networks](https://victorzhou.com/blog/intro-to-neural-networks/) by Victor Zhou - 2. [Building micrograd](https://www.youtube.com/watch?v=VMj-3S1tku0) - 3. [makemore (five videos)](https://github.com/karpathy/makemore) - 4. [Let's build GPT: from scratch, in code, spelled out](https://www.youtube.com/watch?v=kCc8FmEb1nY) - 5. [Let's build the GPT Tokenizer](https://www.youtube.com/watch?v=zduSFxRajkE) - 6. [A GPT in 60 Lines of NumPy](https://jaykmody.com/blog/gpt-from-scratch/) by Jay Mody - 7. [Build a Large Language Model (From Scratch)](https://github.com/rasbt/LLMs-from-scratch) by Sebastian Raschka - 8. [nanoGPT](https://github.com/karpathy/nanoGPT) by Andrej Karpathy - 9. [llama3 from scratch](https://github.com/naklecha/llama3-from-scratch) by naklecha - 10. [Fast LLM Inference From Scratch](https://andrewkchan.dev/posts/yalm.html) by Andrew Chan ## Build an operating system: steps - 1. [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) by Remzi and Andrea Arpaci-Dusseau - 2. [Write a Shell in C](https://brennan.io/2015/01/16/write-a-shell-in-c/) by Stephen Brennan - 3. [Operating System in 1,000 Lines](https://operating-system-in-1000-lines.vercel.app/en/) by Seiya Nuta - 4. [Writing an OS in Rust](https://os.phil-opp.com/) by Philipp Oppermann - 5. [MIT 6.1810: Operating System Engineering, with xv6](https://pdos.csail.mit.edu/6.1810/2025/) - 6. [The Linux Kernel Module Programming Guide](https://sysprog21.github.io/lkmpg/) by Salzman, Burian, Pomerantz, Mottram, Huang - 7. [Linux Insides](https://github.com/0xAX/linux-insides) by 0xAX ## Build a network stack, then the protocols on top: steps - 1. [Beej's Guide to Network Programming](https://beej.us/guide/bgnet/) by Brian "Beej" Hall - 2. [Let's Build A Web Server](https://ruslanspivak.com/lsbaws-part1/) by Ruslan Spivak - 3. [Implement DNS in a Weekend](https://implement-dns.wizardzines.com/) by Julia Evans - 4. [Let's code a TCP/IP stack](https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/) by Sami Niiranen - 5. [The Illustrated TLS 1.3 Connection](https://tls13.xargs.org/) by Michael Driscoll - 6. [Implementing a toy version of TLS 1.3](https://jvns.ca/blog/2022/03/23/a-toy-version-of-tls/) by Julia Evans - 7. [Building a BitTorrent client from the ground up in Go](https://blog.jse.li/posts/torrent/) by Jesse Li - 8. [High Performance Browser Networking](https://hpbn.co/) by Ilya Grigorik ## Build your own developer tools: steps - 1. [Build Your Own Text Editor](https://viewsourcecode.org/snaptoken/kilo/) by Paige Ruten - 2. [Git from the inside out](https://maryrosecook.com/blog/post/git-from-the-inside-out) by Mary Rose Cook - 3. [Write yourself a Git](https://wyag.thb.lt/) by Thibault Polge - 4. [Build Your Own Redis with C/C++](https://build-your-own.org/redis/) by James Smith ## About - [How we count](https://hackertutorials.com/method/): sources, steps, counting rules and quote rules. - [Receipts](https://hackertutorials.com/receipts/): every source ranked by HN points.