$ git blame customers.sql

Whodunit logic puzzles for developers, solved with logs, git history and SQL dumps.

In general editions or in your own language, with one set of rules. A floor plan on a five by five grid, a handful of colleagues and the files you would open at work anyway. Bring a pencil.

NewNow in your languageJavaScript · Python · C++ · Java · PHP · C#
DeveloperDokuOne set of rules, every edition

Somebody dropped the production table

DeveloperDoku is a series of logic puzzle books for developers. Each case is a floor plan on a five by five grid and a handful of colleagues who were in the building when something went wrong. Everyone stands in a different row and a different column. The clues are files you would open at work anyway: a postgres log, a badge reader script, a Slack export, a git blame. Place every person on the plan and one of them turns out to be standing where it happened.

You need a pencil, not a laptop. The code and the queries are printed on the page and you run them in your head, time zones and NULLs included. The full reasoning for every solution is at the back of the book.

DROP TABLE customers;

A case from Incident Reports, Cachebury
12345ABCDE
  • Console A2
  • Access point B3
  • Coffee machine B5
  • Printer C3

Pick a suspect to trace them through the files.

  1. Everyone stands in a different row and a different column.
  2. The DROP was typed at the console. Whoever typed it was the only person in the server room.
  3. The kitchen door only opens with a badge, and logs every swipe.
  4. Only the culprit lies.
postgres.log
2026-10-02 01:12:04 UTC [48213] root@prod LOG:  statement: DROP TABLE customers;
employees.sql
INSERT INTO employees  (id, name, badge_id)VALUES  (1, 'Jack',  '0x3F'),  (2, 'Maya',  '0x1A'),  (3, 'Nina',  '0x77'),  (4, 'Raj',   NULL),  (5, 'Sam',   '0x2C');
badge.log
# kitchen door · Europe/London02:05:22  0x3F  IN02:14:40  0x1A  IN02:21:09  0x3F  OUT
#incidents
02:12  sam   in the fishbowl. demo just died on screen02:12  jack  at the coffee machine. out of beans, again02:13  maya  open office, right next to Nina02:13  raj   at my desk in the corner, VPN is crawling02:13  nina  standing at the printer. prod is down??

Who dropped the customers table?

The general editions

Or in your language ↓
  1. Volume 1

    Incident Reports

    Release nights, outages and a leaked API key at a scale-up office. The evidence is postgres logs, git history, badge readers, wifi access points and Slack. This is the place to start, and the one to give a colleague who has written a postmortem or two.

    • postgres.log
    • git log
    • badge.log
    • wifi
    • #slack
    Buy on Amazon
  2. Volume 2

    Legacy Code

    Every case is set in a different year: a mainframe room in 1983, a LAN party in 1997, New Year's Eve 1999 at an insurer in Arnhem. You read BASIC, COBOL, DOS batch files, IRC logs and fax headers, printed on tractor-feed paper. Mind the two-digit years and the twelve-hour clocks.

    • BASIC
    • COBOL
    • AUTOEXEC.BAT
    • IRC
    • fax
    Buy on Amazon
  3. Volume 3

    Game Over

    Crunch week at a game studio, a few days before launch. Someone leaked the build, someone pushed the patch that crashes on boot. Crash dumps, engine logs and build server output place people in the studio, and telemetry places their avatars in the level that was being playtested that night. You solve both grids at once.

    • crash.dmp
    • engine.log
    • build output
    • telemetry
    Buy on Amazon
  4. Volume 4

    Data Crimes

    Almost every clue is a query with its result set, so JOINs, NULLs and GROUP BY decide who stood where. Each case comes with a QR code to a SQLite file, so you can run the queries for real when you get stuck. Written for data analysts and for anyone learning SQL.

    • JOIN
    • NULL
    • GROUP BY
    • case.sqlite
    Buy on Amazon

$ developerdoku --lang

Now in your language

Six editions where every clue is written in one language, traps included. Pull yours off the shelf and see if you spot its first trap.

.js · Language edition

DeveloperDoku JavaScript

Every clue is written in JavaScript: the same floor plans and the same rules, with the traps only JavaScript can set.

alibi.jstrap 1 of 6
// She says she left on 2 October.
const left = new Date(2026, 10, 2);
console.log(left.toDateString());

What does this print?

Buy on Amazon

0 of 6 traps found