16
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 really miss the old forums and the interesting discussions I had in them, that's actually what lead me here. I'm trying to build a 2026 version of that with the latest web tech. A simple way to think about it is I guess tildes philosophy + Discord UX but Reddit-ish format? Kinda a crazy project. The goal is to have small communities focused on gaming and tech. Desktop only so I can focus on creating the best desktop UX.
Whenever I see this sentiment, I wonder how much of it is a deficiency in options versus a nostalgia for being younger. Would effort be better spent in just finding existing forums and starting to post in them, even if they are largely ghost towns? It's likely that any new technical solution you come up with will also be largely empty for a stretch, and then if it grows in popularity you'll spend more time consumed with managing such a place, both technically and socially.
I frequently think about starting a new conversation circle at a cafe near me, just a regular time and place for neighbors to chat. But I also know that people already have social groups (maybe less formally as "conversation groups" but rather just their normal social time for hobbies, church, etc). Is the time better spent just ingratiating myself to an existing group?
Consider whether the goal is to build something, or to have more socializing, and whether the effort spent is favoring one over the other.
It is more than that.
Old forum tech has not kept pace with modern issues. I'm active on many older forums, and they're a massive struggle to upkeep because of vulnerabilities and shitty scaling leading to very large hosting costs, while nice QoL features basically have to be in house developed on a fragile code base.
A lot of options are "discourse" forum style, which adopts heavily a lot of the patterns from modern social media that leads to ephemeral content in the first place.
There will never be the level of adoption that once was, clearly the world LIKES formats like twitter which are basically designed to limit the amount of useful information you see, but for those of us who care about long form discussion and better long term documentation of data, there's a world of improvements to be made.
What's been somewhat funny to me is watch tools like slack/jira/teams/devops adopt modern social media UI/UX patterns which are so hostile to quick and easy data lookup and discussion (wasted space everywhere and lots of clicking to get to anything). Things have slowly moved better with time but there's a very real dissonance with what people expect to see and what they need out of a professional tool.
I wrote a long post on some of the UX decisions I'm making on my platform here on a reply to another person if you are interested.
If you have time, I'd be very interested in what are some of the stuff "discourse" forum style does wrong or not optimal with respect to designing for long and high quality discussions.
Small note re adoption: obviously its gonna be extremely hard but I think a lot of people share this sentiment that they miss old forums so I have some hopes that in the long term if I find the right people I'll get exactly the forum users and not the twitter or tiktok users which I think works well.
I'd love to give a detailed answer, and may just spin up my own thread to discuss depending on how long my response is. I've been poking at things like this forever, and i'm not sure how long the answer will be.
I mean by all means take your time man. Whenever, I can wait for months if needed, just DM me a note when you do so I can follow and engage. Like my head is full of this stuff after work cuz its my core passion project atm.
I'll add 1 last thing is that for great discussion, you definitely need people who want to type out great discussions and that's just not the current average Discord crowd. That said, there are quite a few UX things that can be done so that reading multiple posts and filtering can be more efficient and designed for a fast read experience. Replies should try to take up less space so one can read well multiple replies at the same time that means less pointless boilerplate, lines, or formatting. Anyway I will stop now cuz I can also go on and on.
I really like this take. I think it's definitely a combination of both.
Re building: There's something really invigorating about building something to go up against billion dollar companies. I'm learning a lot as I go to. The project's tech philosophy is to be as cutting edge as possible. (read: basically what I can come up with). Live comments, Signal protocol e2ee chat etc etc. I also have a slightly obsessive personality when it comes to UX and find it disheartening that with the advent of vibecoding, UX in general in web apps is degrading, not getting better so this project kinda feels that void for me as well.
Re socializing, I guess my take here is that I get more enjoyment if I'm creating software that helps to create communities rather than heavily participating in one. Could just be the engineer in me. I definitely don't see this as a way to find online friends, there's definitely better ways to do that as you pointed out.
Lastly, you're 100% right that its gonna take a long time before it catches on. I think anyone making a social platform must accept that, or else you'll be in depression pretty quickly lol.
The single FOSS project I contribute to is for a hobby I don’t partake in at all, I just like contributing to a tool that is used for it. Sounds similar
I'm curious to hear more about what you're thinking in terms of UX. My impression is that Discourse is the de facto default for "modern" forums these days, and to the limited extent that I've used it, it feels okay. But it sounds like you have a more specific vision for UX that's different from theirs.
Happy to dive into it! Yea Discourse is really good, def heaps better than phpBB. Its main design is essentially threads -> replies. Threads are categorized. It has a client for both web and mobile. What I'm building is closer to a Reddit so communities -> threads -> replies.
For me I'm building a desktop (web) only client so I can get away (or be more bold) about intention design choices that benefits a wider screen:
Just my opinion here but I think certain tech also can drastically improve UX.
Small things that matter. There are like so many of these that most forums new or old will never do cuz they are a business product, not someone's UX playground. These little things add up quick for UX delight.
I don't want to advertise or share any links cuz I'm not sure if its against the rules so if you are really interested send me a DM and I can show you the project.
I'm doing some behind-the-scenes work on my personal links website. Each tag has its own admin page that I'm cleaning up. There is an autotagger that adds tags to new posts, based on simple rules like keyword matching. On the admin page, it shows overall performance of the autotagger for a tag and stats for each rule. You can also see the posts that matched, were false positives (shouldn't have been autotagged) and were missed by the autotagger.
I also started a new project. It's command-line tool (written in Go) for managing a gallery of charts. Each chart is generated by a separate TypeScript file. The Go command creates an HTML page with the chart and a way to look at or download the source code used to generate it. The goal is to make it easy to see how each chart was made, like literate programming or a computational notebook.
Working on my game engine LittleJS. It is a very small, very fast, and very clean engine. Over 4k stars on GitHub now and it has gone through many massive improvements. We added Box2d and Threejs support built in. Here is some of what I am most proud of...
I made a really nice interactive example browser where you can even edit the code in real time.
https://killedbyapixel.github.io/LittleJS/examples/
I am also improving AI functionality by making games, and have over 50 games in the arcade. I've put a lot of work into the UI of the arcade and making it work well on pc and mobile. I am continuing to iterate on all the games but they are becoming pretty solid demos of the engine's capabilities. These are also all fully open source as is the game engine itself. It also includes a small library of reusable templates and starter projects meant to be used by AI.
https://killedbyapixel.github.io/LittleJSArcade/
Now I am deciding what to do next that would maximize my efforts. I think maybe making a video would be good. Either a sizzle real of all the best LittleJS stuff, a video introduction to littlejs, or just a short trailer.
What do you think I should focus on?
I checked out the examples and honestly love it as a web dev. I love to play indie games but don't got the skills to make one, maybe I should try with your engine or 3JS or at least start learning (got a few paid 3JS courses setting unactivated in email lmao).
Its kinda tricky cuz web games are not popular but like tech is tech and if the tech can be used to build a great game, aint nothing wrong with a browser game. You're probably doing this already but I would dig a bit deeper into which communities of web devs would be into making games using your engine and see what needs they have. I wish I knew cuz most web devs I see on X are just vibe coding SaaS stuff most of which at least in my opinion are 2-week fun projects instead of a real substantial project that can be a real product.
thanks so much. i have been putting work into building the community and it's amazing to see other people using it to realize their dream ideas. the next big event will be our 3rd yearly game jam in a few months!
if you are interested in an easy way to start, there is an AI repo for LittleJS designed to work with vibe coding, and it is pretty amazing what it can do. much faster and more reliable then starting from scratch.
I've started to build a secure hosting platform. The goal is to provide an environment that helps devs build secure systems by locking down what's actually accessible and make foot guns hard. Currently it provides a postgres instance running in a vm without a shell and without network access, a way to host apps that handle https requests, and apps for background processing. The postgres instance is running on an encrypted filesystem decrypted with an ephemeral key that's only held in memory (derived from a master key + tenant secret held in a control plane). Daily backups are also encrypted so nothing is ever stored as clear text. Additionally, there's also a key rotation system inplace in case a key or a disk becomes compromised.
On top of the db sits an arbitrary number of the tenants' apps. These can talk to postgres over a vsock channel relayed by the host. The apps are all based on hermit os which boot in microseconds when a request comes in. The host doesn't decrypt the traffic, instead it peeks at the incomming encrypted tcp stream to determine the sni and use that to route the request to the correct app. The guest app hold the certificate and decrypts the request (not the host). In addition the apps, like the postgres instance, has no network access by default. It is possible to green light specific domains for an app if it needs some external access. But, even this is fairly locked down. All outbound connections are mediated by the host which blocks connection attempts to non green listed domains, but crucially the host only sees the domain the guest tries to connect to. Apart from that it just relays the bytes (likely encrypted) to the IP resolved by the domain name.
Why would anyone want this? Well, the limited capabilities severely reduces the attack surface. Even if someone managed to get arbitrary code execution in one of the client apps (unlikely unless you royally screw up) they are still running under a hypervisor and would need to perform some vm escape in order to be able to set up a permanent foothold. Since the apps are unikernels there is no shell to escape to, there is no disk drive to access and no network devices attached to the guests.
The host manages the tenants' VMs and suspends the DB instance when nothing is running against it (after a ~5min delay). When a request comes in it is handed off to a running app instance. If there isn't one the VM is booted. At most, on my local laptop, this takes a second or so if the tenant is completely cold with the DB never having been started. If the DB is running, but the app is not, it takes a few microseconds to boot. Understandably one of the aims is to keep resource utilization and startup times to a minimum.
I'm preparing to open source the setup and possibly run it as a service here in Sweden. Sovereign hosting solutions out of reach of American interests seem to be talked about more and more. I need to sort out a few final issues; PTR for postgres is needed essentially to handle graceful failover and tenant load balancing. I've sketched out a way to handle the PTR, but I'm still weighing the options for how to do proper tenant assignment (and failover) to physically disparate host nodes.
i made a little media streaming thingy to try and get away from discord screensharing for movie nights.
rly basic frontend, just the video and a sidebar with a queue, media list, and chat. ppl can upload media, queue it up, and the server sends out a ffmpeg stream to all connected viewers (even before the whole things uploaded bc ffmpeg is so smart)
i mostly made it because i wanted something i could just leave running 24/7 and have episodes of takeshis castle play on loop, or do old cartoon marathons. a friend made something over a decade ago which was just ffmpeg, flv, and doing it as an RTMP stream.
turns out that even though flash is dead, theres been flv.js to modernize it, and then mpeg-ts.js to modernize that. so it was fairly plug and play to get it all working. and the only file thats ever caused the server to hiccup is when i tried playing hangover 1, presumably bc its a 60fps bluray on a cheap and oversold vps. but aside from that (and subtitles) its been smooth sailing.
deffo not a project i can show off to yall and the code is quite sloppy, but it works and now im going mad with power again. thinking of trying to set up actual tv channels but in a dynamic way. so if someone wants to encore something or pick an entirely different episode to watch in that timeslot - they can since its just me and my friends. but otherwise it'll just go through the motions of daytime tv timeslots etc
I think I did a comment on this many months ago about my AirTag hacking escapades. I wanted to try to run an AirTag off a lithium ion battery so it could be embedded in various devices. I was testing this before the V2 AirTags came out, and all the AIs I asked said it was a terrible idea. The coin cell it uses starts at around 3v, and lithium cells go to 4.2 or 4.35v. After a teardown and connecting it to my bench power supply, I slowly raised the voltage, and it worked just fine at 4.35v. For a long term test, I attached it to a spare lithium ion battery at full charge. It's been running since February without issue.
My long term goal was to embed the AirTag in my steam deck. I didn't try, but I am sure that the AirTag can't take the 8.4v max of the dual cell steam deck battery. Luckily the third pin on the battery is a 3.7ish volt always on rail for the steam deck clock. So I soldered some thin wire to that pin and ground and hooked it to the AirTag. Adding the rf shield back, and some cable management. The AirTag is covered in conformal coating to prevent anything from shorting, and mounted above the pcb with some dollops of UV cure resin.
And now I have a steam deck with an integrated AirTag that will never run out of battery. AI estimated that the AirTag drain is right around or possibly even below the internal drain of the battery, so the actual effect on battery life should be marginal.
I implemented custom drum kits for my software groovebox Pocket Acid. For some context, all the drum sounds are sampled. They were previously embedded in the binary as raw sequences of 16-bit little endian samples, and the assignment of drum sounds to particular drum kits was hard-coded.
With this change I created a simple format for encoding groups of samples as single files. The format starts with a four byte header ("PKIT") and then each sample is encoded as a two-byte slot identifier (e.g. "bd" for bass drums or "oh" for open hihat) followed by a length, followed by the raw sample data.
I converted my existing kits to this format using a simple python script. Then I changed the way kits are handled internally. Instead of using a hard-coded enum for the built-in kits which is then resolved to a particular instance of a kit, I created a registry where you assign names to kits. Then I wrote a parser for the new format, embedded the new kit files instead of the samples and parse and add them to the registry at boot up.
The final piece to cover the original functionality was to update the save file format. My save file scheme uses a set of named and versioned chunks, so I can update the individual chunks without changing everything else and write relatively small migration code.
To implement the new functionality I was actually doing all this for, I look for kits matching a filename extension (".pkit") in the data dir, read and parse those and add them to the registry at startup.
Then there was the matter of letting users create new kits. The script I made works fine for me, but requires that I convert the recordings to the expected format and sample rate beforehad. For someone not interested in using sox or ffmpeg and hacking out a makefile for this, it would be tedious to create kits, and I don't expect my users to necessarily be computer power users. So I made a browser based conversion tool, making use of the built-in audio API to handle decoding and doing sample rate conversion and then dump the sounds to a buffer according to the format which you can save upon completion.