10
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've started building an assembler.
It seemed like a good idea, for some reason; I'm not sure why. X86 is—and I want to be very clear on this—flat garbage. After ~700 lines of code, I can assemble one instruction. And there are so many special cases in there that I'm not sure how it's possible for the CPU to decode with any measure of efficiency.
More instructions to follow forthwith, of course, presumably with significantly less effort, but that's seriously a little mind-boggling when you compare it with the more usual fixed-width (or close enough to) instructions of other architectures. Especially considering the massive breadth of operand forms, and the fact that I probably haven't even implemented support for half of them yet.
Please keep these posts coming. I'm always fascinated to find all the trash under our collective infrastructure bed.
I managed to get my flocking algorithm working in 3D. It wasn't too hard to go from 2D to 3D. Not sure what I'll do with it, but I enjoyed working on it and just watching it.
It's kind of interesting how sensitive some of the parameters are. Setting the maximum distance at which one bird can affect another bird makes the difference between everything falling into a single flock or no flock forming at all. In between is interesting, as you can tune this parameter to control how the flocks form.
There's an old flash game that I want to remake someday. It was called Phage Wars. They used something a bit like that for the movement of the microbes.
You can't write that and not post a video!
OK, here is a short video showing how varying the sphere of influence that affects a bird affects the resulting flocking. Enjoy!
Super cool!
Hmm... Interesting idea. Let me think about a good way to get some video of it. I'll post here if I get it done.
To record quick videos / gifs, I use ShareX. Then you can upload to a site like gfycat.
I continue working on https://linklonk.com (the invitation code "tildes" is still active)
I was very happy with the reception of the Show Tildes post from ~10 days ago. Since then I added:
Next, I want to implement text search functionality for the /ratings page so you can easily look up links that you liked in the past based on the page's title/description/url. The data is stored in PostgreSQL, so I'm hoping a simple SQL query will work well enough. I remember reading http://rachbelaid.com/postgres-full-text-search-is-good-enough/ and I might get some ideas from there.
I really like the idea of this!
I've been working on libreddit. Not in a big way, but small CSS/HTML changes that are styling fixes.
I do coding at work and it's nice to have a small little project that I can contribute the odd bit of code to and have a positive impact not only for myself, but to others.
Recently added FrodoKEM to the supported key exchanges for my ssh alternative remote shell/tunnel/copy util, https://gogs.blitter.com/RLabs/xs. Written in Go.
I basically use this instead of ssh now for day-to-day access to my servers, though it still definitely has rough edges. Security audits welcomed :)
I finally took the time to implement a save into my motivation tracker: https://github.com/Apostolique/MotivationTracker. I guess with that simple change the app is finally usable :D.
I also started refactoring my game's map editor into it's own standalone project: https://github.com/Apostolique/Apos.Editor. It's nice to finally get rid of the old crust.
I'm streaming every day on Twitch and YouTube lately.
https://www.twitch.tv/apostolique
https://www.youtube.com/JeanDavidMoisan/live
Working on
onhold
's Windows support. Turns out that playing sounds in a cross-platform manner via Python is tricky. Check outonhold
if you think shell tools likepv
are cool.I'm also packaging
chromecast_mpris
for distribution beyond Arch.Curious, why is that? It looks like the sound backend library you rely on already supports windows.
play_sounds
relies on two backends,playsound
andboombox
.playsound
works on Windows, however it requires GStreamer and its PyGObject bindings on Linux, the latter of which can be a pain to build, whileboombox
can take advantage of several sound playback options on Linux.boombox
will only play WAV files on Windows, though, soplay_sounds
provides a cross-platform API overboombox
andplaysound
.It also provides an API for asynchronous playback, which neither of the two base libraries provide.
If you're targeting multiple desktop platforms and don't want to get mired down in the details of when and where to use
playsound
orboombox
, or if your project usesasync/await
, you can just reach forplay_sounds
and call it a day.