12
votes
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
I've been working on my book tracker still. Got the styling in a much better place and added in some neat features around shelves. You can now take a picture of your bookcase, scan it in, and manage books room by bookcase by shelf, re-arrange on screen, plan things out/catalog. It integrates with the existing features so if you have that book already added into the system it links to it, and it'll import from google books/openlibrary if not.
Some screenshots:
https://ibb.co/mYgx1sL
https://ibb.co/KpkWHqDH
https://ibb.co/0RFf6WL5
(ignore the messy tags and spotty reading data - just testing data using an old import from storygraph)
I made Snipping music. It's Steve Reich's Clapping Music, but performed by an ASCII crab snipping its claws. I implemented a small DSL, CrabML, for programming the rhythm patterns. As you can see, you can write your own crab arrangements this way. The VM minus my stack implementation is only 62 LOC! The compiler is a bit bigger, but not much.
I've mirrored the entire source code on Github. There are some other WebAssembly experiments inside. I think it might be a nice introduction for a systems programmer to WebAssembly, or for a web developer to systems programming. I only do fun stuff like interacting with a canvas or the audio API.
This sounds really cool, thanks for sharing!
Anytime someone mentions Clapping Music, I am obligated to post this important rendition.
The codebase for my personal links website has gotten messy so I spent some time cleaning it up. The Playwright tests are in decent shape now.
Also, I started using Deno workspaces, which are a way to have multiple jsr or npm packages in a single repo. I'm moving all the database access code to one package and then I'll remove the Sqlite dependency from the other code to enforce a layered architecture.
I've been using GLM and Deepseek LLM's to reduce costs and they seem good enough to use day-to-day, except that they can't see images.
I've gone deep into claude code/linux the past few months. they work so much better together than windows. Plus it makes it so much easier, It finally got me past the learning curve to switch over. I was using WSL for awhile. then I set up a droplet with ubuntu for server stuff. then I bought a framework to put ubuntu on. Lastly I switched over my main desktop/gaming/entertainment, Lucy herself, to Ubuntu last week. I tried mint at first just to see, but had issues with multiple monitors mixed resolutions, and in the end decided to stick with what i know for now.
Lucy has been my desktop of theseus for decades and always windows. I think its the end of an era. And what rough beast slouches toward Bethlehem to be born?
I've been working on a CLI that uses XPath for working with JSON documents. It's a little cursed but I can never remember the syntax for jq, and the standard library XPath provides for dealing with maps and arrays is surprisingly comprehensive.
It's a very thin wrapper over the Xee rust library so most of the planned work is making an interface that's more geared towards interactive use
Setting up a Reverse Proxy + HTTPS for Home Server
I'd been dreading this for a while. I'd heard that Caddy would make setting up the proxy pretty easy. But I wasn't not excited to study the ancient tomes of
man(1)to uncover the necessary arcane incantation ofopensslto generate the certificates I thought I needed.Turns out, Caddy handles
httpsby default. Took 30 minutes to get it setup.Home Assistant Shenanigans
Setting Up Zigbee
No one warned me about the decision paralysis I'd have trying to pick a Zigbee Coordinator. I wasn't seeing an obvious "here's the best one that's pretty good value", and it was pretty unclear whether the differences I was seeing between coordinators would meaningfully impact my experience.
After way too long browsing forums and youtube videos, I just pulled the trigger on one and it's been fine I guess.
A Calibration Saga
I have an A/C with a builtin mode that tries to maintain a target temperature, that is basically useless because of how unreliable its builtin thermometer was. I figured that I could pick up some temperature sensors, that would ideally measure temperatures that were more reflective of what I was feeling in the room and make the control system more reliable.
I set one on my desk near where I sit, and another further away in the same room. But seeing the initial readings confused me. Both sensors were reading ~10F higher than I felt the temperature was. And the one on my desk was at times ~10F higher than the sensor across the room.
I figured I needed to calibrate them, so I put them in a plastic bag, submerged them in water, and stuck em in the freezer. They were still connected to my Zigbee network, so Home Assistant could continue plotting their values. Seeing a straight line on the graph would tell me how offset the sensors were from the freezing temp of water. They were both within a degree of 32F.
Turns out:
Which Zigbee coordinator did you end up using?
Per caddy/https, did you consider using Cloudflare tunnels? I found that quite trivial to set up but then you need your own domain name.
For your reverse proxy usage, I guess you still needed a bit of router config to expose it to the internet? Have you also tied it to a domain name?
Aeotec Z-Stick 10 Pro. I want to say I picked it because I carefully considered the pros and cons. But really I just got decision fatigue. I saw it appear in a Youtuber's videos that were 6 months apart, and figured he was happy with it in his much more complex smart home.
My goal with the reverse proxy was primarily to have easy to remember addresses for my self-hosted services. I got tired of remembering <ip>:<port> addresses, and my phone failed to perform mDNS lookups. Don't have anything exposed to the internet yet.
I did have to touch my router's config, but that was just to send all traffic that matches
*.MY_INTERNAL_DOMAIN.home.arpato the reverse proxy.Wrote the minimum parts for a static blog site so I can replace Hugo for my personal website. This is done by using the ParcelJS bundler.
By minimum parts I mean:
Site maps and whatever else Hugo generates idc about rn.
One of my goals was to make it easy for me to add arbitrary front end interactivity specific to a post/page, and not have the site entirely be driven as some heavy FE framework.
A place to show things like a couple of React components I made as a learning exercise.
eg https://jason.schwarzenberger.co.nz/lab/tools/lolcryption/.
I have long used GitHub's gists as a way to "write" entries on my site. With this I have made it possible for the gists containing an html file to be rendered within their post page.
Eg:
https://jason.schwarzenberger.co.nz/gists/7e4f4a-tetris.golf.html/
I've been unemployed since March. 😄
Very cool post. Was wondering why you swapped away from Hugo but I guess it was more of a learning experience and wanting to minimize and be more in control over everything.
I believe the html within a post is also possible with Hugo but props to you for getting it working in your own framework. (Maybe yours is different in that it is directly the React component...?)
Any future plans with it?
Yeah, wanted more control. I have never got my head around the syntax used in the layout files for Hugo themes.
I could probably write a parcel resolver to replace the gist.py script I use for collecting the gists. But meh.
Another thing I've done with Parcel is making a guestbook that uses a GitHub repo as the store of guestbook entries. Actions to redeploy the website, and a telegram bot as moderation & committing to the submissions repo.
There's a cloudflare thing in there as a gateway between the Python api running the bot.
So I posted this on the creative topic too, but it's just as technical as it is creative so I'll post it here too.
I recently developed a new hyperfixation after being given a ton of old computers and HDDs from my work: Homelab.
I'd been wanting to start a homelab for a while, specifically a streaming media server for ErsatzTV, but I just didn't want to spend the money.
I basically frankensteined a server out of all the parts, and got some other stuff from Goodwill and Re-PC to round everything out, but it's all over my desk and looks like a Cyberpunk Hacker's desk. lol
Now here's where the project becomes creative. So in order to organize everything I've been looking into 3D Printable Server Racks and came across this one which is modular and expandable.
So I'm usually a bit extra, so I always try to think of creative variations of these kinds of projects I can do. I thought of a Stargate themed one that looks like an Ancient device with control crystals, I thought of a Cyberpunk theme with embedded EL Wire lighting that looks like circuitry, and a couple of other things.
But my golden idea was this: "Nickelodeon Blaster" Wacky Postmodernism Retro Device themed. I think the juxtaposition of maximalist wacky whimsical novelty toy designs from the 90s mixed with the complexities of a homelab server is kind of funny and unique.
So I actually have this phone that I snagged off of ebay years ago before this recent nostalgia craze drove up the prices, and I still want to collect them all. I LOVED these things when I was a kid, and LOVED the colors, the slime, oozing, etc.
Here's the rest of the devices:
https://i.postimg.cc/gJmpcxqw/ug36bno3p6a61.jpg
https://i.postimg.cc/zXhmTDQr/s-l2400.jpg
https://i.postimg.cc/cJQZNR3j/il-fullxfull-2295337640-4kni.jpg
https://i.postimg.cc/4NcCp40T/TK-VR-1028-1.webp
https://i.postimg.cc/WbZR0pHK/TK-VR-1029-4.webp
https://i.postimg.cc/xTmrLjZV/PC-VR-1375-1-fb90886e-17bc-4a94-a3ba-ab9fd8d1e8ce.webp
https://i.postimg.cc/k453Sx0z/Chat-GPT-Image-May-26-2026-11-10-50-AM.png
https://i.postimg.cc/NMBtGK7r/Nickelodeon-1.webp
ANYWAYS, I've started designing a variation of that 10" Server rack using these colors and design aesthetics.
I used AI to get an idea of what it could look like, and this looks pretty spot on to what I had in my mind's eye as far as theme and color scheme go.
Now keep in mind, the AI version is mostly incoherent so I'm not going to be copying the AI, just kind of using it as inspiration when modeling this out in CAD, and will probably come up with a far more coherent design.
Like I'll be utilizing exaggerated red buttons and levers, maybe some doohickeys, and I want to see if there's a way to incorporate these kinds of 3D hologram stickers into it somewhere, as well as these mini spinning emergency lights which I actually have just lying around my electronics bin. We'll see as the project comes along, I'm just in the sketching phase right now and I still need to plan out my modules, but I've locked in on the design for now!
Just finished a rough version of a plant watering and moniting station/test-kit primarily meant for developing digital twins for plants, but also just a useful little thing to have around to keep my plants healthy when I'm out of the house. Based on python and off the shelf hardware for easy implementation and extension with new sensors and watering schedules. Did it as part of my studies and my job in a section of my university, and I'm not quite certain what the licensing is for it bexause of that. But the core code is public on my github and will be expanded on with some better documentation soon-ish, if anyone got a RPi5 lying around that they wouldn't mind hooking up to a chlorophilled friend.
I've been doing physical therapy for some pain while sitting. It turns out getting old is a literal pain in the ass.
All the exercises are framed as "hold X for 15 seconds and do 15 reps" but I am all over the place counting seconds while I'm doing physical activity, let alone accurately counting reps. So I made this exercise timer app.
You set up the exercises and timings. You can put detailed descriptions in if you want. All data is stored in the browser; nothing leaves your device. It has visual and audio cues so yiu don't have to look at your phone when exercising. I'm pretty proud of designing it so you can transfer settings between devices with a QR code. It's deployed in cloudflare pages infrastructure on the free plan.
I also wanted to make it an exercise in architecture driven AI design, so I did it using codex and chatgpt 5.4. I started with requirements and design criteria, had the AI refine it into a detailed plan, then executed and iterated. I found codex much better than Cline (my previous go-to) for long term context management and higher level reasoning. Total dev time from cold start to final deployment was about 4 hours, and I didn't hand write any code.
There are a few bugs I know of, but it works well on the common path:
I've been planning an upgrade to my home server on-and-off for the last few months. My current setup is a repurposed HP office PC with 8GB of RAM, a 256gb boot drive, and then 2x4TB HDDs in a mdadm RAID1. It's served me great for the last 3 years but I've gotten above 3TB used of the 3.6TB usable so it's time to upgrade.
I purchased a used 32GB (2x16) DDR4 RAM kit from my buddy who just upgraded to 64GB. I'm about to purchase a new (used) motherboard, 2x12TB HDDs, new (used) case, and a new (new) PSU and rehouse my server. I'm hoping to migrate my Jellyfin collection from the 4TB RAID to a ZFS pool on the 12TB drives, repurpose the 4TB RAID for Immich, and still keep Home Assistant on the machine.
I'm also in the middle of reworking my public access to my server. I currently just port forward from my machine to a public domain but I'm going to instead use a VPS + Wireguard to better protect my machine from the world wide web. I'm currently just trying to find the cheapest low-spec VPS I can since this will only really be used to stream Jellyfin to my parents.
edit:
Well, I've full sent it and bought 2x12TB WD Ultrastar SATA drives, a Node 804 case, new mobo (used), new Seasonic PSU and a new Noctua NH-L9i cooler. Those should arrive over the course of the next week so looking forward to next weekend!