Overview

About me >>

Software engineer. I like writing in Rust and strive for simplicity. I've been programming for nearly a decade and have tried and built quite a few things.

Featured

All work >>

Some highlights of my work.

T-bank - Rust developer

Role: Rust Developer - Payment Authorization (Issuing Systems)

Key work: Owned a high-throughput authorization results pipeline (approx. 2000 auth/sec), rewrote legacy C logic in Rust.

Impact: Reduced Oracle dependence, improved data availability, enabled reliable Cassandra usage.

I added two new data outputs to authorization results pipeline: Kafka (with Confluent Wire Format) and Cassandra, as part of a compliance migration. Later, I rewrote Cassandra logic using a native Rust driver because cassandra-cpp was causing segmentation faults.

Extended a limits service to send Apache Avro‑formatted messages to Kafka in addition to saving into Oracle, moved part of Oracle logic to PostgreSQL in an internal HTTP service and in a Kafka consumer service, and started migrating the brand/merchant synchronization service, finishing about 60%.

I clarified ambiguous requirements alongside our system analyst, wrote tests and documentation, authored deployment instructions, and manually deployed services on bare-metal servers via SSH.

I left the role on good terms to successfully finish my Master's degree.

  • Rust
  • tokio
  • Protobuf
  • PostgreSQL
  • Cassandra
  • Kafka
  • Oracle DB
  • Jira

June 2025 - February 2026 (8 months)


Personal Website (custom server)

Maintained

This is the website you are viewing. It is a multithreaded synchronous web server (no async).

  • No frameworks or libraries (except httparse and log)
  • Server side rendering, no JavaScript
  • Custom content format

HTML rendering is implemented using string formatting and other string operations. Page contents are defined in a custom format to eliminate syntax friction. The web server parses and renders it into HTML as part of server-side rendering.

It dynamically renders CV pdf by spawning a typst process and using stdio pipes to communicate with it.

The server also serves static files, has some DoS and starvation protection, and handles signals for graceful shutdowns. It has custom logging with non-random request ids and supports file configuration using a custom parser.

  • Rust
  • Linux
  • HTML


jannie

Maintained

Utility for keeping files on PC organized - a way to document workspace.

  • Walks directories against an inventory and reports workspace state
  • Hierarchical blacklisting and whitelisting
  • Can execute any program for state reporting

Paired with a bash script, it prints the states of all git repositories on my laptop as a color-coded tree. This helps me quickly notice where I forgot to commit or push some changes.

  • Rust
  • clap
  • serde
  • indexmap

2025 - now


Protect

Maintained

Static file server with access control, leveraging my custom auth server.

  • Invisible token renewal using automatic redirects
  • Only built-in browser features are used - any web page can be hosted
  • Locks static content behind authentication

I use it to host my docs and tutorials made with mdbook.

  • Rust
  • Axum
  • simple-auth

2025 - now


Game Engine in Rust

In-progress

An engine I am developing with Rust to make games and GUI apps. I have already shipped a game built with it.

I was making games on and off since I was a kid, and this Rust engine is me returning to low-level gamedev.

  • Mesh, Material, Transform-based rendering
  • Game objects with components (not ECS)
  • Anchor + offset UI built on top of game objects
  • Tilemap (texture atlas) & text mesh built on top of it
  • Telemetry (logging & metrics)

The engine supports textures, UVs, and coloring in materials. Camera + transform model allows for intuitive world building. It has systems for handling keyboard and mouse events and to play sounds.

For tree-like structures flat storage is used, like indexmap and indexset, and objects just store each other's ids.

Components in game objects are implemented with Rc and RefCell that store Any trait objects (in actuality Any is a subtrait). I made a nice ergonomic interface for that using Deref and PhantomData.

As a deliberate constraint, the engine is only meant to render monospace text. The current text implementation supports only custom fonts, and monospace fonts conveniently map to tilemaps.

The engine is built with wgpu and winit for now, but lower-level bindings will be used eventually.

  • Rust
  • wgpu
  • winit

2025 - now


See also all my work.

About me | Contact | CV