// INFRASTRUCTURE · CLOUD · OPEN SOURCE

Adam
Herrmann

Building homelab infrastructure

scroll

Hey, I'm Adam.

I'm Adam, IT & Cloud Infrastructure at Project E, an engineering firm in Idaho. I own the Cloudflare edge stack behind theprojecte.com, a serverless pipeline that turns Revit exports into interactive 3D models in the browser, and the Python data layer that turns stamped drawing sets into aggregated project analytics.

BYU-Idaho Cloud Computing on the side, and a home lab that is honestly out of hand: a Proxmox cluster, agent VMs I wrote myself (Charles, Alfred, and Wadsworth), an enterprise SIEM, and a box hosting local LLMs for privacy-sensitive work.

This site is where the messier work lives. In-progress projects, iPod firmware hacking, homelab log entries, opinions about tools. The polished version is on LinkedIn.

I care about Rockbox, Home Assistant, and Keep Android Open.

Infrastructure
ProxmoxDockerLinuxNetworkingActive Directory
Cloud
CloudflareAWSOracle CloudAstroServerless
Languages
PythonTypeScriptCBash
Interests
HomelabOpen SourceEmbeddedEmulationLocal LLMs

Awarded.

Projects.

CLOUDFLARE | THREE.JS | WEB-IFC | LIVE

Serverless BIM Publishing Pipeline

A CAD export becomes a live, interactive 3D model in the browser within seconds, reachable from a QR code printed on the drawing.

CHALLENGE

Existing viewer services want your files, your credentials, and their own hosting. On a construction site, none of that scales - drawings need to be shareable at the sheet level, from any device, without an account, and without another vendor in the loop.

APPROACH

Built on Cloudflare R2 and Pages Functions with a least-privilege credential-broker pattern that keeps real credentials server-side and source control out of the publish path. The viewer's render loop was rewritten from unconditional 60 fps to on-demand, cutting idle GPU load from roughly 75 percent to zero on integrated graphics.

See it live
C | EMBEDDED | ROCKBOX | OPEN SOURCE

Rockbox Explicit Content Filter

Automated explicit content detection for Rockbox music players. Zero-config API lookups, in-database filtering, theme integration. Runs on the iPod itself, no cloud dependency.

CHALLENGE

Rockbox has no parental controls of any kind. If you drop a library on it, everything plays regardless of what the tags say. For a device kids might use, that is a real gap.

APPROACH

A metadata pass at library import time cross-references each track against public music APIs, records an explicit flag in the Rockbox tag database, and exposes a theme-level filter so unclean tracks stay out of the default view without breaking playback.

View source
C | AUDIO DSP | GAMEBOY | CONTRIBUTION

iPod Classic Emulator Audio Fix

Rockbox 4.0 ships a built-in retro handheld emulator that runs great except for the audio: harsh, crackly, quiet. This traces five bugs in the audio path and fixes them.

CHALLENGE

The emulator sounded terrible on real iPod hardware. Sample rate mismatches, missing filter passes, and a preprocessor branch that silently forced 25 percent output quality on iPod Classic specifically.

APPROACH

Read the source, isolated each defect against the reference implementation, patched the ARM audio pipeline, and wrote the whole thing up as a blog post so the next person who hits it has a map.

Read the write-up
PYTHON | SQLITE | CLOUDFLARE D1 | IN PROGRESS

Equipment Database at District Scale

26.3 GB of scanned engineering drawings from a 20-building public school district, spanning buildings built between 1921 and 2014, turned into 1,713 verified equipment records with source-document attribution on every value.

CHALLENGE

The district has no institutional record of what equipment it owns. Everything lives in scanned drawing PDFs. Nobody can answer 'what heat pumps do we own and when do they age out' without opening drawings one at a time.

APPROACH

Independent concurrent extraction workers coordinate through a claim-based file protocol, verified under real contention. The multi-tenant SQL schema computes replacement due dates in views rather than storing them, which removes the batch scheduler entirely. Extraction is running and delivering; the database and web application are designed and reviewed, not built.

Read the write-up
PROXMOX | DOCKER | NETWORKING | IN PROGRESS

Homelab v2

3D-printed modular 10-inch rack running Proxmox, Docker, agent VMs I wrote myself, self-hosted DNS + VPN + backup, and an enterprise SIEM. Migrating from a full-size server rack to something that fits under a desk.

CHALLENGE

The full-size rack was noisy, ran hot, and lived in the wrong room. Rebuilding at 10 inches means rethinking cable routing, cooling, and which services actually earn their keep.

APPROACH

Print modular sled frames, migrate services one VM at a time, treat the SIEM as the acceptance test - anything I break shows up as an alert before I notice it myself.

Read the write-up
AWS | TERRAFORM | ANSIBLE | IN PROGRESS

Cloud Infrastructure Practice

Personal infrastructure experiments alongside the BYU-Idaho Cloud Computing track. AWS labs, Terraform templates, Ansible playbooks, edge-hosting patterns I want in my hands before an interview asks about them.

CHALLENGE

Fluency across IaC, edge, identity, and networking is only earned by building. Reading and video tutorials are not the same thing.

APPROACH

One production-shape lab per concept: a full VPC with private subnets, a serverless static site with a function backend, an Ansible bootstrap for a fresh box. Save each as a template so the next lab starts from a working baseline.

Read the write-up
OLLAMA | LOCAL LLMS | NETWORKING | IN PROGRESS

Local LLM Lab

Dedicated hardware hosts Ollama and LM Studio for local model testing. Cross-machine access via LAN. Used for privacy-sensitive experimentation where sending code or notes to a hosted model is not on the table.

CHALLENGE

Frontier hosted models are fast and capable but they see everything you send. Some work is not appropriate to hand to a remote provider.

APPROACH

Serve a curated set of models over an OpenAI-compatible endpoint on the LAN. Reach it from any workstation. Track which local model works well for which task and keep receipts.

Read the write-up

Notes.

On GitHub.

10+
Public Repos
C
Primary Language
Aug 2026
Last Commit