A typed data layer for Java.
Tava keeps one model at the center and makes each storage adapter state its limits.
record User(UUID id, String name) {}
var users = tava.table(User.class);
users.find(where(User::id).is(userId));I work on the part that usually gets expensive: typed data infrastructure, extensible game platforms, security software, and the tools around communities.
I like the places where feature implementation turns into a question about boundaries, scale, operators, or trust. That has led me from Java infrastructure and Minecraft platforms to Rust experiments, security products, and web tools people actually have to live with.
Browse the open source trailThe next person should not have to guess
I care about the hour after I leave the room: when somebody else has to understand the model, find the edge, and make the next change.
Good software does not need to explain itself loudly. It needs to leave fewer mysteries behind.
These are the kinds of problems I keep returning to. Pick one if you want the details.
Tava keeps one model at the center and makes each storage adapter state its limits.
record User(UUID id, String name) {}
var users = tava.table(User.class);
users.find(where(User::id).is(userId));The feature is only the beginning. The real craft is in making the system legible to its next maintainer, its operator, and the person who has never seen the code before.
Typed models, explicit adapters, and APIs that make the wrong path feel harder to take.
Game platforms, plugins, and services are healthier when new work does not require rewriting old work.
Good tooling reduces cognitive load for the person who has to run it, debug it, and trust it on a bad day.
Tell me what is breaking, what is growing, or what should exist next. I am usually most useful somewhere in the middle of it.