16
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 have a few projects I'm working on.
So I fried my Elegoo Neptune 3 Pro's 3D Printer MCU board by accidentally shorting the printhead fan connection, so I ordered a new one.
I run a Raspberry Pi with Klipper so I figured I might as well just internalize all the external components I have for the printer.
So I'm going to be embedding the Raspberry Pi 4 into the same cavity as the MCU, running a buck converver off the PSU to power the pi, running extensions and installing panel mount USBs, a Panel mount HDMI for if I ever need to manually enter the pi, as well as an extension/panel mount SD card slot for easy access. Also looking into installing a restart button to restart and/or power cycle the pi if needed.
ALSO sometime between when I got the printer and now, someone finally managed to get the stock Elegoo screen to work with Klipper, so I also bought a shielded coiled cable and also plan on integrating that with the Raspberry Pi as well.
I bought a modified Raspberry Pi 4+ board for this that has an external antenna port modified onto the board so I can run a far better Wifi Antenna to the top of my printer for a better connection.
At the end of the day I want the printer to be entirely plug and play. Just plug the printer in and connect to wifi and that's it.
Second, I had an old Elegoo NP3 printhead lying around, so I've decided to modify it with better fans and a better hotend and play around with it rather than have it collect dust.
Third, I've been doing some cleaning and found this Toybox Alpha 1 3D Printer I had in storage that an old coworker gave me because it didn't work around 4 years ago. I never could get it to work but kept it nonetheless. The board was proprietary so I couldn't manage to get it out of it's bricked state.
Well, turns out someone figured out you could replace the stock board with a BTT SKR Pico and a Raspberry Pi Zero 2W, and get it to work with Klipper.
I had a Raspberry Pi Zero 2W lying around, but again I went and got a modified pi zero with external antenna connectors attached.
So that's another project I took up. The printer's tiny, but it'll be cool getting it set up to print small things.
I've been trying to brainstorm things I could do with it. I've been toying with an idea to create something where people can select from a list of pre-sliced models and print things, and set the printer up at a local business or something. Or take it to work and have it on my desk.
Or make a Borg Cube enclosure for it and make it look like a very tiny Borg Cube replication device or something. Or even give it a very clean Star Trek look with some blinking LEDs and make it look like a mini Replicator?
Or create an enclosure out of Replicator pieces from Stargate. idk.
Fourth, I bought some ESP32s and plan on doing some LED work and experimenting with connecting it to klipper to display print progress and filament color. Also bought them in case I decide to do any kind of LED modifications to the Toybox printer.
I had this cool LED stuff on the wall for the longest time, but it's controlled by a remote. I always thought it'd be cool to pull the filament color off of Spoolman and have the LEDs display the print progress. So the color will change depending on what's printing. Also other animations for heating up or paused, etc.
Spent the last few months trucking along at Project Echelon - a match replay recorder for Project Ignis: EDOPro, a Yu-Gi-Oh! simulator.
You basically get the
*.yrpXreplay file from the game, upload it and get an x264-encoded MP4 video file.I had to fork the game (thank god for the AGPL) so I can do offline rendering to a FIFO pipe - allowing the game to spend as much wall clock time as needed to render perfect 60fps. On most machines, however, EDOPro can run much higher (900+ fps) so in reality it spends less time, meaning a replay which would take 5 minutes to play in the game, can take 1 minute with Echelon.
Unfortunately, most cloud providers charge seven kidneys for a GPU so I have to do full software rendering on my deployment, which drops the speed back to 1x, maybe 1.5x. Still good though!
This weekend I want to release v1.1.0 (currently in a release candidate), wrapping up everything I decided to cut from v1.0.
Been having some trouble figuring out the UI, but I think it's in a good place now. I wanted to add a little bit of inoffensive advertising for the Discord bot but I decided to scrap it because it just looked like a blatant ad no matter how I shaped it.
I am pleased with how it turned out though - so after this I'll probably put it in maintenance mode and only do bug-fixes, while I start yet another new project.
So I've resisted using AI for anything major for a while now. I mostly treat it like a pseudo sentient rubber duck that forces me to articulate my problems and helps me explore domains/problem spaces (the you don't know what you don't know problem). Chat basically. I ask questions, it spits out something answer shaped, I extract value (e.g. learning domain specific jargon and using that to make better web queries//ai queries).
I've been sticking to local models for a few reasons. Privacy for one. Consistency in abilities/cost/availability. But probably the biggest one is smaller models aren't that capable. It's a tool, but not a crutch. I still have to think critically, grow. I'm not outsourcing my ability to do, to think. What good is a highly capable model if I'm not skilled enough to steer it?
Which leads me to today. Agentic programming is on the rise, and at some point I'm going to have to adapt. Enter oh my pi. Those that trawl HN probably already know what I'm talking about. I just spent a few minutes patching it to work with self hosted providers that use an openai compatible API (it supports ollama's /api/tags endpoint, but not /v1/models like llamacpp and friends). What better way to test my patch than ask the agent to review my work? I gotta say, I was impressed. It's a little slow using qwen3-coder-next w/ 64GB ram + 12GB vram, but ~30 tokens per second is usable.
Code Review Request
Mode
Reviewing uncommitted changes (staged + unstaged)
Changed Files (2 files, +9/-9 lines)
┌────────────────────────────────────────────────────┬───────┬──────┐
│ File │ +/- │ Type │
├────────────────────────────────────────────────────┼───────┼──────┤
│ packages/coding-agent/src/config/model-registry.ts │ +5/-5 │ ts │
├────────────────────────────────────────────────────┼───────┼──────┤
│ packages/coding-agent/test/model-registry.test.ts │ +4/-4 │ ts │
└────────────────────────────────────────────────────┴───────┴──────┘
Distribution Guidelines
Use 1 reviewer agent.
Reviewer Instructions
Reviewer MUST:
Diff
-- I'm held back the diff because formatting it was a PITA
⏳ Task: reviewer
├─ Context
│ ## Goal
│ Review changes to Ollama model discovery in
model-registry.tsand corresponding test updates. The changes update the endpoint from/api/tagsto/v1/modelsand adjust the JSON payload structure.│
│ ## Non-goals
│ Do not review unrelated files or changes not in the diff. Do not run tests or build the project.
│
│ ## Acceptance
│ Identify any correctness, compatibility, or safety issues with the API endpoint and payload parsing changes.
└─ Tasks: 1 agents
└─ ✔ 0-ReviewOllamaChanges: Review Ollama API endpoint and payload changes ⟦done⟧ · 334K tokens · 3m7s
Patch is correct ✔ (95% confidence)
The changes correctly update the Ollama model discovery endpoint from /api/tags to /v1/models and a…
Findings: ✘ P0:0 · ⚠ P1:0 · ⚠ P2:2 · ⓘ P3:1
├─ [P2] Model name now set to id, losing human-readable display names model-registry.ts:850
├─ [P2] No fallback for model entries missing id field model-registry.ts:848
└─ [P3] Test mocks use simplified data structure without additional fields present in real API model-registry.test.ts:557
Total: 1 succeeded · 3m7s
✔ Read /workspaces/scratch/oh-my-pi/packages/coding-agent/src/config/model-registry.ts:827-861
Error: EXA_API_KEY not found. Set it in environment or .env file.
Deep Search Ollama API v1 models response structure data array id field object created owne… results:5
ⓘ Raw response⟦(Ctrl+O for more)⟧
├─ {
├─ "content": [
├─ {
└─ … 5 more lines
Code Search Ollama /v1/models GET response example data array id object created owned_by
ⓘ Raw response⟦(Ctrl+O for more)⟧
├─ {
├─ "content": [
├─ {
└─ … 5 more lines
✔ Read /workspaces/scratch/oh-my-pi/packages/coding-agent/test/model-registry.test.ts:550-609
✔ Todo Write 3 tasks
├─ ☑ Review Ollama API endpoint change /api/tags → /v1/models
├─ ☑ Review payload structure changes models→data, name/model→id
└─ ☑ Identify issues with name field reduction
✔ Todo Write 3 tasks
├─ ☑ Review Ollama API endpoint change /api/tags → /v1/models
├─ ☑ Review payload structure changes models→data, name/model→id
└─ ☑ Identify issues with name field reduction
✔ Todo Write 3 tasks
├─ ☑ Review Ollama API endpoint change /api/tags → /v1/models
├─ ☑ Review payload structure changes models→data, name/model→id
└─ ☑ Identify issues with name field reduction
✔ Todo Write 3 tasks
├─ ☑ Review Ollama API endpoint change /api/tags → /v1/models
├─ ☑ Review payload structure changes models→data, name/model→id
└─ ☑ Identify issues with name field reduction
Review Complete
Verdict: APPROVED with findings
Summary
The changes correctly update Ollama model discovery from /api/tags to /v1/models and adjust the payload structure accordingly.
Findings
[P2] Model name now set to id, losing human-readable display names
mannix/llama3.1-8b-lexi:q8_0. Previously, Ollama's /api/tags endpoint returned both name and model fields where name could be a human-friendly alias. The new code discards this potential human-readable name
and uses the raw model ID as both id and name, reducing user experience.
[P2] No fallback for model entries missing id field
a model entry with a malformed or missing id field (e.g., due to API version mismatch or server bug), the entry is silently skipped. While the existing if (!id) continue handles this, the previous
dual-field fallback was more resilient to partial data corruption or API variations.
[P3] Test mocks use simplified data structure without additional fields present in real API
created, owned_by }] }. While these extra fields are not used by the current code, if Ollama later changes the response format (e.g., removes data wrapper or renames id), tests will not catch the breakage.
Tests should mirror the actual API contract to provide early warning of upstream changes.
Recommendation
The core functionality is correct. Consider adding a fallback for the name field (e.g., name: item.name || item.id) to preserve potential human-readable aliases, and update test mocks to include additional
fields (object, created, owned_by) to better match the real API contract.
Todos
└ Review Ollama API changes
└ ☑ Review Ollama API endpoint change /api/tags → /v1/models
☑ Review payload structure changes models→data, name/model→id
☑ Identify issues with name field reduction
Who wants to write a dependency-free syntax highlighter in PHP for 40+ languages and configuration file formats? What human can do so in less than 5 minutes?
There were numerous issues with producing the full raw Git repository viewer fully using AI: memory leaks, performance problems, encapsulation violations, bloated source files. The memory issues were hardest to have the LLMs fix. They were stumped on how to fix the code until provided with the call stack produced by the memory profiler. Once the afflicting call stack was known, they pinpointed and solved the problem. Another way to coax them was to have them inject logging statements to diagnose problems and feed them back the output.
The syntax highlighter alone would have been about six weeks to research and implement correctly. There was no way that I could have written the entire application in two weeks.
https://repo.autonoma.ca/repo/treetrek/tags
Trying to figure out if I want to try to wrap my head around OpenSCAD. It's hard for me to choose one specific route (and some neurodivergence likely contributes to this) so I've also been messing around with OpenCAD as well as a demo of a paid CAD program with decent pricing/licensing, and Linux availability, which is Plasticity.
Not exactly sure where I'll land because, I can see for certain things the SCAD program working well with my brain- although I'm not a programmer I think programmatically creating CAD designs might just scratch an itch sometimes. Other times, I like how OpenCAD is incredibly powerful once you get used to it. But ultimately, a lot of the time, I want to avoid the annoying workflow of OpenCAD and the programmer-brain of SCAD and just design stuff by drawing / by hand, but in a more intuitive/fast way, and that's where a regular CAD program comes in.
After messing around with TinkerCAD a bit on the web, and liking that, but wanting to avoid a majority of the licensing/pricing and general "blah" of a lot of companies in the CAD space, Plasticity stood out as something that might be a good middle ground for me. Not sure yet, but we'll see. The couple of simple test designs I did quickly impressed me, at least.
On a positive note re: 3D printing, I changed my nozzle out to a steel one so that there's not even trace/minimal leeching of lead from a brass nozzle. Also swapped to a textured and two-sided build plate so I can dedicate one side to PLA and the other to PETG. Then I learned transparent PLA is a thing anyway, so PETG will probably be a rarity other than using the spool I have right now.
I entirely understand the need for CAD tools, but for the longest time the CAD space has felt like it's dragging behind other industries when it comes to good software practices. There are definitely some impressive tools out there built by large companies- car companies, engineering, etc- but the CAD capability is the only bit worth talking about, perhaps out of necessity. System support, openness, documentation, and price are all severely suffering.
I've tried out a few of the open offerings and the verdict always seems to be "interesting, but not ready yet". Combined with the steep learning curve that CAD requires, and I have found that I have just stuck with Blender for my 3D modelling / printing needs.
I'd love to hear how you get along with Plasticity. It's not one of the offerings I've heard much about yet! I've got a project at the moment that, while entirely technically possible in Blender, would benefit from more CAD-like tooling.
Yeah, my big qualm with the industry is the licensing and pricing and all of that seems just annoying (like they're only thinking about big businesses and corporations), or you have things like Autodesk having decent software but annoying terms, or they remove features, or make things a subscription, or require a big yearly fee for any commercial use, etc.
There seems to be no real regard for small operations/businesses or hobbyists in the space, and the tools that do exist for those are either somewhat difficult but powerful (like the open options) or do odd things with the licensing (I think TinkerCAD basically owns the rights to your designs or something weird).
There are a few small-time CAD software companies but I rarely hear about them much. Ones with one-time pricing and so on, which is where I ended up on Plasticity to try out. Reasonable pricing and licensing options, and an easy to use UI. I was able to make quick mockups of simple parts and print them from Plasticity pretty easily. I do still think they're a bit early in the game, because there are very integral options that they've only added recently and aren't obvious (like manually entering it dimensions).
Also one downside to Plasticity is currently their unions/subtractions/other boolean operations are permanent- not modular/undoable, so you can lock yourself into a particular design if you're not careful. So I wouldn't say it's really "there" yet, but it might be there enough for me to get by.
I hadn't tried Blender yet for this purpose. Does Blender allow accuracy of dimensions the way CAD does? A lot of times the things I'm designing aren't aesthetic "minis" or toys or anything, but instead need specific measurements because they're often parts for something around the house. Maybe CAD plugins would make it worthwhile actually? I should give that a shot
I've also heard about Alibre Atom3D but never tried it. What sold me on Plasticity was the Linux availability.
Since January I have noticed a failing drive on my homelab server. I have been monitoring SSD prices, since it is the boot drive. I finally found one in stock for a decent price, so plan on purchasing that today and then reinstalling proxmox. Initially, I was considering figuring out how to migrate the VMs, but am thinking it might be time to also replace my storage drives as well. So, I will probably just do a completely clean install rather than migrate VMs
Edit: I picked up a Samsung Evo 500GB SSD for bootdrive, and then two iron wolf 4TB drives that I will run in RAID1 on my openmediavault vm for my NAS. It will be nice having space on my server again, since besides failing drives I was also running out of space
Just a slight mini rant. I have been replacing my cars cigarette sockets with usb c ports. I found a nice panel mount circular usb c port that can replace the factory sockets entirely. It just acts as a passthrough usb c. I found some tiny usb c charge controllers on aliexpress that can deliver 65w. Super convenient. I hope someone in china makes 100w or higher versions of this.
Anyway, installed this for port 1, works almost perfectly. It only delivers 36w. I do some testing with the other modules. They take 8-30v, but if they get less than 20v, they only report 36w not 65. Oh well, just need to boost the cars 12v to 24v. I bought a 5a buck converter on Amazon. Used, because why not. Previous owner had cut back the sleeves, but no big deal. Everything works perfectly!
So I go to do the same for the second socket I have in my car. Same boost converter, also used. Same plate mount usb c. Same charge controller. I install it in my car, and absolutely nothing works. I didn’t test the boost converter, and it turns out it didn’t work at all. Ugh.
Okay, I’ll buy a third boost converter on Amazon. Same brand, but new this time. I solder it to the controller and test it this time. Boost converter works! Charge controller gives me 36w. What? It’s getting 24v. Somehow if I connect power to the boost with the controller connected, the controller will still think it can only provide 36w. I have tested slowly ramping the voltage up with these controllers, and it will reevaluate after the voltage goes above 20v. So it can’t be the buck converter slowly ramping up voltage. More importantly, it’s the exact same brand as my installed one that works perfectly? Wtf?
Anyway, so now I have a different brand boost converter to test. Fun times!
I just downloaded and installed Fritzing. It's software for designing electronic circuits. As a noise weirdo I want to design another simple triple triangle wave oscillator circuit, this time with a pot for starving the voltage coming in for extra nastiness. My previous project was put together on stripboard and it totally works! Ideally I'd like to get it all mocked up in Fritzing and see how much it would cost to get the PCB fabbed. I know there's like 10 people in the entire world who'd want one, so it would be rad to mount them in weird-ass boxes, etc., to sell.
I've been working on my own book/reading tracker. Mainly focusing on features I wish storygraph had and taking a less social media-ish approach. Neatest things are the ability to do custom charts/dashboards/querying through quasi-SQL, organizing books into shelves and cases, arbitrary attribute/tags, and more per-user control over books. On the tech side I'm using duckdb+ducklake with each user as a separate "database" so cheap object storage and easy management.
I am currently working on a security scanner for prompts. I don't want bad surprises if I pull skills from the web. Feel free to check it out:
promptinel
The early alpha already detects some suspicious things, but requires a lot of clean up and some behavior drifts from what's in
README.md. Feel free to check it out!This isn't really something I'm working on, but something I'm considering unless you all have a recommendation for something that already exists:
does anyone know of a service where i sign up with email, get a big list of features from caniuse.com that i can tick off, and then get emails when those features become either "baseline available" or "newly available"?
Recently overhauled a ton of my computing devices in the home. Got rid of a mac mini for music production, switched to a Win10 box. Got tired of macOS annoyances + mac hardware annoyances (non-upgradability, etc) and it's the one Windows exception I will make because I don't have to worry about updates anymore and Linux is just not ready for music production yet. It's getting closer with yabridge and such but it's just a pile of annoyances trying to get certain software to work.
Everything else in the home is fully linux.
My old living room PC is now my music production PC as its power is better used there. I have a mini PC in the living room now which makes much more sense and is no longer massively overkill for what I need. Moved my Unraid server to a bigger box with far more RAM and storage upgradability. That box used to be a "retro arcade" kind of box that never ended up getting used. Took the old mini PC that used to be the Unraid server and it's now just a spare mini PC I might use for projects (sensors? cameras/security DVR? etc). For now, using it to try out distros and such instead of using VMs
Daily driver gaming PC is about the only device that remains untouched. That and my laptop that I recently installed MX Linux on. Daily driver PC could use a distro change but it's a bigger undertaking I don't feel like doing at the moment because it just works in its current state, so why shake it up.
Been using the Kill-A-Watt in various places to get an idea of the power usage of different systems at idle and under load and such. It's cool to get that information to get an idea of what these various system change-outs could mean in terms of impact. Everything is low power enough that it shouldn't make a massive difference