15
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?
For the past few years of Advent of Code, I've written step-by-step explanations for how each puzzle is solved. This has been an important step in my learning, plus it's fun.
Previously, these writeups have been available as GitHub
README
s, which is fine. But, in an effort to really showcase them, I'm making a little static site to host them. This has a few advantages:I'm building it with Astro and am very impressed so far!
I'm making my own frontend Javascript framework (happily adding on to the many that already exist). I've been in the web development world long enough that I feel I can make something better for my small side-projects, which I frequently make. It's been fun thinking from ground zero, deciding on what to keep from vanilla Javascript vs what to abstract away. One thing I find enjoyable about it is that I can limit its capabilities and reduce upfront work because I'm making it for myself. My basic strategy has been to build in new features when the need arises while developing a side-project.
These are always fun. Care to describe it in more detail? Perhaps similarities or differences to known frameworks?
Yeah! Here is some example code:
As you can see, building UI is done completely via JSON. I did this because I'm not a huge fan of how XML is formatted and it's way easier to manipulate JSON.
The UI is created using existing building blocks like "title" and "text" (and some more). These translate to various HTML elements with minimal styling around them. I did this so I could create UIs really quickly, it's basically a "component library" that ships with the framework. If I were to officially release it to the public, I would probably allow custom blocks to be created, but right now it limits me to only create super simple UIs, which follows the framework's philosophy of "Simple UI code = Simple UIs = Simple UI tests".
The last thing worth pointing out is that updates to the UI are done manually with the
update
function. I really wanted the programmer to control when the UI updates (which is very different from frameworks like React). I think this works really well with small, simple UIs, but probably will quickly run into problems with complicated UIs (something I'm avoiding in the first place with these projects). The update function takes in a format that makes it easy for a backend to update the UI to encourage dumb frontends while still preserving single-paged apps. I took inspiration for this from the HTMX project. You can still update things via the frontend like in the example, but ideally, a user action triggers an API endpoint that returns not data but updates to portions of the UI based on the new data.Could be a cool idea to further remove the JS functions as event handlers there. Perhaps a bit more like a JSON-RPC call definition. idk.
Yeah I like that a lot! The more the backend thinks it's directly connected to the frontend the better imo
Lol, relevant username gave me a chuckle đ
I had an idea tunnel into me that involves some graphics shader hacking/mistreatment. After a week of moments when I was sure it wasn't possible, and refactoring the architecture 3 times, I actually generated realistic, usable output.
A long way to go still, but it's hard to describe the relief and satisfaction I felt after everything fell in place. And all of it is a little too technical to try to explain to people in my circles.
I am currently preparing to work on KDE Plasma 6, be it code or just testing. Also since I have now time thanks to being laid off (..yay..) I think I finally have energy to work on my game project.
For the past year I've been working really hard on Storyteller, and I finally have it more or less working end to end, which feels amazing.
Storyteller is meant to be a self-hosted, open source replacement for Amazon Kindle's Whispersync. I love the ability to seamlessly switch between audio and text when reading a book; I prefer reading text but very often find myself wanting to continue my book when I get into the car for a long drive. I also really don't like using Amazon products, nor DRM-protected content, nor cloud services for media content.
So now I have Storyteller! It's got three pieces; a backend API (that does library management and automated text <-> audio synchronization), a web interface for administrating a library, and a (not yet publish) mobile app(s) for reading and listening to the books.
I've gotten to work with a very enjoyable mix of new and familiar technologies for me. The web interface is Next.js, which I'm very experienced with, but the mobile apps are React Native which is brand new (and has been super enjoyable, with some notable pain points), and the backend API is using fastapi and whisper, which are both totally new to me. If anyone wants to chat more about these, I'd be happy to.
This whole thing is definitely still in alpha, but I'm hoping to finish up the last few features (collections and user invites) by the end of this year and "launch" (basically just make a documentation site and announce that it exists) a beta early next year.
My 3D printer has some long overdue upgrades and enhansements that need to be done.
I've already put together a Nevermore filter for it, and now I just need to actually install it on the thing. There's also the issue of actually procuring the activated charcoal for it. When I installed the acrylic panels to enclose the printer, I somehow missed that I was supposed to apply some felt tape so it would seal properly. I might just skip that though, as I opted to use hammerhead style t-bolts to attach them and they are a real pain to reattach.
The super floppy hinge on the case for the control on it has always annoyed me and there has been a vastly improved version available for probably the past year. I've got it printed and I'm just waiting for a missing screw to come in the mail.
Along with that screw order I also got all the screws I would need to put together a stealthburner toolhead. The afterburner has been enough for me for quite a long time because I found that ABS is basically perfect for everything I print. But for the first time in forever I find myself needing to print something flexable, and much to my chagrin it's not able to handle TPU. I have a roll of PP that I would also like to try to print with but it's having the exact same problem because it's so flexible. I haven't bought the other components needed for the stealthburner yet, which is something of a problem since it will probably take a long time for it to come in.
Hey, I already have an update for this.
It turns out I don't need to bother with the Stealthburner anymore. I was fiddling with my extruder assembly and that's when I realized that at some point when I had taken it apart, I forgot to insert the PTFE tube responsible for aligning the filament into the hotend. Because there was now a cavity it meant there was room for the soft filament to warp. After cutting a new tube it's working flawlessly.
Honestly this kind of blew me away. I must have been printing at least a year without that tube in place without it ever being an issue. Given how most machines just simply stop working if it's missing a part, I'm really impressed at how well this machine was engineered.
I'm the main dev of Omnisearch, an Obsidian plugin. Nowadays the project is in "active maintenance", but I got a burst of inspiration 3 days ago and managed to combine a small http server (bundled in the plugin) with a userscript, to surface Omnisearch results directly in Kagi.
A small demo of the proof of concept.
I loved spending a few hours on this simple feature, because I got to work on a userscript. They're underrated and feel like relics of the old web, but they embody the idea of hacking, bending a tool â in this case, your browser â to your will with just a few lines of code, making it a little more yours without resorting to curated plugins or settings.
RSS Reader:. I finally redid the ingestion system to put feed idâs on separate feeds. I did a sample of 10% of the feeds and did a complete ingestion and classification cycle and seemed OK, I switched all feeds to the new endpoint, and am hopeful the next cycle (maybe tomorrow) is successful. I still need to update the UI for managing feeds so it creates new style feeds but that doesnât seem difficult at all.
One application of this is feed-specific processing. One annoying problem is that anything I submit to Tildes gets picked up from the Tildes RSS feed and of course the classifier will think I liked it because I liked it before! Things like this add up to maybe 5% of my feed and this info will help me filter out items I know I will never like that the classifier struggles with. Iâd have to work pretty hard to get a similar improvement with the classifier because the classifier is already strong, particularly given that I slowed down the classification cycle, letting it be more selective and operate at a better spot on
https://en.wikipedia.org/wiki/Receiver_operating_characteristic
Another big feature on the horizon is something that looks at an article from a place like phys.org, extracts links to their sources, determines if the papers are open access, and gives me a choice of which article to submit. But really I should spend time onâŚ
My blog: Still no progress, but a high priority.
Three-sided cards:. No technical work this week, but I am thinking about a simulation system for collages I want to make because I made a huge number of perfectly good prints that will be relegated to work prints
https://mastodon.social/@UP8/111219354336635872
for instance, where after having the cards in my hands it was so clear that if the characters are sharing the same space they have to be scaled appropriately by height the way Rin Tohsaka and Archer are. I am planning larger and more complex collages and my current process of âprinting 50% more cards than I need and put them together by handâ wonât scale.
Really though I gotta focus on getting the blog up.
I've been working on a Minecraft mod that adds a procedurally generated solar system that you can see in the sky! Everything has a simulated orbit using Kepler's laws, which was a bit hard to wrap my head around when writing the code, but it seems functional now. Next step is to actually add the procedural generation and do a bunch of pixel art.
I'm making a board game framework with my brother. Hoping to release it soon but so far it's really great, easy to work with and looks solid.
I just added an Exploratory Data Analysis (EDA) subcommand to my desktop productivity tool
https://github.com/chapmanjacobd/library/commit/1622affba03ef6acad737b0d63b2291dd5d91ac7
Ideally, it is able to read any file that pandas supports (there are some I know I still haven't added yet) but it works with most things. Spits out summary statistics (in Markdown!) like this:
Let me know if anyone has any ideas for other interesting stats I could pull out