ttamttam's site

Projects

Most of my time spent working on IT is at work, where I primarily work on an Angular and Java stack and various flavors of SQL. I do full stack work with a focus towards frontend work. That said, when I have some time for hobbies I love working on my own personal projects. In particular I enjoy working with functional paradigms and making tools and APIs that just work. My primary motivation is to delight the people that use my software. Admittedly, those people are often just me.

WireNix

WireNix is a Nix Flake designed to make creation of Wireguard mesh networks easier. The simplist and most likely layout is a full mesh network, but Wirenix can also support arbitrary graph topologies. Check out the WireNix wiki to get started. I consider WireNix to be cold-blooded software, so while there might not be recent commits, I assure you it's still maintained.

My Homelab

Status: Desktop is running fine, other servers decommissioned until I find time to work on a large rearchitecting.

I love my homelab! It consists of my desktop, my old desktop in a server chassis, and a raspberry pi. Everything is running NixOS of course. At its most complicated, I was running virtual machines using microvm.nix, which automatically provisioned secrets using agenix-rekey, that could then provision containers which ran entirely within my local VPN using my own WireNix. All my PKI was handled using a Yubikey as my HSM attached to a Raspberry Pi 4 running step CA. ACME was handled securely over my WireNix network because my switch didn't support 802.1X. Identity was handled with Kanidm. It was glorious! It also broke, like all the time. Step CA, WireNix, and Kanidm were all rock solid, but VMs would frequently fail between hypervisor updates and the hardware itself wasn't the most reliable. Network issues were hard to debug, and minor changes to the interfaces would cause massive update burdens. When the (industrial) SD card on my Raspberry Pi gave out, I just didn't bother reprovisioning everything. It was also complete overkill for my uses. But it was an awesome learning experience and I'm looking forward to remaking it with a focus on the services that matter most (and less VMs). My desktop still runs fine, and I still maintain all the Nix code for it. While I am very careful about not publishing secrets or PII to my homelab repo, I still keep it private to be on the safe side. But I do share excerpts from it from time to time on the NixOS forums.

This Site

This very site is another project of mine. Everything you see here is from-scratch home made HTML, CSS, and JavaScript. With a little bit of help from HTMX, SCSS, and Eleventy BuildAwesome to remove the most tedious stuff. I love frameworks, but I use web frameworks plenty at work. Using something where all my javascript operates directly on the DOM and all my HTML is just a template is a nice change of pace from the framework heavy stuff. It also lets me experiment with progressive enhancement, graceful degradation, and other accessibility features. Did you know, despite being a static site, you can use this website like a single page application with its own routing? But it will also serve full pages and fall back gracefully, it even works in Lynx! For every page I generate two assets, one stripped down version that can be inserted into the page using HTMX (which does routing via the History API), and one full version for initial page loads and when JS is disabled or loading. That's just one of the tricks I put into this website, look around and you'll find more.
If you want to look behind the curtain, check out my unlisted repo for this website. But be warned, it's unlisted for a reason, it's just a personal project for myself and not intended to be heavily scrutinized.