9 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?

14 comments

  1. vord
    Link
    Working on setting up a VFIO headless gaming rig. Got everything working, except I'm hitting the infamous NVIDIA "Error 43" despite all attempts to fix. Gonna try re-seating the card to see if...

    Working on setting up a VFIO headless gaming rig. Got everything working, except I'm hitting the infamous NVIDIA "Error 43" despite all attempts to fix. Gonna try re-seating the card to see if that works.

    Vendors dictating that their hardware isn't allowed in a VM is bullshit.

    8 votes
  2. DataWraith
    Link
    I've been working on a re-imagination of the game Vindinium. Vindinium was a programming game; you wrote a program (in any programming language) that talked to a JSON-API in order to move a Hero...

    I've been working on a re-imagination of the game Vindinium.

    Vindinium was a programming game; you wrote a program (in any programming language) that talked to a JSON-API in order to move a Hero on a small board. The Hero (@1) needs to conquer Gold Mines ($-) to earn gold and can replenish their health at Taverns ([]). Moving next to another hero deals 20 damage to them.

    The rules are very simple, but the ensuing games were always interesting, since you were matched up with unpredictable opponents on procedurally generated maps. Having three opponents makes it that much harder to predict what is going to happen -- you can't use vanilla Alpha-Beta search, for example, because that doesn't work with more than one opponent.

    This is a pretty ambitious project, and, honestly, I'd be surprised if I actually manage to finish it before I get bored, but for now I've completed a random map generator (see example maps below) as well as the game logic and a simple opponent for training purposes. The next step is to actually interface with bots via STDIN; once that works I can get started on writing a server for the game.

    Map #1
    ################################################################
    ##############    ##                        ##    ##############
    ############$-$-  ##    ####  ####  ####    ##  $-$-############
    ########$-                ##        ##                $-########
    ##  $-####    ##        $-##        ##$-        ##    ####$-  ##
    ##  ##      ########        ##    ##        ########      ##  ##
    ##    $-    ##  ##    ####$-##    ##$-####    ##  ##    $-    ##
    ##        $-        ##    ####    ####    ##        $-        ##
    ##  ####$-  ##$-$-####    ##        ##    ####$-$-##  $-####  ##
    ##          ########          ####          ########          ##
    ######  ####    ##  ##  ##  ########  ##  ##  ##    ####  ######
    ####                ##@1##    ####    ##@2##                ####
    ######  ##$-##      ####                ####      ##$-##  ######
    ##      ##        ####      ##    ##      ####        ##      ##
    ##    ##    ##    ##  ####    ####    ####  ##    ##    ##    ##
    ##      ##    []  ##                        ##  []    ##      ##
    ##      ##    []  ##                        ##  []    ##      ##
    ##    ##    ##    ##  ####    ####    ####  ##    ##    ##    ##
    ##      ##        ####      ##    ##      ####        ##      ##
    ######  ##$-##      ####                ####      ##$-##  ######
    ####                ##@3##    ####    ##@4##                ####
    ######  ####    ##  ##  ##  ########  ##  ##  ##    ####  ######
    ##          ########          ####          ########          ##
    ##  ####$-  ##$-$-####    ##        ##    ####$-$-##  $-####  ##
    ##        $-        ##    ####    ####    ##        $-        ##
    ##    $-    ##  ##    ####$-##    ##$-####    ##  ##    $-    ##
    ##  ##      ########        ##    ##        ########      ##  ##
    ##  $-####    ##        $-##        ##$-        ##    ####$-  ##
    ########$-                ##        ##                $-########
    ############$-$-  ##    ####  ####  ####    ##  $-$-############
    ##############    ##                        ##    ##############
    ################################################################
    
    Map #2
    ####################################################################
    ########          $-  ##    ############    ##  $-          ########
    ########$-      ##          ############          ##      $-########
    ##        ##  ##    ##      $-########$-      ##    ##  ##        ##
    ####  ##        ##$-                            $-##        ##  ####
    ##        $-            ####    ####    ####            $-        ##
    ##    $-##  @1    ##  ########################  ##    @2  ##$-    ##
    ##      ##            ########################            ##      ##
    ####    $-##          ########################          ##$-    ####
    ##          ##          ####################          ##          ##
    ##      []$-  ##          ################          ##  $-[]      ##
    ##              ##$-        $-########$-        $-##              ##
    ####$-      $-##  ##  ##  $-  $-####$-  $-  ##  ##  ##$-      $-####
    ##$-              ####                        ####              $-##
    ######      $-      ##  $-  $-        $-  $-  ##      $-      ######
    ##########        ######                    ######        ##########
    ######$-        $-########                ########$-        $-######
    ######$-        $-########                ########$-        $-######
    ##########        ######                    ######        ##########
    ######      $-      ##  $-  $-        $-  $-  ##      $-      ######
    ##$-              ####                        ####              $-##
    ####$-      $-##  ##  ##  $-  $-####$-  $-  ##  ##  ##$-      $-####
    ##              ##$-        $-########$-        $-##              ##
    ##      []$-  ##          ################          ##  $-[]      ##
    ##          ##          ####################          ##          ##
    ####    $-##          ########################          ##$-    ####
    ##      ##            ########################            ##      ##
    ##    $-##  @3    ##  ########################  ##    @4  ##$-    ##
    ##        $-            ####    ####    ####            $-        ##
    ####  ##        ##$-                            $-##        ##  ####
    ##        ##  ##    ##      $-########$-      ##    ##  ##        ##
    ########$-      ##          ############          ##      $-########
    ########          $-  ##    ############    ##  $-          ########
    ####################################################################
    
    Map #3
    ########################################
    ##  $-##    []############[]    ##$-  ##
    ##  @1      ################      @2  ##
    ##  $-    ##    ########    ##    $-  ##
    ##    ##      ############      ##    ##
    ##            $-########$-            ##
    ##$-##  ##$-  ############  $-##  ##$-##
    ######  ##                    ##  ######
    ##########  ##$-##    ##$-##  ##########
    ##########$-######    ######$-##########
    ##########$-######    ######$-##########
    ##########  ##$-##    ##$-##  ##########
    ######  ##                    ##  ######
    ##$-##  ##$-  ############  $-##  ##$-##
    ##            $-########$-            ##
    ##    ##      ############      ##    ##
    ##  $-    ##    ########    ##    $-  ##
    ##  @3      ################      @4  ##
    ##  $-##    []############[]    ##$-  ##
    ########################################
    
    7 votes
  3. [5]
    Spanish_Inquisition
    Link
    None. But I have been debating switching from Windows to Linux again for the unpteenth time. Does that count?

    None. But I have been debating switching from Windows to Linux again for the unpteenth time. Does that count?

    6 votes
    1. [3]
      RNG
      Link Parent
      Pop!_OS is really nice, I've used it for a couple of years and haven't looked back. Honestly, I find it easier to do what I want compared to Windows. In the past, I used Fedora, openSUSE, and...

      Pop!_OS is really nice, I've used it for a couple of years and haven't looked back. Honestly, I find it easier to do what I want compared to Windows. In the past, I used Fedora, openSUSE, and Ubuntu pretty extensively (while having tried and not really used dozens more,) and Pop!_OS is unique in that everything just works.

      Drivers are automatically found and installed. No need to bother with adding third party repos or installing codecs. The Pop Shop is your one stop solution for all software you are going to want on your device, proprietary or not. Compare that with hunting for drivers on Windows and getting your software primarily from searching on your web browser. Did I mention it has a rock solid toggle-able tiling manager out of the box?

      If you are a software engineer, having the terminal makes a night and day difference. It's Linux, so you probably already have usable debuggers, editors, and interpreters for your project out of the box. Need more? Go to the Pop!_Shop and grab IntelliJ, Pycharm, or Android Studio (or whatever else you need, maybe Steam or qBitTorrent?) NOTE: You can always add your favorite repos to Pop Shop as well

      6 votes
      1. [2]
        tindall
        Link Parent
        Woah, news to me! I've been running Ubuntu on my System76 machines but this sounds enticing.

        Did I mention it has a rock solid toggle-able tiling manager out of the box?

        Woah, news to me! I've been running Ubuntu on my System76 machines but this sounds enticing.

        5 votes
    2. vord
      Link Parent
      Yes, yes it does. :) I've developed a taste for rolling distros, but to each their own. Ubuntu is always a good choice if you need proprietary stuff like Steam or Citrix.

      Yes, yes it does. :)

      I've developed a taste for rolling distros, but to each their own. Ubuntu is always a good choice if you need proprietary stuff like Steam or Citrix.

      4 votes
  4. crdpa
    (edited )
    Link
    To practice programming i created a little cli app called 'misfortune'. It's just a poor clone of cowsay. Here it is: https://github.com/crdpa/misfortune Oh, and i redesigned my website:...

    To practice programming i created a little cli app called 'misfortune'. It's just a poor clone of cowsay.

    Here it is: https://github.com/crdpa/misfortune

    Oh, and i redesigned my website: https://crdpa.net/
    Mostly changed the css and the image.

    6 votes
  5. DMBuce
    Link
    Last night I spent a bit of time scripting up a way to integrate xmacro with i3 so that I can easily record and replay macros without having to fumble around re-learning the flags for xmacro or...

    Last night I spent a bit of time scripting up a way to integrate xmacro with i3 so that I can easily record and replay macros without having to fumble around re-learning the flags for xmacro or xdotool. I have it set up so that holding the windows key + x brings up this menu in the i3 taskbar thingy: https://i.imgur.com/RZMry5H.png

    This was just a fun little distraction that I honestly didn't expect to use much since I rarely find myself reaching for macro tools on linux, but now that it's set up I'm starting to recognize slow points in my workflow that macros can help with. I just added a Template submenu to handle a bit of bureaucracy that I can't fully automate away due to compliance regulations. Now I'm off to set up a macro that will compose a stock "Scheduled System Maintenance" message by tabbing through and filling out my mail client's "New Email" window.

    Might seem a bit like reinventing the wheel considering that my mail client and ticketing system have template features built in, but whenever I set those up I end up forgetting how to use them by the time I actually need the template. Doing things this way doesn't have that problem since the interface is the same one I use for my other i3 menus (I have one set up for games, one for music, and another for rarely-used but occasionally useful i3 commands).

    4 votes
  6. [2]
    lonk
    Link
    Working on the link/information sharing website (mentioned here). Hoping to finish it up and to announce it on Tildes during the holiday break. For each link I show thumbnails of images scraped...

    Working on the link/information sharing website (mentioned here). Hoping to finish it up and to announce it on Tildes during the holiday break.

    For each link I show thumbnails of images scraped from the page meta-tags. Up until now the thumbnails were generated using a free service called https://images.weserv.nl. From the privacy standpoint it didn't feel right to proxy images through a third-party (even though their privacy policy seems reasonable). To avoid that I added thumbnail generation to my server which is written in Go. Most of the work is done by the built in image library (decode/encode jpeg/png) and https://github.com/nfnt/resize. I just needed to put it together and add some in-memory and on-disk caching.

    Compared to images.weserv.nl the new implementation produces smaller files by about 10-30% with the same perceived image quality, which I didn't expect.

    3 votes
    1. [2]
      Comment deleted by author
      Link Parent
      1. lonk
        Link Parent
        Yes, it is very much like PageRank. More concretely - Personalized PageRank where each random walk starts from you. In the graph the users and the items are the nodes and the votes are the edges....

        Yes, it is very much like PageRank. More concretely - Personalized PageRank where each random walk starts from you. In the graph the users and the items are the nodes and the votes are the edges. My random walk is always of length 3: you -> item you liked -> someone else who liked that item -> some other item they liked. This makes it easy to compute and easy to explain to the users why they get something recommended.

        Another modification is that there are negative edges - your downvotes. A walk that goes through a downvote lowers the score of the destination item.

        I did end up announcing it on Tildes: https://tildes.net/~tech/u7f/linklonk_a_link_aggregator_with_a_trust_system

        Please give it a try!

        1 vote
  7. Chrozera
    Link
    I've started on a scrum poker tool, but if I wont finish it in the coming two weeks, I know ill get swamped with study work again so there's a deadline to finish it. Or it will probably will never...

    I've started on a scrum poker tool, but if I wont finish it in the coming two weeks, I know ill get swamped with study work again so there's a deadline to finish it. Or it will probably will never be finished.

    The reason I started it was as an alternative to actual scrum poker cards, as we cant really do it with physical cards due to corona right now.
    And just yelling out numbers, creates a bias in the group towards the first number that has been mentioned.

    3 votes
  8. Apos
    (edited )
    Link
    As a showcase for my static site generator, I started https://learn-monogame.github.io/. It's a site where I write tutorials for learning MonoGame. Right now I'm trying to figure out the right...

    As a showcase for my static site generator, I started https://learn-monogame.github.io/. It's a site where I write tutorials for learning MonoGame.

    Right now I'm trying to figure out the right site hierarchy for the articles.

    3 votes
  9. moocow1452
    (edited )
    Link
    Managed to get my hands on a Raspberry Pi 400, and I'm trying to get Steam running on it through Box86, but it's choking on the downloading of games. Edit: Fresh compile of Box86 seems to have...

    Managed to get my hands on a Raspberry Pi 400, and I'm trying to get Steam running on it through Box86, but it's choking on the downloading of games.

    Edit: Fresh compile of Box86 seems to have done the trick. Now I need to find a way to get my brother off of FTL so I can tweak settings.

    3 votes