Keefer Sery

Product engineer

I'm a software engineer at Bank of America, leading projects end to end. The projects below are mine, built in the open. Each one has a note on what turned out to be the actual problem.

Projects

Ordered by most recent work

Slow Your Roll (opens in new tab)

Expected-value tracker for World of Warcraft bonus rolls.

39 commitsLast push today

A bonus roll buys one extra chance at a boss's loot, and the usual advice is to spend it where you have the most upgrades, or where your best-in-slot item drops. Both fail because a roll draws from the boss's entire loot table, so a long list of upgrades dilutes every individual chance, while a small shot at a big upgrade is often worth less than a good shot at a modest one. Slow Your Roll scores what a roll is actually worth on average, then applies that number to the decisions around it: which boss to spend on, whether the guaranteed item in your weekly vault beats rolling, and whether switching loot specialization would improve the pool.

  • Vanilla JS
  • TypeScript (checkJs)
  • Zero-build static
  • Node test runner

Resiege (opens in new tab)

Quality-of-life patches and a revived multiplayer lobby for Dungeon Siege (2002).

2 commitsLast push 8d ago

Reviving a dead game usually stalls on its matchmaking server, but Dungeon Siege never hardcoded one: gun_server is a plain INI setting, so pointing a client at a self-hosted lobby is an edit rather than a binary patch or a DNS hijack. The harder half is that ZoneMatch was only ever discovery — it hands out addresses and play then runs peer-to-peer over DirectPlay 8, so a faithful revival yields a browsable game list full of games nobody behind NAT can join, and one that is safe to run in 2026 has to relay rather than hand a player's address to another player. The content half rewrites the game's own tank archives directly from Linux, with no Siege Editor and no Windows toolchain, mostly to surface things the game already ships and never offers you.

  • Python
  • Zig
  • x86 assembly
  • DirectPlay 8
  • Wine/Proton

Vibelock (opens in new tab)

Item builds for Deadlock, generated from live match data.

109 commitsLast push 13d ago

Deadlock build guides rank items by win rate, but win rate mostly records when an item gets bought, not what it does. The expensive items are only affordable to players who are already winning, so they inherit a result they had no part in: on live match data, an item's raw win rate tracks the win probability that already held at the moment of purchase at r ≈ 0.91. Vibelock scores each item only against purchases made at a similar net worth, then fills each phase against the budget you'd realistically have, since the five best items rated separately rarely compose into a build you can afford.

  • React
  • TypeScript
  • TanStack Query
  • Vite
  • Valibot

Activity

150 commits · updated Sep 1