FForge
Open the app →
compiler · systems · high-frequency trading

Practice that behaves
like the interview.

Most preparation sites hand you the pattern, the approach and the solution on one page and call it studying. You leave knowing you could have solved it. Forge makes you sit with the problem first — hints unlock on a clock, the pattern stays hidden, and what you reveal is recorded against the attempt.

Free and open. No account needed — progress saves in your browser. Sign in only if you want it on more than one device.
120
problems, each tiered and timed
91
guided labs · 171 steps you actually run
27
long-form guides · 100k words
379
recall, rapid-fire and estimation
33
patterns, each linked to the problems that need it

What makes it different

01

Hints arrive on a clock, not on demand

Every problem hides its pattern, its approach and its solution behind gates that open on a timer you choose. Drill opens them early, Study opens everything, Mock opens nothing until the budget is spent. The pattern label is treated as a spoiler, because naming the pattern is most of the answer.

02

The pattern is hidden in the list too

A bank that labels every problem "DP — Knapsack" has already told you what to do. Here the list shows tier and status; you meet the problem before you meet its category, which is the only way the practice resembles the interview.

03

Labs walk you through, step by step

91 labs across 23 tracks, in their own public repository — perf counters, cache behaviour, codegen, concurrency, syscalls, AArch64 and SVE. Each opens as a guided session: what it teaches, the build line, then 171 steps with the command to copy and the output that step produced on the machine that wrote the lab, so you compare against a real number instead of guessing. It is finished when you can write what it showed on YOUR machine and what surprised you.

04

Organised by what the job asks of you

Not by company folklore. 3 roles, each with the day it actually involves and its competencies sorted into foundation, working and expert. Problems, labs, guides and recall questions hang off those competencies, and picking one re-sorts every surface.

05

Rapid fire, and estimation

121 mechanism questions across C++ internals, systems, architecture, compilers, probability and microstructure — one at a time, nothing else on screen: commit out loud, reveal, then see the follow-up where most people come apart. Plus 19 estimation questions that make you write your chain of assumptions before showing you a worked one, 32 C++ concepts with the mechanism and the follow-ups, and 33 patterns each linked to the problems that need it.

06

Your progress is yours

Everything works signed out, saved in your browser. Sign in with Google and it follows you between devices, merged rather than overwritten, so a session on your laptop never erases one from your phone.

Three roles, in depth

Pick one and every surface re-sorts around it: which problems matter, which labs to run, which guides to read, which questions you must answer without preparation.

⚙

Compiler Engineer

LLVM · IR · backends · codegen

You own a stage of a pipeline that turns text into machine code, inside a codebase of millions of lines that thousands of people depend on being correct. Most days are not writing new optimizations. They are reducing a bug report to twelve lines, bisecting which pass broke it, reading IR before and after, writing the FileCheck test that would have caught it, and defending the patch in review.

  • Triage a report: reproduce, reduce with llvm-reduce or creduce, bisect the pass with -opt-bisect-limit
  • Read IR at three stages and say which transformation was wrong
  • Write or fix a pass; keep the analyses it preserves honest
6 competencies
▤

Systems / Performance Engineer

perf · cache · kernel · profiling

Someone hands you a program that is too slow and no idea why. Your value is that you do not guess. You build a repeatable measurement, find the bottleneck with evidence, name the mechanism, change one thing, and prove the change with numbers a sceptic would accept. Half the job is refusing to accept a plausible story without a counter behind it.

  • Turn a vague complaint into a repeatable workload with a known noise floor
  • Profile it, get from wall time to a source line through inlining and stripped libraries
  • Classify the bottleneck: branches, memory, dependency chain, ports, syscalls, waiting
6 competencies
⚡

HFT / Low-Latency Engineer

tick-to-trade · C++ · microstructure

A packet arrives and a decision has to leave the box before anyone else's. The budget is hundreds of nanoseconds, so nothing on the hot path may allocate, block, lock, or call the kernel. You spend your days shaving a path you have instrumented at every stage, arguing about data layout, and being certain about memory ordering because the bug you cannot reproduce costs money every day it survives. The loop also asks you to reason about probability out loud and to know enough market structure to understand what the code is for.

  • Read the per-stage latency histograms from last night and pick the worst tail
  • Instrument another stage; timestamps in a preallocated ring, never a log line
  • Redesign a structure so a lookup is one cache line instead of four
9 competencies

Run it yourself

Next.js and React, with Supabase for Google sign-in and Postgres when you want it — and fully functional without it. Two repositories: the site, and the labs you run on your own machine. Clone either, npm install, npm run dev.

Next.js · ReactApp Router, server-rendered guides
SupabaseGoogle OAuth, Postgres, row-level security
localStorageworks with no backend at all
CRDT mergedevices join, never overwrite

Everything in here

27 guides and 91 labs, every one its own page. Browse without signing in.

Guides

Hands-On Code Lab
Interview Preparation

Labs