Aarni Annanolli / software developer
Suomi

Aarni Annanolli

Hi, I’m Aarni. I build full systems, from the client and the server to the deployment.

Based in
Järvenpää, Finland
Studying
Software development at Keuda, second year
Looking for
A developer role where I write code every day
Elsewhere
Email  ·  GitHub  ·  CV

About

I’m a second-year software development student at Keuda, and I live in Järvenpää. I enjoy working on every part of a system: design, code, tests and deployment.

My biggest project is YHDE, a real-time collaboration service for the Godot game engine. I’ve been building it since January 2026. It has a C++ client, a C# server on .NET 10, a PostgreSQL database, a React admin site and a production deployment, and I wrote all of it. While building it I learned event sourcing, concurrent programming and load testing, and I documented the design as I went.

I also work as a web developer in a team of four on a client project through school. I’m looking for a developer job where I can write code every day and learn from more experienced developers.

Projects

YHDE Jan 2026 to now

A real-time collaboration service for Godot, currently in beta. Several people can work in the same project at once, and each edit, cursor and selection is sent to the rest of the team immediately. It consists of a native client, a server that validates every edit, a database log of all edits, and a production deployment.

  • 800editors online at once in a load test on the production server, no disconnects
  • 40 msp95 time for an edit to be committed and broadcast, at 800 editors
  • 517 MBpeak RAM at 1,000 simulated editors
  • 154server tests run on every change
  • 30,000lines of C# and C++

How it fits together

Drag the boxes

Operation log

Each project is stored in PostgreSQL as an append-only, hash-chained log of operations. Stored operations are never changed. The editors rebuild scenes from the log, and the same log is used for history, undo, replay and auditing. Clients send proposed edits to the server. The server validates them, orders them and commits them to the database before broadcasting them.

Load testing

The first load test failed at 500 editors. Each edit used its own transaction and database connection, and during bursts PostgreSQL ran out of connections. I changed the commit path so that each branch has one writer that commits all waiting edits in a single transaction. I also kept the connection pool under PostgreSQL’s limit and encoded each cursor update once for all recipients. After these changes, 800 editors ran on the production server with a 40 ms p95 and no disconnects.

Client

The client is a C++ GDExtension that runs inside the Godot editor on Windows, macOS and Linux. The editor doesn’t report what changed, so after every change to the undo history the client compares the scenes with a copy of the last synced state and sends the differences. Unsent edits are stored on disk and sent again after a reconnect, and the server removes duplicates by ID. Live script editing uses operational transformation, and the server decides the order of edits.

Deployment

YHDE runs in Docker Compose on a Hetzner server behind Caddy, with daily database backups. Each server update starts with a backup and rolls back automatically if the new version fails to start. GitHub Actions builds the native core for Windows, macOS and Linux and runs the 154 server tests on every change.

Accounts and admin

YHDE is a hosted service in beta. Users can sign in with email, GitHub or Google, including from inside Godot. Teams have plans, roles and invite links. There is a dashboard for users and an admin page with staff roles and an audit log. The server distributes add-on updates after they are approved on the admin page.

Who built it

I designed and built every part of YHDE myself. YHDE is going open source.

Aatra Jun 2026 to now

A grand strategy game I’m making alone in Godot. Each game generates a new world. The world generator is written in C++ for performance, and the gameplay is written in GDScript. It’s still in development.

Education

Keuda July 2025 to now

Vocational qualification in information and communications technology, software development. I’m in my second year.

Experience

LuppaSoppi 2025 to now

I work as a web developer in a team of four on a client project through Keuda. We built LuppaSoppi’s WordPress website together with the client, and we’re now expanding it into an online store.

What I work with

ProgrammingC#, TypeScript, C++, Python, JavaScript, SQL
Backend.NET, PostgreSQL, Dapper, WebSockets, MessagePack
FrontendReact, Vite, Tailwind CSS, WordPress
DevOpsDocker, Docker Compose, Caddy, Ubuntu servers, GitHub Actions
GamesGodot with GDScript and C++, editor plugins
SpokenFinnish (native), English (fluent)

Click any name to swap it for its logo, and drag a row by its label.

Contact

If you’re hiring a developer, I’d like to hear from you.

[email protected]

This is the software development version of my portfolio. There’s also a game development version.