15 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. ducc
    (edited )
    Link
    I’ve been working on my hobby OS, duckOS. It runs in protected mode, has a virtual filesystem (with ext2 as the root filesystem), preemptive multitasking, paging, usermode exeutables, CoW for...

    I’ve been working on my hobby OS, duckOS. It runs in protected mode, has a virtual filesystem (with ext2 as the root filesystem), preemptive multitasking, paging, usermode exeutables, CoW for forked processes, and a newlib-based C library for programs.

    Just this week, I was able to get DOOM ported to it, which I’m pretty proud of. It’s a little bit hacky (it opens the framebuffer at /dev/fb0 directly and reads keyboard input from the keyboard device at /dev/input/keyboard since I haven’t added canonical support / ANSI escapes to the tty yet), but it works.

    Right now, I’m working on rewriting the page allocation algorithm to use a linked list of memory regions instead of a bitmap and ext2 file creation/write support. I also want to implement a mechanism for IPC so that I can write something like a window manager, but we’ll see how that goes :)

    12 votes
  2. jcdl
    Link
    I've been working on a macOS SwiftUI-based browser client (and maybe editor) for the Gemini protocol. I've been struggling a bit with SwiftUI's limitations, especially since I don't just want to...

    I've been working on a macOS SwiftUI-based browser client (and maybe editor) for the Gemini protocol. I've been struggling a bit with SwiftUI's limitations, especially since I don't just want to target Big Sur with its fancy new features, so I have to dive into Cocoa to do a lot of the more interesting things.

    6 votes
  3. [4]
    jzimbel
    (edited )
    Link
    Late last week my team at work went live with these new info screens posted around Boston’s public transit system. For reference, this is what was previously shown on the screens. They also have...

    Late last week my team at work went live with these new info screens posted around Boston’s public transit system. For reference, this is what was previously shown on the screens.

    They also have audio equivalence.

    We’re still ironing out some kinks and listening to initial feedback, but I think it’s a pretty big improvement over what was there before.

    Tech:

    • Elixir + Phoenix backend that basically just transforms data from the T's V3 API into what we need to display on the screens.
    • Mostly straightforward react (TypeScript) frontend. We had to do some wacky stuff to dynamically compute how many rows to show in the fixed 1080x1980 viewport of the screens—we render an invisible copy of the departures list to the side of the real one and remove rows until there isn't any overflow, then pass the correct row counts over to the real departures list. This allows it to re-render just once each time new data loads and use react-transition-group to add animations between states. Okay, maybe it isn't so straightforward...
    • Audio equivalence is implemented as a sort of "alternate frontend" where we take the response that would have gone to the react frontend, and instead use it to server-side render an SSML document that then gets piped through Amazon Polly to get synthesized speech.
    • The configuration defining which routes to show on each screen and how they're laid out is all in a big config.exs file right now, which isn't great—we have to make a pull request and deploy for every config change. We're now actively working on an internal tool to decouple the config from the application logic. The main goal is to allow for quick changes, but eventually we also want non-engineers to be able to configure screens via a friendly UI; a sort of real-time-data CMS.
    6 votes
    1. [3]
      pvik
      Link Parent
      That's a great improvement! I love projects like this, which involve processing live data and also presenting it in a useful manner. Could you talk a bit about the stack you are using for this?

      That's a great improvement!

      I love projects like this, which involve processing live data and also presenting it in a useful manner.

      Could you talk a bit about the stack you are using for this?

      2 votes
      1. [2]
        jzimbel
        Link Parent
        Just updated my comment with tech info!

        Just updated my comment with tech info!

        2 votes
        1. pvik
          Link Parent
          Thanks! Good to see a BEAM application :) In my mock game of "how would I have designed this", I had Erlang for building the backend as my first pick. Also, kudos on going live!

          Thanks!

          Good to see a BEAM application :)
          In my mock game of "how would I have designed this", I had Erlang for building the backend as my first pick.

          Also, kudos on going live!

          2 votes
  4. [4]
    moocow1452
    (edited )
    Link
    After years of searching for a way to get FTL to play on my phone, I noticed an update to the Steam Link mobile app that comes with its own touch configuration for FTL. Little disappointed, to be...

    After years of searching for a way to get FTL to play on my phone, I noticed an update to the Steam Link mobile app that comes with its own touch configuration for FTL. Little disappointed, to be honest. So I'm between projects ATM.

    4 votes
    1. [3]
      Moonchild
      Link Parent
      What phone do you have? On ios, it's not too difficult; don't know about android.

      What phone do you have? On ios, it's not too difficult; don't know about android.

      1 vote
      1. [2]
        moocow1452
        Link Parent
        Pixel 3a. I've looked into hacking a soft mouse into a modded version of Firefox for Android, to what would be required to run Box86 within an Android Chroot.

        Pixel 3a. I've looked into hacking a soft mouse into a modded version of Firefox for Android, to what would be required to run Box86 within an Android Chroot.

        1 vote
        1. Moonchild
          Link Parent
          Ah, yeah, probably mostly out of luck, then. The ios version is supposed to be locked to ipad, but not hard to get it onto iphone. But it's a huge cpu/battery/heat hog; no telling how much worse...

          Ah, yeah, probably mostly out of luck, then. The ios version is supposed to be locked to ipad, but not hard to get it onto iphone. But it's a huge cpu/battery/heat hog; no telling how much worse it would get for a non-native version.

          3 votes
  5. admicos
    (edited )
    Link
    I made a pastebin/url shortener combo in just a single file (excluding dependencies & db setup): https://ebc.li/1k (not hyperlinked because i wanted to show off my sick new domain) And just a...

    I made a pastebin/url shortener combo in just a single file (excluding dependencies & db setup): https://ebc.li/1k (not hyperlinked because i wanted to show off my sick new domain)

    And just a couple hours ago, I extracted my fediverse comments thing and made it into a proper-ish widget. Here is it's temporary home

    I also had an idea about a browser extension that would redirect YouTube content to any PeerTube (re-)uploads, but I probably won't be making it as having to curate a database of video redirects doesn't sound that fun.

    3 votes
  6. [2]
    Grendel
    Link
    While it isn't programming (and probably not what most people are thinking of in this thread), I've been working on building a darkroom. I managed to find an enlarger at a yard sale and they owner...

    While it isn't programming (and probably not what most people are thinking of in this thread), I've been working on building a darkroom. I managed to find an enlarger at a yard sale and they owner gave it to me for free, which is great since this one would have cost about $800 USD on ebay! I've been working on getting the rest of the equipment needed and trying to improvise and get it as cheaply as possible.

    I plan on building this darkroom in my garage. Someday I'd like to build walls around it, but for now it's probably going to have to be blackout curtains hung up in the corner. I've been shooting and developing film for several years now and I'm really excited to finally start making prints!

    3 votes
    1. daturkel
      Link Parent
      This definitely counts as a technical project as far as I'm concerned! My high school had a darkroom which I suspect is something of a rarity now (this was in the late '00s) and it was a fantastic...

      This definitely counts as a technical project as far as I'm concerned! My high school had a darkroom which I suspect is something of a rarity now (this was in the late '00s) and it was a fantastic resource—I took photography every semester. These days I prefer digital, but I found there to be something incredibly cathartic about the darkroom experience.

      1 vote
  7. [3]
    zoid
    Link
    I'm working on mastering Python, I've built small applications for work. I'm about to start working on a Django/Flask based website here in the next few days. Hoping to cement some more knowledge.

    I'm working on mastering Python, I've built small applications for work. I'm about to start working on a Django/Flask based website here in the next few days. Hoping to cement some more knowledge.

    3 votes
    1. [2]
      bonbon
      Link Parent
      Good luck! I've heard Flask is pretty good to use for making sites. You should have a good time using it :^)

      Good luck! I've heard Flask is pretty good to use for making sites. You should have a good time using it :^)

      2 votes
      1. zoid
        Link Parent
        Thanks! I'm hoping!

        Thanks! I'm hoping!

        1 vote
  8. Apos
    Link
    I made a neat static site generator for my open source project documentation. It works pretty well. Right now I manage all the files manually (in code) which is quickly becoming annoying. Some...

    I made a neat static site generator for my open source project documentation. It works pretty well. Right now I manage all the files manually (in code) which is quickly becoming annoying. Some files depend on others getting generated first so I need to output them to a temp folder.

    I'm learning Gulp right now so that I can refactor my code into something more maintainable. It will allow me to pipe my file transformations in memory instead of using a temporary folder.

    My current tech stack is:

    It's not the fastest thing in the world, but I have full control over the final output.

    2 votes
  9. kari
    Link
    I've been working on a script that I started a while ago to help me manage my dot file repo. There are definitely simpler existing ways to manage them but I started the script before I knew about...

    I've been working on a script that I started a while ago to help me manage my dot file repo. There are definitely simpler existing ways to manage them but I started the script before I knew about them and kept working since I figured it'd be a good way to learn some Python (plus it's fun!). This week I took the script out of my dot-file repo and put it into its own repo so that other people can use it to, if they want, and sent it to a few of my friends. It's at https://gitlab.com/bwbuhse/dotboy if anyone wants to take a look.

    It's been really fun getting used to Python and working on a project that I actually like to use for myself.

    2 votes