~/dreamboard · build in public
Build it from scratch.
The fastest way to really understand something is to build it yourself, badly, until it works. This is our running list of the hard, foundational projects worth building from nothing. We ship client work for a living; we build these to get sharper at it. Each one we finish becomes a write-up on the blog.
25 to build · 3 up next · 6 fields
Tooling
5The tools we live in every day, taken apart and rebuilt.
Shell
Command parsing, processes, pipes, and job control from scratch.
Version control
Commits, diffs, and history. Understand git by rebuilding it.
Text editor
Raw terminal input, a buffer, and a cursor that behaves.
Package manager
Resolve dependencies, fetch, and install without breaking everything.
IDE
Editor, runner, and tooling stitched into one place.
Web & Networks
3Everything that happens between a request and a response.
Web server
Raw sockets to HTTP responses. The thing every site secretly is.
Browser
Fetch, parse, lay out, and paint a page from first principles.
Network protocol
Design the packets, the handshake, and the rules of the conversation.
Languages & Compilers
2Teach a machine to read a language of our own.
Programming language
Lexer, parser, and interpreter for a small language of our own.
Compiler
Source code in, real machine or byte code out.
Data & Crypto
3Where the bytes are kept, and kept secret.
Database
Storage, an index, and a query layer that does not lose your data.
Encryption algorithm
Learn cryptography the only honest way: by getting it wrong first.
Blockchain
Blocks, hashing, and consensus, demystified by building it.
Graphics & Engines
3Pixels, windows, and the loops that drive them.
Game engine
A loop, a renderer, and a scene that comes alive.
GUI toolkit
Widgets, layout, and events without a framework underneath.
Window manager
Decide where every window lives and how it moves.
Systems & OS
9The machine underneath the machine. The deep end.
Virtual machine
A byte code and the machine that runs it.
CPU emulator
Fetch, decode, execute. A processor in software.
File system
Inodes, blocks, and directories on top of raw storage.
Memory allocator
malloc and free, written by hand, fragmentation and all.
Scheduler
Decide which task runs next, and make it feel fair.
Container runtime
Namespaces and cgroups: what Docker is really doing.
Operating system
Boot, manage memory, run processes. The big one.
OS kernel in assembly
Down to the metal: a kernel written in assembly.
Hypervisor
Run whole machines inside a machine.
We build the hard stuff for fun.
That is the kind of team building your project. Follow along on the blog, or put us to work on something of your own.