Faultline

Build a rate limiter, a cache, a connection pool or a task queue by hand. We run your program, put it under load, and show you what it should have done and what it did.

Go, Python, JavaScript or Rust. Standard library only. The grader never reads your code. It watches what your program does.

Read the first challenge. Free to start. Invite-only while the grading machine is small.

How it works

Pull the starter, write your code, run faultline check, and read the result. When a stage fails, you see what it should be, what your code did, and what to try next.

Stages and levels

  1. L1 Correctness. We send your code many calls and compare every answer with our solution.
  2. L2 Performance. Your code races a well-tuned solution in your language, on the same machine.
  3. L3 Resilience. We make things go wrong on purpose: refused, reset and stalled connections, or a sudden flood.
  4. L4 Observability. Your code reports its own numbers. We compare them with what really happened.

Every challenge has L1 and L2. Four of them also test resilience (L3): the connection pool, the task queue, the message log reader and the rate limiter. Three of them also test observability (L4): the connection pool, the task queue and the message log reader.

Who it is for

For you if you have used these parts through a library and never written one. You like your own editor and a terminal. You want to know what your code does under load, not only whether it returns the right value.

Not for you if you are learning to program, you want to rebuild Redis for fun, or you want a question bank for interviews. Those are good goals. Other sites do them better.

Why invite-only?

Every check runs your code on our own grading machine, one check at a time per lane. We let people in in small groups so a check stays fast. Ask the person who told you about Faultline for an invite.

Browse the challenges or read Getting started.