I reverse-engineer old games, build developer tools across too many languages, and write more libraries than anyone asked for.
const jaenster = {
location: "Netherlands",
code: ["TypeScript", "Zig", "Go", "C++", "Swift"] as const,
pets: ["void", "pointer"], // no leaks so far
editor: "JetBrains (IDEA)",
rabbitHoles: ["Diablo II internals", "the entire WeakRef family", "reimplementing JS primitives for fun", "type-level TS"],
askMeAbout: ["building MCP servers", "reverse engineering old games", "Zig & distributed TS"],
currently: "reverse engineering Diablo II and building MCP servers in Zig",
funFacts: [
"thinks the type system is a separate programming language",
"won't stop talking about Diablo II",
"shipped more TypeScript micro-libs than anyone asked for",
"has read more disassembly than is strictly healthy",
"would rather write a polyfill than wait for TC39",
"measures uptime in Baal runs",
] as const,
} satisfies Developer;| Repo | What it does |
|---|---|
| jaenster-kolbot ⭐41 | Diablo II botting framework |
| d2-dedicated-server ⭐10 | Self-hosted cloud-native D2 1.14d realm + game server in Zig (modern PvPGN) |
| d2inject ⭐5 | Diablo II injection tooling |
| aether ⭐4 | The unseen layer between you and Diablo II |
| libd2 ⭐3 | A Zig reimplementation of the deterministic Diablo II 1.14d engine core |
| ryuk ⭐3 | Diablo II bot — the one that eats apples |
| d2-clientless ⭐2 | Clientless D2 1.14d Battle.net client (BNCS/MCP/BNFTP/D2GS) in Zig |
Mostly solutions to problems I gave myself.
| Repo | What it does |
|---|---|
| justscale ⭐16 | Write a single-server backend. It just scales across a cluster. |
| fake-socket ⭐5 | In-memory socket implementation |
| weakrefmap ⭐4 | WeakRef-backed Map — one of an unreasonable number of WeakRef variants |
| Repo | What it does |
|---|---|
| hush | macOS secrets daemon (ssh-agent for env vars) — Zig + libsodium |
| hoardarr | Drop-in SABnzbd replacement with a Sonarr/Radarr-style UI, pure Go |
| Repo | What it does |
|---|---|
| puppeteer-mcp-claude ⭐43 | Browser automation for Claude, powered by Puppeteer |
| remote-shell-mcp ⭐2 | Persistent SSH, SFTP, port-forwarding & Docker over MCP |
| ts-lsp-mcp ⭐2 | TypeScript language-server features as MCP tools |
| ghidra-mcp ⭐1 | Ghidra reverse-engineering over MCP — headless daemon, OAuth 2.1, k8s |
| node-debugger-mcp | A real Node.js debugger for Claude via the V8 Inspector Protocol |
| nestjs-mcp-controller | Build MCP servers in NestJS with @Controller/@Tool() classes |
Reach me on Discord — jaenster#1337
Most of it works. The rest are undocumented features.





