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

20 comments

  1. Macil
    Link
    I made a Factorio mod and a Stream Deck plugin so I can both view and control in-game circuit signal devices through the Stream Deck's buttons. It took me a while to get the communication to...

    I made a Factorio mod and a Stream Deck plugin so I can both view and control in-game circuit signal devices through the Stream Deck's buttons. It took me a while to get the communication to Factorio down right, but at this point most of my coding effort has gone into the feature where it loads item icons for displaying circuit signals straight out of the game's files and loaded mods. I do this so it can display custom items added by mods and so I don't have to distribute icons ripped from the (commercial) game with my project. The script has to crop icons out of spritesheets and then pad them a bit to display best on the Stream Deck buttons. The icons are served by a script to the Stream Deck with an etag header based on the currently loaded game mods (and their version numbers), so the icons will be cached and reused without needing to be regenerated again until the active mods list changes or any of the game/mod versions update.

    This project has taken me a good amount of time just to think through the architecture to use. Factorio mods are sandboxed within the game and Stream Deck plugins made with its standard SDK are sandboxed in a web environment, so I've currently made the code that communicates to the Factorio process (through RCON commands) and generates the item icons as a separate command-line Deno script. It acts as glue between Factorio and the Stream Deck plugin.

    I've been debating between either remaking the Stream Deck plugin to use a native executable which could handle the RCON itself, or remaking the command-line script into a more user-friendly desktop program (still with a CLI interface also available) that mostly sits in the systray which would be much better positioned to support multiplayer (so the host could share access to the game circuits with players without giving away admin RCON access and forwarding an RCON port) and my future non-Stream-Deck-related Factorio plans (allowing in-game devices to be scripted out of game by players, almost like a Zachtronics-style Factorio fusion that allows out-of-game resources). Most of what I want to work on is down the path that the separate desktop program allows, so I'm aiming for that right now. I could always later add independent RCON support to the Stream Deck plugin, but it would be some redundant effort and I'm not going to prioritize that now.

    I want the desktop program to be cross-platform and the web with React is a nice GUI environment to work in that I'm experienced with, so to make a desktop program I'm considering using Electron or Tauri, a newer smaller-size Rust-based alternative that uses the OS's built-in embedded browser on Windows and Mac instead of embedding Chromium.

    9 votes
  2. [3]
    Goblin
    Link
    I recently picked up a Nvidia Shield to use as a Plex server who has been fin to setup and wowed family and friends with the user experience. I've been enjoying it so far but there have been some...

    I recently picked up a Nvidia Shield to use as a Plex server who has been fin to setup and wowed family and friends with the user experience.

    I've been enjoying it so far but there have been some hiccups with how well it can reliably read off of the external hard drive I have connected to it.

    6 votes
    1. [2]
      MaoZedongers
      Link Parent
      I recently set one up as well, I dedicated 500GB of a 1TB drive to it and made the folder public to the network so other people/devices could add to it. The only annoying things is that the...

      I recently set one up as well, I dedicated 500GB of a 1TB drive to it and made the folder public to the network so other people/devices could add to it.

      The only annoying things is that the metadata stuff is kind of a pain in the ass to get working, and I pretty much always have to manually set it to some degree.

      Even worse is when I try to archive youtube videos with a plugin that is supposed to pull metadata from youtube but doesn't seem to actually work for some reason, and also doesn't give me an "Identify" function which is incredibly frustrating.

      1. Goblin
        Link Parent
        I had setup a network drive on the Shield itself but found it was way too slow transferring over the network to the Shield then writing to an external hard drive. One day, when I have the cahs...

        I had setup a network drive on the Shield itself but found it was way too slow transferring over the network to the Shield then writing to an external hard drive. One day, when I have the cahs laying around, I want to set it up on a NAS but they're quite expensive unfortunately.

        For metadata, I actually have had minimal issues aside from one anime that isn't particularly mainstream, but changing the folder name quickly corrected it. However, I'm not downloading YouTube videos so it's probably a lot more reliable.

        Thinking about it though now, I saw another user in a different thread mentioning setting up his own IPTV channel. Downloading some dumb stuff that makes me laugh off YouTube and running a channel playing it randomly might be a fun idea!

        1 vote
  3. skybrian
    Link
    Here's a Python notebook showing how to recreate the Amiga Boing Ball demo as an animated gif: https://github.com/skybrian/boing_ball_animation

    Here's a Python notebook showing how to recreate the Amiga Boing Ball demo as an animated gif:

    https://github.com/skybrian/boing_ball_animation

    6 votes
  4. [3]
    elgis
    Link
    Two of my recent projects are palasimi and markovian. palasimi is a collection of graphs of related words/concepts. Related here means that two different concepts are expressed by the same word in...

    Two of my recent projects are palasimi and markovian.

    palasimi is a collection of graphs of related words/concepts. Related here means that two different concepts are expressed by the same word in some language.

    For example, in this page, count (the act of counting) and check (bill, particularly at a restaurant) are related, because they share a word in at least four languages.

    • Catalan compte
    • Italian conto
    • Russian счёт
    • Spanish cuenta

    The other project is markovian. It's a random word generator that outputs fake words in various languages. Here's an example of fake Italian. (The letters are in IPA.)

    delɛtati elizmo bɛllas diddzattsi komma relettso inabile traneskoleopatʃi abilmente ɡrafia ristike abjettati awtoddzetto aʃʃesa pallumina ɡrɛki buttinalfa ase milati sfra imboplanare indʒɛla objettato dolo asideodipesklemanditʃirkuratorinkaʎʎe avallo doratika rɛputre riva kukkiste

    Both are experiments in using JSON as a database. Since both websites don't need to modify any data, it's possible to prepare all queries in advance and to serve the results as JSON files.

    4 votes
    1. [2]
      bo0tzz
      Link Parent
      markovian is a great idea, and it works pretty well too! Have you thought about adding a TTS component to generate audio? I find reading the IPA to be pretty tricky ;) I put a few snippets into...

      markovian is a great idea, and it works pretty well too! Have you thought about adding a TTS component to generate audio? I find reading the IPA to be pretty tricky ;) I put a few snippets into http://ipa-reader.xyz/ and it came out pretty convincing :D

      2 votes
      1. elgis
        Link Parent
        To be fair, I think it's more because of ipa-reader. The voices they use have thick accents, which adds to the effect. Like, the Japanese voice can make anything sound Japanese.

        I put a few snippets into http://ipa-reader.xyz/ and it came out pretty convincing :D

        To be fair, I think it's more because of ipa-reader. The voices they use have thick accents, which adds to the effect. Like, the Japanese voice can make anything sound Japanese.

        1 vote
  5. [3]
    feanne
    Link
    I'm working on a tiny cozy kitten pet sim game. I was able to implement a way to auto-arrange decorative items in the game. It's super basic, just arranging items in a grid, but I'm still pretty...

    I'm working on a tiny cozy kitten pet sim game. I was able to implement a way to auto-arrange decorative items in the game. It's super basic, just arranging items in a grid, but I'm still pretty pleased with myself. I'm not so good at programming math but yay I was able to cobble together the code for this!

    4 votes
    1. [2]
      zoroa
      Link Parent
      I checked out some of your games on Itch a couple days ago, and really liked the art! Also had a very hearty chuckle at the title "Reincarnated As An Adorable Walking Rock In A Peaceful Gardening...

      I checked out some of your games on Itch a couple days ago, and really liked the art! Also had a very hearty chuckle at the title "Reincarnated As An Adorable Walking Rock In A Peaceful Gardening Sim Game" and figured you must also be an anime fan.

      I'm excited to see your future work, and I have some friends who are into cozy games that would just eat this up.

      1 vote
      1. feanne
        Link Parent
        Yes I do love anime! Thanks so much for your kind and encouraging words about my work, I really appreciate it 💕 I'll be in a gamedev incubation program this Aug - Dec and looking forward to...

        Yes I do love anime!

        Thanks so much for your kind and encouraging words about my work, I really appreciate it 💕 I'll be in a gamedev incubation program this Aug - Dec and looking forward to leveling up my skills!

        2 votes
  6. karsaroth
    Link
    Still exploring some options with smatter. I keep running into limitations with ffmpeg, which is used everywhere. But it looks like I might be able to make restreaming possible with webrtc. It'll...

    Still exploring some options with smatter. I keep running into limitations with ffmpeg, which is used everywhere. But it looks like I might be able to make restreaming possible with webrtc. It'll help with making it usable in docker too, I think.

    2 votes
  7. Habituallytired
    Link
    I am going to play around with a neocities site and figure out if I've really understood what I've learned in my HTML and CSS cert classes.

    I am going to play around with a neocities site and figure out if I've really understood what I've learned in my HTML and CSS cert classes.

    2 votes
  8. pvik
    (edited )
    Link
    I've been working on simple-file-server. Github and Binaries I built this to easily transfer files from a desktop/laptop to any other device which has a browser like phone/steam deck etc, without...

    I've been working on simple-file-server.

    Github and Binaries

    I built this to easily transfer files from a desktop/laptop to any other device which has a browser like phone/steam deck etc, without having to plug in/out USB drives and mess with OTG adapters and for folks who don't have a NAS on their local network.

    This was inspired by the simple-http-server project written in Rust, but this does not have a GUI that comes along with it and folks I have suggested this to who primarily use windows had a tough time using this from the shell.

    I am going to add features for uploading files to the server, password protection and TLS support in the next release of simple-file-server, but if you can think of any other features I can implement that would be great!

    I also don't have access to a windows or mac machine and have not tested the windows and macos binaries (they were generated from the github CI actions, which you can review in github). I would appreciate it if folks here could test it on those platforms!

    2 votes
  9. Spade
    Link
    I've been working on a crazy-eights type game called ono! for about a month now. I don't consider it to be technically impressive, but it has been an excellent way for me to find my way around...

    I've been working on a crazy-eights type game called ono! for about a month now.

    I don't consider it to be technically impressive, but it has been an excellent way for me to find my way around Godot, which I hope to use build some more ambitious projects with later. Unfortunately, despite the time I've spent on it, it is still rough enough that I haven't open-sourced it or put any downloads anywhere. I hope to release both the game and the code after a couple more polish passes.

    2 votes
  10. [2]
    JoshuaJ
    Link
    I’m trying to get the lay of the land of data engineering. I’ve been researching OLAP DB’s and learning what a datalake/data warehouse is. There seems to be 10 solutions for each part of the...

    I’m trying to get the lay of the land of data engineering. I’ve been researching OLAP DB’s and learning what a datalake/data warehouse is. There seems to be 10 solutions for each part of the process so any suggestions on a decent stack to set up as toy system would be good. I was looking at Druid potentially as my OLAP. My

    I wanted to start with a postgresql db plugged into a tiny Rust app and then build connections from there via streaming Arrow / Parquet files.

    But in general I’m a bit lost as to the “why” for each building block. Would love some resource suggestions.

    2 votes
    1. spit-evil-olive-tips
      Link Parent
      Designing Data-Intensive Applications is a fantastic book on this subject DuckDB is really nice, essentially a sort of "SQLite for analytics" I've heard good things about Hydra, a Postgres...

      Designing Data-Intensive Applications is a fantastic book on this subject

      DuckDB is really nice, essentially a sort of "SQLite for analytics"

      I've heard good things about Hydra, a Postgres extension adding columnar storage, but never used it personally.

      Clickhouse is also highly-regarded by people whose engineering judgement I trust, but I haven't personally used it either.

      3 votes
  11. xk3
    Link
    This week I had a new idea for sorting by the most common duplicate values. Took only 20 minutes or so to add it to my video/audio player. Pretty neat what can be accomplished with a window...

    This week I had a new idea for sorting by the most common duplicate values. Took only 20 minutes or so to add it to my video/audio player.
    Pretty neat what can be accomplished with a window function and a few if statements!
    https://github.com/chapmanjacobd/library/commit/db94f2cb1fdbe4097133270263ff7798ea73398e#diff-24ac4f82f41768b236655e6aad16a8617775fe25d17325e9e5e72525ea9b9966

    1 vote
  12. devalexwhite
    Link
    I made an ASCII version of Reddit's /r/place on the Gemini protocol. Players get to post one ASCII character a day on a 20x20 grid. It's only been running a day, but it's fun to see what's...

    I made an ASCII version of Reddit's /r/place on the Gemini protocol. Players get to post one ASCII character a day on a 20x20 grid. It's only been running a day, but it's fun to see what's evolving.

    It was mainly a learning project for the Gemini protocol. I have a couple other projects in my mind that are a lot larger in scope, so wanted to nail down the basics of TLS and Gemini headers first.

    If anyone wants to check it out, it's at gemini://place.alextheuxguy.com/

    1 vote
  13. supported
    Link
    I'm building a twitter clone https://sendie.com It's been a fun project

    I'm building a twitter clone https://sendie.com
    It's been a fun project

    1 vote