27
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?
Currently I'm working on my own RSS Aggregator. What I'm planning to ultimately do is have it ingest news from a couple sources, match similar stories, and "rank" them higher depending on how many news sources are reporting on it.
Seems like fun!
I’m doing a similar thing but it’s for a niche hobby and the aim is to pull in sources for that hobby, then anyone can sign up and vote up the more interesting stories and discuss them in comments.
Kinda like tildes if the stories were pulled in from RSS automatically instead of submitted by users, and focussed on only 1 topic.
I've been working on a little wrapper for Tildes for iOS just as a fun way to mess around with SwiftUI. Screenshots below. With me migrating to Tildes and an official app having 0 chance of existing, I thought I'd create something that'd let me browse Tildes on my phone separately from my phone's browser. Coming from an Java/Kotlin/Android dev background, learning to program in Swift and learning to use XCode effectively has been a slow process. But I'm proud of what I've been able to make in about 200 lines of code.
https://imgur.com/a/sSRkofz
I help run a Discord for an iRacing league and handle new signups. We need people to sign up on the Discord and in iRacing, which many people forget to do. So last night, I started on a Discord bot to look at new signups and check through the iRacing API if they have registered for the league.
Pretty simple Python stuff, but it's fun to automate daily struggles and ease the workload of the Discord mods. Also for fun, I used ChatGPT to generate most of the code. It did OK, but some of the iRacing API is documented in a closed forum, so it struggled a bit there.
How the hell have I been playing racing and sim racing games my whole life, and I'm hearing about iRacing just now....
Time to dig deeper
Oh man, you're about to go down a rabbit hole lol. The sim is pretty great. They're always improving things and some cars are better than others, but overall it's fairly realistic. The laser scanned tracks are excellent. Also their match making system is superb and is what really sets it apart from other sims.
I'm doing a research project for my university right now in the field of radiation hardened electronics. We have a custom built RISC V SoC that I've flashed to an FPGA, and it'll communicate to a microcontroller via UART when placed under radiation (gamma & neutron sources are planned for right now).
It's cool stuff and I enjoy doing it but it's a little tough staying motivated when I'm writing C code on a daily basis.
That’s cool, what’s the fpga?
It's an Intel Cyclone IV FPGA. I'm not sure exact model but it's a 115 iirc. We use it in our senior level computer architecture class, which is pretty cool.
It’s nothing compared to others and how they’re actually programmers, but I’ve started learning how to use html again. I used to use it with such ease as a kid without really knowing or understanding what I was doing.
Gotta start somewhere!
Thank you! I’m using Sololearn and I’m hoping I can actually start a side project playing with this stuff.
I have been customizing a container to go into fedora silverblue. I have been thinking of redoing my OS setup for a long while. I want rolling release, immutability, and easy reproducibility. Fedora silverblue seems to fit all those.
Silverblue can boot into a container which means that I can create a container and just rebase silverblue to that container. Some very smart and passionate people have created ublue, which is a framework to make images for this.
For my dev environment, Ill use distrobox(or toolbox) with an arch container. I have also thought about vanilla os but unfortunately, I don't think its mature enough.
making a text-based tetris game because i have nothing better to do with my life :p
Cool! What language are you writing it in? This just made me think — a terminal based tetris would be a great way to kill time.
hii yes i'm writing it in javascript which is probably not the best language for a terminal thing but it’s just what i have been using a lot recently, but i might end up switching to some other language because i’m getting annoyed at javascript’s idiosyncrasies for this type of thing hehe
yeah it would, i play a lot of tetris to kill time, and now i guess i’m programming tetris to kill time hehe
I've been working on an experimental open source podcast editor called Coalesce. It uses Whisper speech recognition to timestamp words. You can slice up and reorder the audio by editing the text.
One thing I've been puzzling on is how to make all the moving parts easy to install and self-host. This weekend I worked on packaging the transcription and audio preprocessing into a worker queue, with an API server to upload audio to. Getting close to being able to demo the editor to a few alpha testers. 😁
Learning and migrating apps from VMs to openshift has been the biggest learning...thing I have done since starting my IT career.
Why openshift specifically?
It's what work choose, was before I was on the team but they like having an enterprise support behind the product.
I have still been working on farmd. Half of a farm game. This week I have been doing a ton of refactoring. I have moved the "business" logic for many of the callbacks to their own files. So now there is a file just for functions related to trees, fields, etc. I have also abstracted some of the more difficult to understand code to its own function. Instead of going through and checking where an item is stored then removing it every time I need to do that, I just have an add_to_storage function. So instead of writing out that monstrosity every time, I just setup a switch to handle errors. I also made macros for handling common code. I think it is shaping up quite nicely. I hope to make the pull request for it by the end of the week. Then I can get onto adding new features.
Worked on creating a Rust FFI wrapper library for an SDK that only has dynamic libraries and headers publicly available, and not any of the actual source code. Learning a lot about FFI API design and relearning some lower-level system stuff. It would be a lot easier if the source code itself was available...
The main problem I'm running into right now is making the Rust API consistent, accessible, and efficient. For a trivial example, there is a
version
method that asks for a buffer so that the method can copy a string representation into it. I thought about just caching it after the first call, but then I remembered that there may be the slight probability of someone switching out that dynamic library at runtime for some reason, and that might cause some weird issues in terms of program logic. I'm thinking of just noting that down in the docs and exposing a FFI module that calls the non-cached method.I'm planning on eventually just rewriting that SDK itself in Rust, since according to its own docs, all it seems to be is a bunch of Nanomsg calls to another service's IPC pipe that should be running on the same computer. Shouldn't be too difficult, right? (Famous Last Words...)
Edit: Jesus,
ffi
looks terrible when my font tries to make it into a ligature.ltrace
,ptrace
, andstrace
to keep track of requests/responses the library makes, so that a native, open-source version could be written.At least I learned how to use the
trace
tools to some extent.At work: Network segmentation and firewall rule audits. Pro tip: having servers with PHI/sensitive info on the same subnet as your endpoints is not a good idea.
At home: just bought an LSI 9220-8i SAS card for my home server. I currently have a MergerFS/SnapRAID pool of 4x8TB HDD drives, but I'm going to be installing a few new drives and installing the RAIDZ Expansion branch of OpenZFS in a RAIDZ2 configuration as the file system on those drives. I'll move non-important files (movies) to that pool at first, and will slowly move everything over after the branch is merged. I also need to get Splunk back up and running for firewall/server/netflow monitoring.
YOShInOn is a smart RSS reader that currently ingests about 2000 articles a day and selects about 300 to show to me. The main user interface looks like TikTok or Stumbleupon and under the hood it uses sbert.net to convert text to embeddings which are then classified with a probability-calibrated SVM. It uses clustering of those embeddings to: (i) show me a diversity of topics from 20 clusters (so I don't get spammed with nothing about arXiv papers about text classification, reccomendation systems, etc.) and (ii) suppress bursts of articles about the same topic.
I got the idea for YOShInOn in 2005 when I was involved with research on text classifiers and thought "Why is it RSS readers are all failing with the same failing interface that keeps failing?". I thought about it on and off for years and did this little project
https://ontology2.com/essays/ClassifyingHackerNewsArticles/
but it was the insanity that fell over Twitter that got me to spend the weekend after Christmas coding it up and I've been building it ever since.
It's got the serious problem for productization that it takes quite a bit of data to work well. Right now I have it using the last 40 days of data because it doesn't perform much better with more data and to keep it reflective of my changing interests. That's about 9000 judgements; the system starts to "wake up" with around 200 judgements and takes about 1000 judgements to start getting good. My guess is that most people have a short attention span and would give up after giving it 5 or at best 50 examples. I have some ideas about how to improve performance with less data and I've got enough data to do experiments now but could care less for my own needs because I am swimming in judgements now.
(At this point I understand why everybody else is using collaborative filtering, privacy be damned, and why content-based recommendation is a backwater!)
It's written in Python, uses scikit-learn and huggingface transformers, aiohttp and HTMX.
I am currently regrouping but will probably put some work into a search interface for things I have favorited and also something to ingest single articles so I can use it as a bookmark manager. I'm also interested in making better tools to graph and measure its performance built into it so I don't need to use Jupyter notebooks to do that.
RSS ingestion is a weak spot, it uses Superfeedr which works great for high volume feeds (like this site, arXiv papers, or news from The Guardian) but costs 10 cents per feed per month which means I can't afford to follow 1500 personal blogs. I favorite links and post them here, to Hacker News, and to Mastodon and it would be nice to have better sharing tools, for instance to email a day's worth of selected links to a friend. It has models that predict the probability of a post getting >10 votes on HN or having a ratio of comments/votes greater than 50%. Wanna add a model that assigns tildes topics to articles.
One development path involves focusing on ease-of-use and making it a "consumer product" (afraid I can't make it learn fast enough) the other is a "pro" version that can handle a workflow network of classifications (e.g. "is this about sports?", "is this about a game that is about to be played?", "is this about a game that was already played? and other kinds of data input. I think it could even handle images about as well as it handles text.
This sounds absolutely awesome! Is it already in a state that others could play around with it? Or if not, a webpage or such that I can bookmark to keep an eye on?
At work: Hardware-in-the-Loop testing. We have microcontroller boards from several different vendors connected to Orange Pi boards that serve as GitHub self-hosted runners. Most recently I've written Python scripts called by a workflow that probe USB for device types, serial numbers, and ports, then formats that as yaml and commits it back to the repo so it can be used when running automated tests.
At home: I'm getting to know QMK as a replacement controller for the Kinesis Advantage 2 mechanical keyboard.
I'm working on bringing my Synapse server back up, and alongside that, new Lemmy and Mastodon instances.
Oh! It looks like the Synapse server finally launched while I was typing this. I'd migrated the VM it's on but the database got malformed. Luckily I still had the original.
I'm working on a windows project that allows a user to allow text to speech as a microphone. So you can use it in discord, games, etc.
Currently it doesn't work without vb audio. I'm trying to figure out a custom solution, but that requires me to work with windows drivers, which is the biggest pain I've ever had in my programming years.
over the prior couple years i've made a full mando suit via 3d printing and other work, and separately a couple of cool LED projects controllable via webapp on phone. so, my project for this halloween is to combine the two areas and make a daft punk helmet and suit, all controllable.
Right now I think I have too many personal projects, so none of them have been getting the time they deserve...
I've also got some homelab stuff I want to work on, but that's lower priority at the moment.
What eink display are you using for the personal dashboard? I've been wanting to so something similar but have no idea where to start.
I've been using Waveshare eInk displays - they're reasonably priced and generally come with a "hat" for connecting it to a Raspberry Pi via the GPIO pins. There's a Github repo with all their examples, and they're common enough that there are libraries for them in quite a few languges.
If you've got a Pi Zero, they make a 2.13" model which matches the size. If you've got a Pi 3B+ or a Pi 4, I'd recommend their 2.7" model with buttons which also matches the size of the PCB. I'm using their 6.5" display and have a very basic 3D printed case for it which also includes a mount for the Pi Zero I'm using to run it.
So, here's some random stuff to keep in mind:
I'm sure there's more, but that's what I can think of off the top of my head. If you've got questions, feel free to send me a message and I'll do what I can to send you in the right direction.
Thanks for the detailed comment!
Would you think that doing something like a digital picture display would be infeasible to someone that has zero experience with embedded programming? I'm worried that I'll spend money and end up with no usable device.
I think it would be possible, but rather than eInk, I'd probably recommend using some sort of LCD. It would let you write a webpage and configure a browser to open in full-screen mode on startup rather than having to do anything embedded.
In general, working on a Raspberry Pi is what I'd call embedded-lite. You can use the GPIO pins and other hardware directly if you want to, but you also have a full programming environment and aren't limited by the size of the flash chip, or what languages you can use.
If you wanted to go slightly more lightweight than a full browser, you could use other libraries to draw to the screen.
Doing an eInk display would be possible with no embedded experience but it would be a lot more work than the alternatives I mentioned, depending on how familiar you are with the languages which have provided libraries for those displays.
I do hobbyist game dev, traditionally arma 3 but lately I've been trying to get into beam mp scripting because the damage model for that game adds a ton of depth to even pretty simple gamemodes. a point to point race traditionally is fun sure, but with realistic damage it becomes a LOT more interesting, because now it's also about not taking damage. Even seemingly innocent hits can now be race enders if you break a suspension link or something.
Hey, I'm pretty new here.
I have been tinkering with my devices, installing OpenSUSE Tumbleweed on all my PC's: My main desktop PC that I use for everything, my Thinkpad X280 and my very old HP Compaq 10 from 2007, which has some weak Intel Atom and 1GB RAM. Bought a 2GB stick for it, hopefully it'll arrive soon. I also changed it's old HDD to SSD.
My current game project Artificial Rage is a bit slow due to being perpetually tired, but I've been updating my Revontuli colorscheme for pretty much everything I use.
Hopefully I can get some gamedev done soon, I miss it. My vacation starts this weekend at least. :)
Currently working on the next version of my festival totem. For the unfamiliar, a totem is something you put on a pole that makes your group easier to find in a big crowd. They often light up to be easier to see at night, but don't always. Last year's looked like this https://imgur.com/a/WOFKjEL
This year, I'm upgrading from 50 WS2812B RGB leds to 300 HD108 leds (150 per side). The new LEDs will give me much more control over brightness and smooth color fading. Trick is, the new HD108's use 16 bits color + 5 bits brightness RGB channel and there isn't much support in libraries for this format. I'm also upgrading from an Arduino Nano to a Teensy 4.1 for more RAM and a faster processor, and plan on rebuilding the totem from scratch now that I have a 3D printer to work with.
I finally got my selfhosted Git server (Gitea) up and running on my docker host with a custom subdomain behind an Nginx proxy. Feels GREAT! Now I can feel safer with using that as my backup tool for my Obsidian vault where I keep all my notes for personal/work projects.
I’ve been working on a markdown(ish) note writing app called Tangent. It’s built on Electron using Svelte. Svelte has been an absolute dream. I love it.
The app itself has gone well, but the text editor I’m using has kind of died. The project owner hasn’t responded to my PRs and emails since the beginning of the year. I’ll probably have to hard fork it or just replace it. Either way, lots of work.
I’ve been working on a Flutter package called
infinity_view
.There have been multiple projects where I’ve needed exactly this and reimplementing it every time didn’t seem very efficient.
I'm working on a chatbot in go that runs queries and returns data from postgres into rocket.chat or discord. A great new challenge for me and go is so intuitive that I find it much easier than python.
Making an alarm app in react native (using expo), which is similar but weirdly different from my background in web react. For example, trying to get all children of a view to have a margin doesn't seem like something that's easy to do.
That said, any library/ui recommendations? Currently just have zustand for state management and typescript installed.
I’ve been exploring building applications that have large language models and vector databases at the core, making use of the open source framework langchain. In particular I’m focused on Q&A systems over a knowledge base, with exploring APIs-as-agent-tools up next, followed by integrating with a analytical data store to do nature language driven data analytics.
I've been working on a multiplayer prospector survival game on Android for a few years now. Check it out if you like a more chill, mobile version of Rust!
https://play.google.com/store/apps/details?id=com.rustle
I set up an adafruit pi eyes kit inside a plastic halloween gator skull with some other hardware to build a fun local voice assistant to connect to my home assistant setup. The eye rendering code is all written in python, and it works fine, but it pegs a CPU core so I’ve been working on understanding how it works well enough to rewrite it in another faster language, like C, rust, or maybe zig.
But I don’t often have the energy for that project after work so it’s been slow going
Home: learning Python and Go
Work: multiple things going on simultaneously with a few new infrastructure related container installs on our OpenShift clusters.
Devving a fun lil shoot em up :)