I make
complicated software
easier to change.

I work on the part that usually gets expensive: typed data infrastructure, extensible game platforms, security software, and the tools around communities.

Java / Rust / TypeScript / C++Finland / EuropeWork
Data infrastructureGame platformsSecurity softwareCommunity tools

most of my work happens where software gets complicated.

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 trail
10k+people reached by hosted services
81public repositories to learn from
?always choosing the right tech for the job

The next person should not have to guess

the version someone else inherits matters.

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.

things I
built.

These are the kinds of problems I keep returning to. Pick one if you want the details.

A typed data layer for Java.

Tava keeps one model at the center and makes each storage adapter state its limits.

What changedLess glue code, and fewer promises the backend cannot keep.
Java 21JDBCNoSQLDynamoDB
Read the system
Repository.java
record User(UUID id, String name) {}

var users = tava.table(User.class);
users.find(where(User::id).is(userId));
Model Adapter Data
One model.Honest capabilities.

built for change.

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.

make the boundary clear.

Typed models, explicit adapters, and APIs that make the wrong path feel harder to take.

design for the next subsystem.

Game platforms, plugins, and services are healthier when new work does not require rewriting old work.

leave the operator calmer.

Good tooling reduces cognitive load for the person who has to run it, debug it, and trust it on a bad day.

reliable by default designed for change systems over symptoms
Field notes from the workbenchread the notes.APIs, setup, and decisionsproject docs.

Have a problem
worth solving?

Tell me what is breaking, what is growing, or what should exist next. I am usually most useful somewhere in the middle of it.