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?
I recently migrated my gaming desktop to CachyOS (an Arch derivative) - I no longer run Windows across any device. So that's a thing.
As far as programming, I'm unemployed and burnt out. I don't want to go back to work as an SRE so I'm trying to come up with a side project to make some money but it's pretty difficult. As a break from LLMs, I'm writing a dota2 vod aggregator in Elixir/Phoenix. I want to take YouTube videos from tournament organizer channels and chronologically order them, diminish spoilers, and maybe enrich them with some metadata (who is casting, team stats, etc). This is so that I can more easily keep up with majors and smaller tournaments (like BLAST SLAM). YouTube is a pretty bad interface for this because if you search "blast slam" you're going to get multiple different tournaments, replay compilations, reaction videos, etc - and tournament VODs are rarely organized into playlists.
I made a browser extension for Firefox! It's a silly little thing that might only really be useful for me, but its been reviewed and approved and you can find the link to the extension in my gihub repo. You can find that source code here. All in all it took maybe 4 hours-ish to make over the course of two days. Since I had to learn how make an extension for Mozilla, and then relearn javascript. Only thing left is to test on my phone so then I can release and use it on Firefox for Android, which was the whole goal of this in the first place!
Sorry, father, for I have sinned. I created static compiler for TypeScript. It is actually not full yet, I just implemented synchronous language features before ES2015, but have ideas how to connect libuv for async stuff. Since the scope is huge, does anybody think it is worth it?
I've used TypeScript for making CLI tools before I've learned Go, so this silly project could make sence to me few years ago, and now I don't know if I should invest more time into it. Does anybody see value in making static binary from TypeScript?
Sounds like an interesting project. Are you emitting machine code yourself, or are you compiling to an intermediate target (like Go, or WASM, or LLVM IR…)?
I compile to LLVM with custom runtime lib for JS behavior, similar to .NET or JVM.
Here is my pipeline
TS source
↓
tsc via Node bridge, build-time only
↓
Typed AST
↓
Custom Semantic IR (SIR)
↓
SIR optimizations
↓
LLVM IR (inkwell)
↓
LLVM optimizations
↓
Object file
↓
Link (clang -fuse-ld=lld, static runtime + GC)
↓
Executable
Most definitely! I’ve believed for some time now that TypeScript has the potential to become a new “default” choice for cross-platform applications (at least for ones where performance doesn’t decide the programming language), mainly for CLI tools (that potentially do things over the network) and maybe some light GUI stuff.
Basically the space that used to be (somewhat? not sure) filled by Python before it became a packaging mess – and would basically require users to have e.g. Astral’s
uvinstalled.For what it’s worth, I really like your approach with a “custom” IR, this is very interesting stuff.
More proof that demand or at least a baseline of interest is there, by the way, would be Bun’s compilation feature, which also enables static/standalone/non-browser non-Node builds. But if I’m not mistaken, that “just” ships a Bun runtime bundled into the binary, which is probably the simpler approach… but also the less cool one from a computer science perspective :-)
Like, your idea has more steps for sure, but somehow still feels “conceptually” cleaner. And if (I’m guessing) performance gains are an added bonus, even better!
I've been working on adding ML support to Heavy, my anti-bot firewall project.
"Anti-bot" is not 100% correct: determining whether web traffic originates from a real human is impossible-ish. So Heavy aims for the lesser goal of answering, "Would this request increase server load?" and blocking only those requests. This lets some bots in, but only those that behave themselves.
My plan is to use classical ML techniques to do that. Segmenting traffic with random forests looks promising, but I've been getting bogged down translating the logic from Python to Rust—I must resist the urge to squeeze every ounce of performance out of the machine! I've made some solid progress, though. There are trees where none grew before.
Interesting! Where does Heavy integrate? On each server hosting a web server/serving sites or per-project configuration?
It's a reverse proxy. Your favorite web server routes traffic to Heavy (localhost:8000 or wherever), and Heavy routes the filtered traffic to your application (localhost:3000). The README goes into a bit more detail about my specific setup, but that's already most of it.
If you had multiple apps that needed different configs, you'd run multiple instances of Heavy on different ports. At least for now; I've been thinking about adding multi-site support.
I'm a completely non-technical person but I've always wanted to host my own website for my portfolio instead of paying for carrd every year, so I finally took the plunge into static website generators.
After some research I decided to install and test Hugo yesterday and was shocked at how easy it is. It seemed daunting from the instructions but after choosing a theme I liked and inevitably asking an LLM some questions about the folder structure and how I can add my own overrides to change colors and stuff, I realized just how trivial the whole thing is. (seriously reading the documentation for it was not very fun or easy to understand. I have to give the win to the LLM this time)
I'm pretty confident I can spin up my own static website soon enough once I'm happy with the layout (I'm using aafu as a base). And the best part is that if I'm not, it's trivially easy to switch themes and preserve all the content I wrote. Very excited!
If you need a place to host it, you should check out the cloudflare pages. Their free tier is very generous, and they have built-in integration with github and most of the static site generators (I used Astro). Once you set it all up, a push to github triggers a build. You can also set up a preview branch, so you can push to preview, test, then PR to main.
That was actually my plan! Cloudflare should fit all my needs since it's just a static portfolio page that I'll only update every once in a while.
I have a playdate game concept that has been bouncing around my head for a long time now. It started as a cave exploration game. There was a minigame in a game I played a long time ago that had you exploring a cave. Very simple, no minimap, somewhat like a text adventure with compass direction movements. At first it was oppressive, and getting lost was easy. But I started mapping it myself on grid paper. I had to come up with my own set of rules and symbols to keep everything understandable, and handle interesting conditions like rooms being directly above other rooms. I remember one time when I was mapping some new rooms in an unexplored area, and realized that they matched some already mapped rooms, and I got to update my map to show the new loop. It's kinda hard to explain, but it was a fantastic experience. And I have this hand-drawn map that I made myself, and navigating in the cave system was trivial. So I want to try and make a playdate game that requires and emphasizes this gameplay loop.
I have had an engine that could handle this implemented in my own terrible handwritten lua for a while now. It allowed the designer to add rooms to a map using a directed graph system, not a coordinate grid. This allows interesting things like non-euclidian geometery, two different routes between two rooms being different lengths, one-way routes (falling off a ledge, jumping down a hole, swimming down stream, etc), and a bunch of other possibilities.
My engine was extremely simple to begin with. I wanted to get to a minimum viable product before spending a bunch of work refining. But the last time I had worked on this project was back before codex and claude code existed, so I tried out how well they would fare in this task. I started by having it rewrite the project to typescript using crankscript, which compiles TS into playdate style lua. I absolutely love typescript, and LLMs are far better at typescript than lua. That conversion went off without a single hitch. I tried to have GPT-5.5 clean up the user interface, but GPT-5.5 is incredibly bad at user interface design, and I don't like the coding style it uses. So I decided to pay for a $20 claude sub and try out fable while it's available on the subscription plans. I had fable upgrade the engine to support different artwork in scenes (Text only, side by side text and artwork, full art with overlay text). I had it build out and redo all of the user interface, including main menu and a save system. I had it build a rudimentary inventory system. It did all of this without a hitch. Honestly, this probably wasn't a particularly difficult task for fable. I feel like opus could have done the same, and sonnet probably could have gotten close. But now I was where I wanted to be. I had a minimum viable engine, I just needed some maps to test it on.
On a whim I tried to have fable design a map from scratch. When I had codex do this, it threw some rooms together pretty nonsensically and made something that was functional, but not good. I didn't think fable would actually be able to produce something good, but I hoped it could scaffold something that I could refine. But it actually created what seems like a pretty good campaign. It included some interesting things like a pair of rooms that look almost identical, so a casual mapper could get them mixed up, a penrose infinite staircase, and some other interesting aspects. So I decided to give it another shot at an entirely new campaign. One prompt and about an hour later, it had another unique and interesting map. I didn't know what else to do, so I looped it into creating 6 different campaigns. It created some placeholder artwork that isn't bad (but isn't great). And each has interesting and unique mechanics. I am honestly very impressed with fable.
The subsidization on these AI subscription plans is insane. Over the past 3 days with fable on a $20 plan, I have spent $274.63 worth of API credits. And on my $20 ChatGPT sub, I have spent $113.32 over the last 30 days.
I think my end goal is to get this on the playdate catalog, which allows AI coding assistance, but not AI generated images/text, so I will likely play through the fable maps, document the player experience, then build my own maps that are similar. But for now I am teaching myself pixel artwork.
I know this feeling! I love when loose ends get connected and you have one of those, "Oh, this is that" moments. It happens a few times in the Tintin series, where he's exploring the bad guys' hideout and uncovers a secret passage that leads back somewhere we the reader had seen before.
Out of curiosity, do you remember which game it was that had the cave minigame?
Enjoy! I've always found pixel art to be fun because it's so forgiving. The medium forces everything to be abstract, and at least for me, that removes the pressure of having to produce a realistic drawing.
I don't remember unfortunately.
I don't consider myself much of an artist, so I feel a bit out of my league here. I have done artistic stuff before, but mostly just following along with guides in a really structured way. The idea of opening a blank canvas and just making something isn't really in my wheelhouse. This actually makes the play date a very good target. What color palette do I choose? Well I only get one, and there's only two colors. I know the saying that limitations breed creativity, but in my case it's that limitations avoid choice paralysis. I also saw a comment on one YouTube tutorial I watched that was something like this: "Embrace the jank. Pixel art isn't perfect. If you want perfect, don't do pixel art. Get something that looks good enough".
This is the kind of experience that has me really hesitant about getting used to AI use. Subsidisation will only last so long. Also, I'd be interested to know, do you think you have generated $400 of value in output between them? If you'd know what you would get out of it, would you have spent $400 to get it?
Absolutely not to both questions. I'm currently of the opinion that I might as well use it while it's subsidized, and when they crank up the cost, there will probably be a new Chinese model that can get pretty close for a fraction of the cost.
In my view, it's basically the same as when moviepass was $10/month for unlimited movies. Obviously just a way to hemorrhage money, but it hemorrhaged money to my benefit. So use it while it's there, don't develop any brand loyalty, and be ready to jump off when it goes off the cliff. I watched Oppenheimer 3 times in imax 70mm film because of movie pass. Those were like $25 tickets. Not something I would have paid out of pocket for, but it was enjoyable.
As a side note, I played through one of the fable campaigns, and it's pretty mediocre. I'm still impressed that it did what it did, but I won't be keeping any part of these campaigns except the gameplay ideas and maybe the themes.
One thing I am having AI do right now (opus, since I maxed out my fable usage) is build a web based map editor. It is entirely vibe coded, and I don't plan on changing that. It only needs to edit some well structured typescript code, so I can audit its output, and I don't really care how it got there. Since I'm the only one who will ever use it, I don't care if it has weird quirks or bugs. I think the map editor only cost maybe $40 in api usage cost, which is probably pretty close to being worth it for me.
I kept forgetting to post in this thread, so here's what I've been up to since May:
Wrote ocgcore-ffi which provides Rust bindings to a C++ Yu-Gi-Oh! script engine. I also got it to compile and link to WebAssembly so it can run in the browser.
Started Project Tensho with the goal of creating a full-fledged Yu-Gi-Oh! simulator. Right now the minimum viable product, and the goal for v0.1, is to set up a single-player practice environment for the Fire King deck. I'm almost done with that, and right now you can play and do combos with all the cards in the deck. Still very much a WIP and rough around the edges. (I also need to commission a UI and icon designer to nail down a visual identity for the app.)
Planned a feature update for Project Echelon, my replay to MP4 converter & Discord bot. Someone asked if the bot could provide a decklist if provided with a *.ydk file, and I thought it's a nice feature to have. Also I found some opportunities to reduce hosting costs and RAM usage, so I'm bundling that in.
So, I had a customer who purchased a function generator from me on eBay and we ended up having a conversation about electronics, in which they mentioned they were also looking for a frequency counter. I had some options, one was priced right for them, but I needed to do some work to refurbish / test it to make it ready to go out the door.
That ended up actually being pretty in-depth and I encountered various issues along the way - and I happened to be filming chunks of it to provide video documentation. Somewhere along the line I decided there was enough in the way of useful detail that I'd make it into a public video for my channel so other people could use it as a reference for the various common / uncommon / seldom known details for the care and maintenance of HPAK (Hewlett Packard / Agilent / Keysight) 531xxA series frequency counters.
Video here if anyone wants to spend 2 hours watching me go over technical maintenance work on a 53181A frequency counter.
I was wanting for ages to make an Amazon Echo Show-a-like device for my desk. I got tired of my Echo Show reeling stupid adverts at me. So I went ahead and got myself all the parts from pi hut, screen , stand, a pi board, and implemented the perfect thing using pygame.
It shows a carousel of my grandson pictures, a monthly calendar with day and event highlights, sunset and sunrise times, and a weather forecast.
I implemented an SDR based sniffer for my weather station senders on my little NUC server, and exposed an API for that, so the desk display shows some actuals, as well as forecast.
I implemented a sniffer for my TAPO wireless camera system, to hook when a camera event occurs, and stream that to my new desk display. The TAPO wireless cameras don't expose rstp, so I had to implement something to take the live video feed from the TAPO C200 hub, and transform it in to rstp so the pi could consume and show it.
Finally I bought a decent USB microphone with a mute switch, and added locally processed wake word and voice commands to the display. So I can ask it to dim screen, show camera, etc. when I need to.
I'm really, really happy with how this turned out. It's entirely bespoke to my needs and wants, and it works perfectly. It auto starts on pi board boot. Magic stuff.
Of course it's highly opinionated about my camera setup, my wireless weather station senders and whatnot, but that's okay. It's mine :)
After working on free and open source software exclusively for many years, I launched a project that I hope will make me some small amount of income through providing an online service that's valuable to event hosts:
https://shareourpics.com/
It's a QR code/link based photo collection site for weddings and other events - the most affordable one on the market to my knowledge.
It needs quite a bit of polish still. You can probably tell that I'm a backend dev :). But I'm excited about it and continuing to improve it most days!
Do you have plans to include the ability for the event organizer to make a curated gallery to share with others? That would be incredibly useful for all types of events.
I'm envisioning allowing the organizer to just select the photos they like, then they appear on the "public" side of the event, perhaps even at the same URL where photos are/were uploaded.
The answer is...maybe. While obviously useful, the app solves a problem on its own right now: extremely simplify the upload process for edge case guests (grandma, your friend without google/apple accounts, etc.).
Once you as the event owner have all the pictures, you can curate and share them however you'd like.
Once you get in to curated gallery sharing on my site itself, I get in to higher data throughput costs and higher risk of abuse (CSAM, inappropriate pics from disgruntled event staff, etc.) that could compromise the simplicity of photo upload. If uploaders need to make an account for compliance purposes, then my simplified flow is still gone.
There are many sites that do what you describe, and they're priced higher (usually by more than double). My differentiator is affordable and simple. If I can work around compliance risks and costs without compromising the core upload simplicity experience or raising prices too much, then I'll do it!
Yes, anything where you collecting and sharing images is fraught with potential moderation issues. I contribute to a FOSS app where it'd be really excellent to have some image hosting for users, and I frequently actually create the very start of something like that, but within 30 minutes I just think "not worth it". CSAM, abuse, copyright, etc etc. Yikes.
Unfortunately, one day Imgur is going to tell us to stop hotlinking to images hosted by them, and then we'll have to figure out something and lock it down to some degree to approved users or something.
Well, I would argue you already are taking on the risk of collecting that type of content. If the organizer is filtering the images and choosing what to display, that's someone who provided their address (payment info) taking a lot of risk to share inappropriate images.
But I fully respect you doing things within the confines of your own comfort level. And what you've built is already impressive!
I'm working on a tool to assert that I'm a human on the web via some oAuth like pattern.
Also working on some UEFI and Bootloader stuff, like merging efibootmgr with syslinux
How does the human assertion thing work? I'm intrigued
Well, it's got some cryptography needed. Claims and Vouch process. Unfortunately it's got some "block chain" things needed and folks kinda hate the smell of that. The stink of shit coins and all.
I don't know how to ask without sounding rude (a frequent problem for me) but...why do you care (about human verification on the web)?
I care because of the state of the web. I wish there was a standard and effective way to fight the bots/slop problem that exists in all popular social networks. There's no way to completely eliminate it of course - after all, a human can sell their online identity to a bot network or it can be stolen, but it's still a bottleneck for bots where they would need to harvest these accounts somehow. It would make it very hard to employ a firehose of shit technique in online discussions.
In other words, I long for the days when comments/posts on the web were (almost) always made by humans.
I've brought back my old logic puzzles forum. The static site was always there, but the related forum was offline for so long due to a spammer all of a sudden figuring out my low tech spam avoidance techniques.
I am no longer using phpBB, I instead vibe coded something. It mostly generates static HTML. I finally pushed out a Russian translation of my puzzles, and whoa nelly, a few days later I got so many Russian spammers.
Weirdly a simple javascript check still seems the most effective thing at blocking spam. I've added a couple more layers and am thinking of potentially adding a third. My goal is to block spam, even if that means I miss a few genuine submissions.
Sadly, my little website has lost most of the google rankings it used to have, so I am only seeing spammers try to contribute spam so far. I used to get so many people commenting, and submitting solutions. Part of me is curious how that has changed in a world of AI.
I'm redesigning a fan website for a musician as a demo website for my portfolio. I'll offer it up to the owner of the fan site if they want it as well since it's 100% their content to begin with. It'll be fun and time consuming because it's been online since at least 1999 with updates the entire time. I just need actual content to make full websites since I'm not getting any web design work lately. I think I will use Astro and some git-based CMS so that if the current site owner wants to keep it, they won't have to learn anything new if they don't want.
two things that work together
First, a pre-queue script for sabnzbd that renames events with their position in the weekend -- e.g.
So instead of it sorting in Kodi in the incorrect order (alphabetically) it renames the job from the get-go. Its a breeze to add in other sports, too.
To pair with this, I made a custom view for Kodi so files (items not in the library) are actually a poster. If the first few characters are F1, Moto\d+, UFC, then it puts the logo in the middle. (screencap)
I used a gradient+noise overlay to make the thumbnail look less thumbnail-y. Checkmarks for 'watched' and red dots for 'in progress.' This doesnt align with the design of the rest of Kodi, but its only for me. :)