Build your own grep
Build your own grep from scratch. Read stdin, filter text by pattern and handle exit codes while learning the foundations of Unix tools.
Go · Python · Zig
Build your own Git from scratch. Store blobs, trees and commits to understand content-addressed objects and how version control works.
Build it in your language
The tester treats your program as a black box: any language works. These are just the most convenient ones for this project.
Project in preparation: we are completing and verifying the implementation path and its tests. The capabilities below describe the project goal; starting the project is not enabled yet.
Git has a reputation for being complicated, but its data model fits on a whiteboard: four object types, a hash and a graph. Everything confusing lives in the interface, not underneath.
In this challenge you implement what's underneath. You'll create objects, write them compressed into .git/objects, build trees from the working directory, make commits and walk the history. Best of all: real Git will be able to read your repository.
12 stages across 4 phases. Every stage comes with its guide and its tests: you move on when they pass.
init, writing zlib-compressed blobs and reading them back by hash.
Represent directories, write the working tree and read it back.
Commits with parents, refs, HEAD, and a log that walks the graph.
Checking out a commit and rebuilding the working directory.
Build your own grep from scratch. Read stdin, filter text by pattern and handle exit codes while learning the foundations of Unix tools.
Go · Python · Zig
Build a coding agent from scratch. Connect models through OpenRouter, secure API keys, define tools and implement the autonomous ReAct loop.
Python · TypeScript
Build SHA-256 and HMAC from scratch. Implement rotations, padding and compression blocks, then sign and verify messages without a crypto library.
C · Python · Go