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?
Yesterday, I wrote a program to help me filter down a big page of links via including and excluding link text and plain text between links.
Beautifulsoup does all the legwork. But it was still fun to figure out:
One of the cool things is that it works on HTML fragments too so I can just copy some Rich Text and then run the CLI:
And then it will print the list of links that don't have any of those words in plain text to the right of them before the next link in the HTML fragment/page
I've been getting into some light game development this week. Went with the Phaser framework since I wanted something easy to hop into and I'm writing JS all day long anyway, may as well write it at night too! My first attempt was a super basic "game" with little rats and snakes scurrying around the screen. Rats would reproduce upon colliding with another rat, snakes would eat the rats and were supposed to reproduce upon collision as well, but there was a bug where that didn't happen and I ended up with hundreds of rats pretty damn quickly.
Decided that was kind of an aimless pursuit and decided to make a nod to Sim Ant instead. It's also pretty basic currently. You just run around as an ant and eat food. Food replenishes a hunger meter, and certain foods (I think strawberries) give you a temporary speed boost. But I fleshed it all out so I can easily add stat boosts to food by just populating some JSON files.
Github | Demo
I'm already kind of thinking I'll ditch the sim ant inspiration and go with a simple RPG. In keeping with the pun titles, I'm thinking an adventure RPG called "AntVenture". The idea of an ant running around with little ant armor and like a tiny sword glued to its head just makes me laugh, so I think that's the direction to go.
Not really trying to do anything serious with this, just having some fun and really enjoying the different types of problems that game development brings vs web development. Also really enjoying making pixel art as I've never really done it before. It's a lot of fun!
Building a small app to track games/books/films/tv that I want to complete or have completed. Having quite a nice time using HTMX for interactivity, so I don't have to write anything other than HTML and Python. I've been using various cloud tools for years (currently Notion, previously Trello) but want something a bit more specific to how I use and group things, and that's not a service specific to one type of media like Goodreads.
Finding appropriate datasources has been an interesting task — the quality of APIs for games/books/tv vary wildly. I was quite suprised to find Steam's APIs aren't very good for something like this.
I'm pretty far from-open sourcing it, but did post some screenshots of my work-in-progress (1, 2, 3).
RSS Reader: Small tweaks this week such as adding new sites to the list that automatically get redirected to archive.today. A week ago I'd completed an upgrade to the front end that tags items with the feed they came from, I've got several forms of automation I'd like to add based on this information but having had some time to think about it the next thing to do is show the feed information in the UI and put in a manual filter to see recent results from a particular feed.
(Note the main browsing UI looks like Tik Tok. YOShInOn has never used most of the failing UI tropes that failing RSS readers have been failing with since 1999 such as: email-browser style interface where you need to mark everything has read, a page with a panel of items for individual feeds, etc. So I've gotten this far without a screen to show "last 50 results from feed X")
I spent most of the week wiring inputs and trying to understand why perfectly reasonable code resulted in corrupt output. After finally discovering a specific rendering detail, it all works just like I'd hoped.
I'm writing inputs as pixel colors on an image and generating a result as an output image. The fancy part is doing it GPU side in a "normal" shader, so I can offload from the CPU and parallelize the process.
After being reasonably happy with the results, I tweaked the CPU side with parallel for loops. The performance bump moved the responsiveness to nearly real time, and I was able to reduce the result cache size by an order of magnitude.
With the entire process proven and working, I can now play with the analysis side and use as many independent inputs as possible. There are so many ideas I can finally try out.
Lots of exciting things happening at work. I'm more-or-less onboarded now as it's been 3 months since I started so I'm finally doing feature work rather than bug fix work. I've also been assigned to the big new project my team's been working on for this quarter which changes the core experience of the product. The exciting experience will still be there but users will have the option to mix and match the experiences as they see fit.
Less exciting is being put on call and dealing with some customer complaints where they weren't able to transition from our legacy experience to our current experience (not what I mentioned above). Diving into the logs just confused us all, including the principal engineer who I'm working on this issue with. The logs simply show that the user initiated the transition from legacy to modern and that the transition was successful. However, the next immediate log says that it will be reverting the transition. There's some error in the flow which is being silently consumed instead of being logged so we're trying to add more logging now to find the issue. Only trouble is the principal engineer I'm working with on this issue is on the other side of the planet so it's hard to coordinate.
On a more personal side of things, I've been looking into doing some storage upgrades on my little local media server. I don't have much media, only around 600GB worth, but its all on a 10 year old WD Blue 1TB hard drive. I don't run the drive 24/7 but I usually keep it on for ~8 hours a day and sometimes it'll run for a few days nonstop. Given that the average hard drive lasts about half as long as my WD Blue, I'm just a little worried about it dying. Been looking into replacing it but I'm just not sure what to replace it with. I could get another WD Blue HDD or a SATA SSD for the same price. However, an SSD seems way overkill for the things I'm doing. Sometimes my ambitions will steer my thoughts and I'll look into one of those massive NAS specific drives but those are expensive and again way overkill for my tiny media library. I think I might just end up going for a SATA SSD for ~$50. Its more expensive than just getting another WD Blue HDD for ~$30 but not having the sound of a HDD spinning would be nice. I'm not looking for a 24/7 media server, just something to stream older TV shows, movies and home videos without having to deal with streaming services so if any of you have any suggestions, I'm all ears.
A small project I made for myself about a month ago and have been tweaking since is a program that generates automatic meal plans for me. It downloads my school cafeteria's menu from Google Drive, parses the pdf file using a hacky regex, and then uses a linear solver (through JuMP) to generate breakfast and lunch plans that fit the required amounts of calories and protein.
https://github.com/flexagoon/automenu
It currently doesn't have a readme, but I plan to write it soon, there are some interesting implementation details. Right now you can just look at the code, it's written in Julia, but it is similar enough to Python so you'll probably understand it without any Julia experience.
I made a bird-themed React project that was my first run at React. I spent all of my time outside of my full-time job working on this, but I think I finally finished v1.0. I still have things I want to do to it, and obviously there are still some issues I'm ironing out, but for the most part, it's complete. If anyone wants to take a look, you can visit it here while I'm getting my domain set up.