18
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?
My work-in-progress “cozy community site” plots.club has a pilot site! I’m currently looking for beta testers for the site - nothing heavy, just looking for feedback from real people. I have a lot more information in my latest devlog post about it if anyone’s interested in joining the experience! (You can also just PM me here if you’d like). Hope the self promotion of the site is okay, I’m not actually making money off it!
This looks like a neat idea! I'm not an ideal first user but I would be interested in semi-regular updates here with your learnings and progress at least every few months--especially in the spirit of "What's interesting about it? Are you having trouble with anything?"; don't be afraid to dig into the technical aspects! I would think it's okay to link to a devlog but you may consider including an interesting or discuss-able snippet here
I upgraded my 3D printer. It was a Prusa Mk3s and I upgraded to be a 3.5s. The upgrade wasn’t easy - I made a couple of blunders that required backtracking. Now that it’s done, though, the increased speed is welcome and the print queue in Prusa Connect certainly makes it easier to keep it busy printing parts. I’m getting tangled filament more often, perhaps because I’m not going out to the garage to check if it’s done yet, so I don’t see it before it fails.
Unfortunately, Prusa Connect, while nice in other ways, is very bad at delivering notifications. The Android app doesn’t seem to deliver them at all when the phone is asleep, and then I get a bunch of stale notifications later when I actually look at my phone. Getting notified when a print job is done is the thing I most hoped for from WiFi connectivity and the mobile app, so it’s disappointing in a ‘you had one job” kind of way. However, if I keep the Prusa Connect web page open in a browser tab, the percent complete appears in the title and I can see progress at a glance, even while doing something else. It’s still an improvement on running out to the garage.
I might try Prusalink (the non-cloud version) next. Maybe it’s all I need?
On my musical keyboard project, I increased its size to one octave (with no electronics), which required increasing the strength of long and thin parts that started bending. I’ll work on scaling up the sensors next.
I used to have that problem with the Prusa android app, but lately it has been pretty good. You might try the slack integration. That was what I was using before they released the android app, and it seemed pretty reliable and responsive.
On the monitoring front, I put in an esp32 cam board that sends pictures to Prusa connect. The details are here on the printables page for the case that I designed. . It works okay, but I have it in my backlog to find a higher resolution / higher bandwidth option. My mk3s+ had a raspberry pi with octoprint and a 5MP camera, and that was much better for monitoring.
My Prusa One / MMU build is about one fifth done. Hoping to finish it soon. Looking forward to the options it will open up.
I'm currently experimenting with using a locally hosted LLM (llama.cpp + gpt-oss) to translate and reformat some course material slides that weren't provided in English, and if I manage to get a RAG pipeline set-up, I hope to get it producing formatted markdown which contains the slide contents cross-referenced with the book that the course is based on. Yes, I'm doing this instead of revising said material because I physically cannot force myself to concentrate for long enough to read said book, which is almost nine hundred pages of dry academic text on Algorithm and Datastructure theory.
I am trying to figure out a new work-from-home set up. I just built a new PC and I'm trying very hard to not entangle my personal PC with my work. I think my monitor has a KVM switch but I can't figure out how to configure it (even with MSI's provided youtube guide). I thought I might be able to just add an additional monitor to my desk but the new PC is around 60lbs (27kg) and the monitor itself is another 20lbs (9.6kgs) and I'm worried about my desk collapsing with the addition of my laptop and another monitor...How do y'all handle all this weight on your desks?!
I wouldn't put the PC on the desk... that seems like a waste of valuable space. (Especially since moving to a standing desk that is even a bit more sensitive to weight. I keep my PC on the ground but I have to put my UPS on top of my PC case so that the wires to the display are long enough...)
There are also software based solutions--I'm sure you're aware of them but may as well repeat a couple here:
I had no idea there was KVM software! I wasn't even sure why MSI was asking me to download their program in the first place. I was sort of under the impression my monitor had some sort of physical switch in it and that their program would make it work? This seems like a great solution :) thank you so much!
Am I misunderstanding or does the logitech one require buying logitech accessories vs symless as a program being a one time purchase? I'm not opposed to spending some money to have a more seamless WFH setup but I do already have my "nicer" gaming peripherals in place.
Ah yeah Logitech Flow only works with specific Logitech mice and keyboards. It looks like there are also free alternatives to Symless:
I haven't used these myself but they should all mostly work fine
i am using deskflow on my laptop (opensuse) and on my main pc and it works very seamlessly and is very straightforward. The only thing I needed to turn off are the TLS user certificate.
Speaking on this without MSI specific knowledge... and assuming you want to only switch the display input.
I have an Alienware monitor and use Dell's "device manager" software. The old version allowed me to run the executable over the command line with various switches/parameters, so I configured my Stream Deck to run that command. The new version dropped that, but lets you do a toggle with a keyboard shortcut. So now I have that mapped on my Stream Deck, and it's a little less reliable (sometimes takes multiple presses), but it does still work.
For my hardware inputs (keyboard, mouse, webcam) I've just used a cheaper "USB Switcher" (kind of like this UGREEN one but a different model). I like that it has a separate button so I can hide the actual unit under my desk.
So I would see if MSI has software that can do this. It might be a completely different application. But maybe poke through keyboard shortcuts in the application settings and see if there's one to switch inputs.
I use a USB switch as well, similar ShroudedScribe -eKL USB Switch
I like this one because it has remote keys for switching, and builtin sound card so you can switch audio too. I have 2 TVs I use as monitors with 3 HDMI inputs each so input 1 on each monitor goes PC1, input2 to PC2 and input 3 to PC3. I have to switch USB and change TV inputs with the remote any time I want to switch, but I've found it more reliable than any KVM I've ever used. If I point the remote at both TV's I only have to do that part once.
Storyteller has had 107 pre-releases for v2 😩. We're getting there! Very, very hopeful that I'll have a real pubic beta release next week.
I'm writing a software mono synthesizer. The idea is to eventually incorporate it and a drum synth in a self-contained software groovebox and hopefully run it on one of the really cheap Chinese Linux Game Boys you can find on Ali Express. The synth is based on Casio's invention of phase distortion synthesis, but I try to put package it more like a Roland TB-303, with accents and portamento, and with few knobs and controls yet many sweet spots, but also with complete MIDI control.
An interesting, bite-sized problem so far was implementing voice prioritization. The key you pressed last always has the highest priority, but if you release that, the one you pressed before that should have priority and so on, and you can of course release the keys in any order.
I opted to use an array with one entry for each of the 128 possible MIDI note pitches. Each entry represents a doubly linked list node, pointing to the previous and next pitches, if any. So on one hand I can link them into a list where the tail is always the highest priority note, but when I unlink them when a note off is received, instead of iterating over the list, I can simply index the array by the pitch to retrieve the node. In that way, there is very little pointer chasing and no iteration over the list at all, and the nodes are all contained in a contiguous 768-byte array, so the common caveats about linked lists (locality, O(n) iteration) have been eliminated.
One open problem is designing mapping curves, in order to map the user controls to sometimes several internal values. I feel like a visual tool for designing curve functions where you can just drag points around would be helpful here, but I don't know of anything off-the-shelf, so if anyone has an idea I'm happy to hear it before my project becomes two projects. I have curves that work for now, anyway.
I used to store my bookmarks on pinboard.in, but stopped paying a few years ago.
It turns out pinboard has an export option, so I've been working on a clone for my personal use, and just imported all of my old bookmarks.
Really, the project is just an excuse to have some fun and experiment with some stuff I have an interest in (web frontend with HTMX for interactivity, and Erlang backend).
Recently started into 3D printing and been thinking of things I want to print and getting used to the different settings when sliced (infill/etc) and how they work and getting ideas of how much filament and time each kind of print i want to do would take, etc.
I suppose it's mostly "technical" in the aspect that I'm learning about it.
Mostly want to print personal stuff but I have considered that maybe I could slowly start a business making 3D printed things? Not sure
It sure is handy to feel like, when I need a little bit or bob to serve a small but important purpose, I can just simply print those now. Especially things like stands for light things, covers/caps, handles/holders, etc.
What kind of printer did you get and how do you like it?
I've been teaching myself how to sculpt models in Blender (very slowly) because I'm interested in creating my own figurines and such. I don't think it's quite as straight forward as "sculpt and print" unfortunately but someday!
Because I wanted to start simple/easy/low cost I went with the Creality Ender V3 SE. Seems it's a late enough model to avoid having to do a bunch of tinkering and upgrading to get use out of it. The downside being that I miss out on that learning process but I think I am a good enough learner for that not to be a major issue.
So far it does seem to be the case that it's easy to use. Have only done a couple of test prints so far but they worked without a hitch. I did change some parameters prior to my initial prints based on a video I saw about getting quality prints. I use mostly Tinkercad for modeling + the Creality slicer software for preparing for print.
One thing I find frustrating is there does not seem to be many local 3D software options that allow commercial use (like for a small business) without being annoyingly expensive, aside from the free options. Right now it's only for personal use anyway. At least TinkerCAD i think allows it, but it is online so there's that- it's so easy to use and model in though...
FreeCAD was workable for a couple of very simple things but I find it mega difficult to do what I want to do compared to TinkerCAD which seems to workflow exactly how my brain and hands would want to model things. I haven't attempted to try to use Blender for anything yet but I had considered trying. Right now I am doing more CAD/exact dimensions style prints rather than anything sculpted anyway
For now using the least friction options just so I can get printing quickly
I've been tweaking my disk-usage script.
I noticed that my published version isn't counting subfolders correctly and the immediate children vs recursive statistics are not clear cut. It's kind of a mess.
Google Gemini has been teaching me prefix trees (trie) but I'm not totally convinced. Counting subfolders is more accurate now but I still feel kinda bleh about it. I'm thinking of starting over again... but it is mostly working. I think I'll start over and not worry so much about doing too much within each loop and just make a big quadratic time loop but it will be simpler and easier to understand
At work I'm basically redoing a lot involving registrations of time(C#/.NET). Having an understanding of measuring time as a physicist is very helpful because I'm used to think in a different way.
But it's still hell. You have to be so careful about what you do and make sure you don't implicitly add more information about the timezone or when it was measured. Even things like schedules contain more assumptions than you'd think.
I'm in the testing phase of the Stremio plugin I was working on. Some parts of it are a bit hacky, but it is overall working pretty well. I'll probably be able to release it soon even though some stuff it does isn't exactly ideal.
I've also now entered the setup phase for my other project: a tunneling service. I tried both cloudflare tunnels and local tunnel, but neither of those nor any other options I could find really satisfied what I wanted. Most notably local tunnel lacks encryption and ability to reserve sticky names while cloudflare mandates having a custom domain and the clients kind of suck (don't really function correctly when trying to tunnel out of VPNs, have issues when not root/administrator, etc.).
So the other week I posted that I picked up a locked remarkable 2 tablet for a song, and sent out for supplies to unlock it. They arrived.
Suffice to say, any hope I had of being a surgeon are dashed. I'm crushed. I'm amazed I can function in society when it became how apparent my lack of hand steadiness is. I persevered, and managed to solder the pogo pins to the micro usb breakout, and by some miracle, it actually came out pretty even/straight. And I only singed the pcb a little. Thankfully, I opted for a usb c to dupont breakout so I don't have to solder more things.
Proceed to the actual unlocking. Of course, I didn't consider how I was going to get the makeshift pogo connector lined up and making good contact. Thinking quickly, I used a gift card, a wad of paper, an old textbook, and my hand to hold it in place [0]. It worked pretty reliably, I actually expected the pogo connector to give me the most problems, but it's actually the dupont jig that became the real headache.
You see, it requires shorting b8 to b12 with a 10K resistor, but as you know, usb c can be plugged in 2 ways. Those wise in the ways of usb will be quick to point out that that's a trivial issue. The real issue is if the cable even supports those pins.... and I have no idea. After spending a morning trying various cables in various orientations I'm left with two issues, which may both be true: the breakout pcb is problematic/mislabeled (which seems to be a theme in the github issues); the usb c cables I'm using suck (which is also a theme in the github issues).
I'll send out for resupply and mount my assault again when I'm better equipped. Torn between getting a proper cable, or just buying a male breakout and skipping the cable all together. Probably the latter. Having one cable in the mix should make debugging easier. Maybe both.
[0] Surprisingly, the springs are strong enough that the textbook wasn't enough to keep it from moving, hence the need for some human input. The gift card + paper wad help align the elevation, while the text book keeps the pogo from popping upwards, as well as acts as a mass damper to suppress the vibration from my overly caffeinated self.
HA! So this has been nagging at the back of my head for the better part of the day, and I realized I had an old Targus Dock that I know has a fancy usb c cable that does video, so 99% chance it'd work, assuming the problem was the cable. Success! The rest of the procedure worked as described in the github repository, and I did have to manually hold the pogo in place to get a good connection. So that's neat. I can sleep peacefully now.