I'll be upfront: I love the CodeCrafters idea. Building real systems from scratch instead of grinding another tutorial is genuinely how a lot of this stuff finally clicks. But every time I went to commit, the price stopped me cold. And somewhere around the tenth time I closed that pricing page, I had the obvious thought: it's 2026, why am I being asked to pay this much just to learn by building?
So I built the thing I wanted instead. It's called Ship That Code, it's run under my company Echoed Labs, and the whole pitch is simple: the build-your-own-X approach, free.
What it actually is
Every lesson runs on the same loop: choose → write → run. You get a real problem, you write real code, it executes against real tests right there in the browser. No multiple choice, no copy-pasting from a sidebar. There's AI feedback as you go so you're not stuck staring at a red test with no idea why.
What a lesson actually looks like
Rather than describe it, let me walk you through the very first lesson of the Build Redis course: implementing PING.
Redis speaks a protocol called RESP, where every response starts with a type prefix and ends in \r\n. The lesson gives you just enough to act on:
-
PINGshould reply with the simple string+PONG\r\n -
PING helloshould echo the message back as a bulk string, which encodes the length first:$5\r\nhello\r\n
You're handed a starter file with the plumbing already done (reading stdin, parsing quoted arguments) and one function to fill in:
def handle_command(args):
"""Process a Redis command and return the RESP response."""
cmd = args[0].upper()
if cmd == "PING":
# TODO: Return +PONG\r\n for no args
# TODO: Return bulk string for PING <message>
pass
return "-ERR unknown command\r\n"
That's the choose and write part. Here's the answer you'd write to make the tests pass:
def handle_command(args):
"""Process a Redis command and return the RESP response."""
cmd = args[0].upper()
if cmd == "PING":
if len(args) == 1:
# PING with no message -> simple string PONG
return "+PONG\r\n"
# PING <message> -> echo it back as a bulk string
message = args[1]
return f"${len(message)}\r\n{message}\r\n"
return "-ERR unknown command\r\n"
Hit run, the tests fire against your actual program over stdin, and you watch PING and PING hello go green. Small win, but you just implemented a real Redis command from the protocol up, and every later lesson (SET, GET, expiry, replication) builds on exactly this loop.
What you can build
There are 80+ build-from-scratch courses so far. A taste:
- Redis, a database, Git
- A compiler (you build your own programming language)
- A container runtime, basically your own mini-Docker
- An OS kernel, a shell, a text editor
- A ray tracer, a 3D renderer, a game engine
- A neural network, BitTorrent, a blockchain, a Raft KV store
All across 9 languages, so you can build Redis in Go, then go again in Rust if you want the pain.
Not just one-off projects
If you'd rather follow a track than poke around, there are two structured ways in:
- Language tracks — Fundamentals → Intermediate → Advanced for each language (37 of them right now).
- Career paths — courses chained into routes like Backend, Frontend, Full-Stack, and DevOps. The backend path runs around 80 hours, zero to job-ready.
Why free
Because the thing that kept me out was the cost, and I didn't want to rebuild the exact wall I was trying to knock down. Free forever, no credit card, your first lesson takes about two minutes. That's the whole promise.
I'd love your feedback
It's early and I'm building in the open, so I genuinely want to hear what breaks, what's confusing, and which course you'd want next. If you've bounced off tutorials before, pick a system and start building — then tell me what you think in the comments.n
Your Task
Build a program that:
Reads commands from stdin (one per line)
Parses the command name and arguments
For PING, writes the correct RESP response to stdout
This is the foundation everything else builds on. Let's go!

Top comments (0)