Slice of Internet
Welcome to my little slice of the Internet.
Home to all my weird and odd projects - like the character below, running along when scrolling.
Enjoy!
Welcome to my little slice of the Internet.
Home to all my weird and odd projects - like the character below, running along when scrolling.
Enjoy!
A terminal file manager for local files and S3 object stores, with a Midnight Commander inspired dual pane layout.
Available for macOS & Linux.
BuckitTLS certificate and domain-expiry monitoring. Ground-up rewrite of a legacy Ruby/Sinatra app: ~5,900 lines with 674 tests, a custom Postgres-backed job queue and three-node HA deployment.
Read more crtup.comTLS certificate & domain expiry monitoring :: Crystal, PostgreSQL, Ansible
Built a monitoring service that tracks TLS certificate coverage for registered domains, polling Certificate Transparency logs (crt.sh) and whois on a daily schedule and alerting on DNS names about to lose valid certificates. Complete ground-up rewrite of a legacy Ruby/Sinatra application, redesigned around DNS names rather than certificates to eliminate false alerts on every renewal.
3D multiplayer capture-the-flag tank game in Crystal, with an authoritative UDP game server, client-side prediction, and a hand-rolled binary network protocol. Four teams battle over flags in a generated city across timed 8-minute rounds. Cross-platform Windows/macOS builds.
Read more Flagjack3D multiplayer capture-the-flag tank game :: Crystal, raylib
Built around an authoritative headless UDP server running a fixed 30 Hz simulation, with client-side prediction and reconciliation so steering stays instant under latency. The pure simulation core is a shared library used unmodified by both client and server, giving one source of truth for game rules.
Designed a binary wire protocol with value quantization and Quake III-style delta compression against per-client acknowledged baselines - ~15-20× smaller than JSON and small enough to avoid IP fragmentation.
A pure, IO-free simulation core shared by client and server, making game rules unit-testable in isolation and guaranteeing prediction matches authority.
Automated specs and Windows/macOS builds in Gitlab CI.
A framework and web admin console for self-hosted Linux game servers, shipped as a single dependency-free static binary that installs itself as a systemd service and then serves the UI. Two consoles built on it (Valheim, Conan Exiles); ~3,900 lines of Crystal covered by 357 specs and a 10-job CI matrix that runs the real installer under real systemd across five Ubuntu and Debian releases.
Read more Game Server ConsoleA framework and web admin console for self-hosted Linux game servers :: Crystal, systemd, GitLab CI
Framework plus per-game web consoles for administering self-hosted Linux game servers, currently supporting: Valheim & Conan Exiles
A faithful, read-only mirror of the long-dead bash.org IRC quote database, with 21.000+ quotes rescued from the Internet Archive and kept looking exactly as they did back then.
A read-only mirror of bash.org, built in Crystal on top of Kemal.
The whole site ships as a single ~15 MB statically-linked binary: no database, no asset directory, no runtime file dependencies of any kind. On startup the corpus is parsed into memory and indexed by quote ID, so each request is a hash lookup and a template render, with nothing touching disk. Deploying is copying one file to a server and restarting it.
A browser recreation of the Amiga Workbench, used as a front-end for viewing demoscene creations. Open a drawer, click a floppy, watch a demo.
Read more Amiga WorkbenchA recreation of the Commodore Amiga desktop, rebuilt in a browser and put to work as a demoscene viewer. The grey-and-black palette, the Topaz font, the drawer windows and Amiga mouse pointers, all looks the way it did in 1992. Icons and windows can be dragged around, windows resized and drawers opened and closed.
In the drawers are productions from some of the great demoscene groups. Each demo opens a player window, where the titles link back to the productions and groups on www.pouet.net. Every demo has its own address, so a single production can be linked directly. Type a wrong one and you get a Guru Meditation.
DNS telemetry ingestion pipeline in Crystal as a dependency-light, horizontally scalable service. Reimplemented the PCAP and DNS wire decoders - IPv4 fragment reassembly, TCP stream reassembly and handshake RTT, and a full DNS message decoder with EDNS0. Result is stored in a 50-column row schema, with GeoIP/ASN/resolver/public-suffix enrichment. ZSTD Parquet output written as day-partitioned files to S3.
Read moreDNS telemetry ingestion pipeline :: Crystal, S3, Parquet, RabbitMQ
Ported the ingestion core of ENTRADA (SIDN's Java/Spring DNS analytics platform) to Crystal as a dependency-light, horizontally scalable service.