portfolio

everything of mine that is public or online. back to the index.

online

360sona
the 360sona editor: the body panel with the male and female choice, the height and weight triangle and the skin swatches, the appearance and wardrobe tiles, and a blank figure on the stage An Xbox 360 avatar editor that runs in the browser. It carries 20,344 marketplace items across 719 collections plus the built-in wardrobe, and draws them with the console's own renderer, animations and camera presets, reimplemented from the original binaries so a figure comes out the way the console drew it. There is a photo booth, GIF export, a display case for embedding a figure on another page, and accounts with twenty save slots. The item files never reach the browser in the clear: a gate on a VPS meters every request behind a proof of work and hands out encrypted per-session handles, so the archive can be used without being copied. Made because the console's editor is gone and the items only survived as an archive dump nobody could look at.
press: windows central, yahoo tech, pure xbox, god is a geek and hardware premium
originmarker
an originmarker panel: flanking coverage warnings, the chr11 locus track around rs334, and the ranked candidate marker table Three tools for PGT-M linkage work. Before an experiment, give it a pathogenic variant and it returns a ranked menu of candidate flanking SNP markers, querying ClinVar, Ensembl and gnomAD live and scoring candidates against a bundled deCODE genetic map. After one, Syngamy reads SNP arrays and reports which parental genome is present, on which chromosomes and across which regions. Progenitor builds a SNP array for a parent nobody genotyped out of the haploid cells that parent produced, then calls the parental origin of every sample against it. Genotype files are read in the browser and never uploaded. Built for the Egli Lab at Columbia University Irving Medical Center. Research use only.
live: originmarker.app and ezrakruger.cc/originmarker
adbank
the adbank front page: size, category, colour and language dropdowns, six sample 468x60 banners, and the generated line of embed HTML An archive of 1990s and 2000s web banner ads. A picker builds the one line of HTML that serves a random period-correct banner to your page, filtered by size, category, colour and language, and there is also a browse gallery, a JSON API and a provenance page for every banner. It exists because the banners are scattered across dead pages with no index you can actually pull from; ingest and image screening run on a Jetson, the NAS serves it.
assay
the assay front page: bull of the day, bear of the day and sleeper features with animal photos, above the largest twenty table and the letter key Nightly financial-condition grades, A to E, for every eligible SEC filer, about 2,200 companies a night. Every figure on a company page cites the filing it came from, and a time machine page shows any company's grade on any date back to 2012, from 178 point-in-time rescans. It is Python standard library only, runs in a container on my homelab at 3 a.m., and publishes the whole site here as static files. Made so a company's condition can be checked against its own filings instead of taken on trust.
source: github.com/ekruges/assay
silo
the silo front page: the SILO logo and curl commands for the manifest, an object and its thumbnail A read-only static object store holding all 20,350 Xbox 360 avatar marketplace items, mirrored from an archive.org dump. It serves a manifest of every item plus the package and a PNG thumbnail per item, with CORS open so a browser app can read it directly. The official marketplace is gone, so this is the copy; the items themselves only load on consoles that run unsigned code.
millrace
the millrace front page: a Cezanne landscape behind a white panel of purpose and contact lines A private file origin that hands installer images, disk images and build artifacts to my own machines. Apache with no index and no listing, plus a Host header rule that allows only the front page from the public side while LAN and Tailscale clients get everything, so bulk traffic never crosses the tunnel. Built to give my VM fleet somewhere local to pull ISOs from. It is also the serving backend for 360sona: the editor's items arrive through a gate instead of a public folder, one wrapped asset at a time, so the corpus can be browsed without being copied.
ezrakruger.cc
the ezrakruger.cc homepage: a photo, two lines of text, and the start of the Apache index of / This site. It is a real Apache mod_autoindex directory listing rather than a static site generator, so publishing is dropping an HTML file into a folder. It runs in a container on my NAS behind a Cloudflare tunnel, with no ports opened on the router.
scripts
the index of /scripts, one folder per script: anki-sync, autodream, deadline-alerts, diff-journal and the rest Homelab scripts collected off all my machines, one folder each with the script and a short writeup. They are generalized, so anything setup-specific is a variable at the top of the file. Put here so they live somewhere other than scattered across seven boxes.

github

i3psycho
i3psycho in use: three terminal windows floating in a cascade over the i3 bar A fork of the i3 window manager in which every window floats: cascade placement, titlebar buttons, drag-to-edge snapping with a live preview, minimize, an overview and hot corners. It is seven patches on upstream i3 and one small daemon, so an existing i3 config runs unmodified and upstream's test suite still passes. Written to get macOS-grade window behaviour without leaving i3.
tierminal
a Tierminal share card: the Ascendant I emblem and XP, command, streak and ssh counts, the you, claude and codex split bar, a year heatmap and the ten-tier ladder A macOS menu bar app that ranks every shell command you and your AI agents run, from Iron to Root across ten tiers. It hooks zsh and bash, reads Claude Code, Codex and Amazon Q history, and matches non-interactive shells against a registry of about 55 agents so each command is credited to the right provider and model. There is a rank reveal, a year heatmap and share cards. Nothing leaves the machine. Made because most of my commands are now run by agents and I wanted to see how many.
gapfree
the gapfree web page: the 2026 contribution graph with the plan drawn over it, density and commits-per-day sliders, and the activity mix sliders with a radar chart A free, self-hosted replacement for a paid service that fills your GitHub contribution graph. One Python file with no dependencies, installed with one line, that plans commits, pull requests, issues and reviews from a seed per year and draws the plan over your real graph in a local web page. Made because running a hash function and git commit on a schedule should not cost a monthly fee.
SimpleStretch
A Windows app that runs games at a stretched resolution, 4:3 filling a 16:9 screen, without the NVIDIA, AMD or CRU control panels. Pick a resolution and press one button, or add games and it switches on launch and restores the desktop on exit. It only changes the desktop framebuffer and leaves the monitor at its native mode, so the GPU scales and the screen can never be sent out of range. Works on any GPU, integrated included.
mcpi-revive
A command line tool that converts Minecraft: Pi Edition worlds into modern Minecraft Java saves. It reads MCPI's chunks.dat, decodes the data nibble on each block for things like wool colour, stair facing and slab half, maps 70-odd block types to vanilla Java IDs, and writes 1.21-era Anvil chunks with the surroundings voided. Made so old Pi Edition worlds can be opened again without the dead client.
BTD6Unlocker_Deluxe
An account unlocker and profile editor for Bloons TD 6, driven from a menu inside the game's own settings page. It goes through the game's unlock, achievement and progression paths rather than editing a save file, so the rewards land the way the game expects. A heavily extended fork of Interesting-exe's btd6-unlocker.
EzrasRocks
A Flask web app that classifies photos of rocks with an ONNX model trained using the Jetson Inference toolkit. You pick an image in the browser, it returns the predicted rock type with a confidence score and logs it. Inference runs on an NVIDIA Jetson.
anki_latin_2026
A CSV of Latin vocabulary for import into Anki. One file, built for my 2026 Latin final.

last updated 09/28/26, e. kruger