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?

18 comments

  1. [2]
    Moonchild
    Link
    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...

    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.

    6 votes
    1. helloworld
      Link Parent
      Please keep these posts coming. I'm always fascinated to find all the trash under our collective infrastructure bed.

      Please keep these posts coming. I'm always fascinated to find all the trash under our collective infrastructure bed.

      3 votes
  2. [7]
    joplin
    Link
    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...

    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.

    5 votes
    1. Apos
      Link Parent
      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.

      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.

      4 votes
    2. [5]
      Apos
      Link Parent
      You can't write that and not post a video!

      You can't write that and not post a video!

      1 vote
      1. [2]
        joplin
        Link Parent
        OK, here is a short video showing how varying the sphere of influence that affects a bird affects the resulting flocking. Enjoy!

        OK, here is a short video showing how varying the sphere of influence that affects a bird affects the resulting flocking. Enjoy!

        7 votes
      2. [2]
        joplin
        Link Parent
        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.

        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.

        2 votes
        1. Apos
          Link Parent
          To record quick videos / gifs, I use ShareX. Then you can upload to a site like gfycat.

          To record quick videos / gifs, I use ShareX. Then you can upload to a site like gfycat.

          2 votes
  3. [2]
    lonk
    Link
    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: An...

    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:

    • An invitation system so existing users can invite new users (in /profile). It is modelled very much after the invitation system of Tildes - each user has a number of invitation links they can generate (10) and I will be able to top it up periodically.
    • The profile page now shows you some stats like: "Based on your 5 ratings: you are subscribed to 3 users and 2 feeds; 2 users are subscribed to you" The idea is to help users understand how the system works by being more transparent.

    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.

    3 votes
    1. river
      Link Parent
      I really like the idea of this!

      I really like the idea of this!

      2 votes
  4. feigneddork
    Link
    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...

    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.

    2 votes
  5. Arghblarg
    Link
    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...

    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 :)

    1 vote
  6. Apos
    Link
    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...

    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.

    1 vote
  7. [3]
    thismachine
    Link
    Working on onhold's Windows support. Turns out that playing sounds in a cross-platform manner via Python is tricky. Check out onhold if you think shell tools like pv are cool. I'm also packaging...

    Working on onhold's Windows support. Turns out that playing sounds in a cross-platform manner via Python is tricky. Check out onhold if you think shell tools like pv are cool.

    I'm also packaging chromecast_mpris for distribution beyond Arch.

    1 vote
    1. [2]
      Moonchild
      Link Parent
      Curious, why is that? It looks like the sound backend library you rely on already supports windows.

      Turns out that playing sounds in a cross-platform manner via Python is tricky

      Curious, why is that? It looks like the sound backend library you rely on already supports windows.

      1 vote
      1. thismachine
        Link Parent
        play_sounds relies on two backends, playsound and boombox. playsound works on Windows, however it requires GStreamer and its PyGObject bindings on Linux, the latter of which can be a pain to...

        play_sounds relies on two backends, playsound and boombox.

        playsound works on Windows, however it requires GStreamer and its PyGObject bindings on Linux, the latter of which can be a pain to build, while boombox can take advantage of several sound playback options on Linux.

        boombox will only play WAV files on Windows, though, so play_sounds provides a cross-platform API over boombox and playsound.

        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 or boombox, or if your project uses async/await, you can just reach for play_sounds and call it a day.

        1 vote