pk.showcase
this siteCV + dashboard + 3D playground on one VPS. Cookie auth, per-IP rate limiting, precompressed static served by Caddy, HTTP/3.
- Caddy
- ASP.NET Core
- PostgreSQL
Hi, my name is
Systems-minded developer based in Europe. I care about latency, clean APIs and infrastructure that fits in RAM you can hold in your head. This whole site — CV, dashboard, 3D playground — runs on a single 4 GB VPS.
I run my own hardware in the cloud: a game server, this site, a sync service —
all wired together with systemd units, FIFOs and far too many journalctl -f
sessions. I like boring, observable infrastructure and loud performance numbers.
Day to day I write C#/.NET and TypeScript, tune PostgreSQL, and automate the boring parts with shell. Recently I've been obsessing over byte budgets: this page ships as a single request for the critical path.
Off-duty I administrate a Minecraft server for friends — which is why there's a live server dashboard hiding behind login.
C#, TypeScript/JS, SQL, Bash, Python, Rust (reading)
ASP.NET Core, minimal APIs, Npgsql, REST, auth & sessions
Vanilla-first, Three.js/WebGL, Core Web Vitals, no-framework builds
Linux/systemd, Caddy, PostgreSQL, SELinux, firewalld, Docker basics
CV + dashboard + 3D playground on one VPS. Cookie auth, per-IP rate limiting, precompressed static served by Caddy, HTTP/3.
Web console for a Minecraft server: status pings over the server-list protocol, console commands via a non-blocking FIFO, live log tail.
This page itself: critical path under 50 KB, system fonts, lazy 3D module, live RUM numbers in the hero (your measurements, above).
Three.js loads lazily — only when this section approaches the viewport, only when you don't prefer reduced motion. Drag to orbit.
~160 KB gzipped module, loaded on demand.
Drop .glb files into /srv/showcase/models/
and they'll appear in the picker.
Want to talk infra, games or web performance?