Projects

What I build when nobody is asking.

Side projects are where I practice the whole craft at once (data ingestion, reverse engineering, modelling and UI) without a deadline deciding the quality bar.

Job Market Observatory

Data project

A clearer view of the technology job market.

Which roles are in demand? Where are the opportunities, what pay is advertised, and which companies are recruiting? Explore job-market data from the countries in our sample, with the context behind every number.

Skills in context
A language used to build software means something different from a language used for operational scripts. Understand the role behind the keyword.
Pay transparency
Explore stated compensation alongside disclosure rates and sample sizes. Missing pay stays unknown.
Places and companies
See where opportunities appear, how work modes differ and which organizations advertise relevant roles.
Explore the Observatory

Mr Rabbit

Educational game · In development

An illustrated educational adventure in Italian for children aged 6–8, built with Unity for Android tablets. Reading, writing and early maths meet a world of gardens, cooking and train journeys, with offline Italian narration and on-device handwriting recognition. Not yet available on Google Play.

IPTV Receiver

Android app · Development APK available

A native Android IPTV player for phones and tablets, built with Kotlin, Jetpack Compose and Media3. Connect your own Xtream-compatible provider to browse live TV, films and series, with watch history, resume playback, a programme guide and parental controls. A signed development APK is available for Android 8.0 and later; the app is not yet on Google Play and includes no subscription or content.

War Thunder · Tactical Replay

Live

What it is

War Thunder is a vehicle-combat game whose battle replays are stored in an undocumented binary format. This project turns those raw files into after-action reports: full scoreboards with the vehicles actually played, kill feeds, zone captures, the final score and every unit's movement (replayed over the game's own tactical maps).

How it works

Ingest
A resilient import service follows the public squadron-battle feed and the battles played locally, downloading every replay segment from the CDN with completeness gates and retries (partial data never poisons the archive).
Decode
Rosters, kill and award packets, team tickets and unit positions (~3 samples per second) were reverse-engineered byte by byte from the recorded network stream, then validated against in-game ground truth before any value is trusted.
Replay
A canvas viewer replays every battle on the real in-game map (animated units, kill markers, a synchronized battle feed) behind a clan-searchable archive with server-side pagination.

Stack

  • C# / .NET 10
  • PostgreSQL · jsonb
  • EF Core
  • Playwright
  • Docker
  • Binary reverse engineering
  • Canvas 2D
Open the replay browser

Replay archive · update times vary