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

22 comments

  1. [3]
    yorickpeterse
    Link
    For Inko I started working on type specialization/monomorphization, albeit slightly differently: instead of specializing across types, I'll be specializing over ownership/value types, sometimes...

    For Inko I started working on type specialization/monomorphization, albeit slightly differently: instead of specializing across types, I'll be specializing over ownership/value types, sometimes called "kinds" or "shapes". Basically if a value is passed around differently on the stack or has different logic surrounding creating/disposing of aliases, that gets specialized over.

    The reason for this is that most objects are addressed through pointers, and this will remain the case due to the type/ownership system requiring this. In such a setup, specializing using types makes less sense, as you'd end up with e.g. 15 Array specializations that all use the same memory layout, and possibly the same machine code (or at least very similar code). Some more details are found here.

    Now the tricky thing is that I have a rough idea of how to implement this, but I'm at this stage where I haven't fully convinced myself of that yet, so I'm going around in circles a bit. This usually takes a week or so to settle in, but it's a frustrating experience during that time, as it feels I'm not making any progress.

    4 votes
    1. [2]
      gf0
      Link Parent
      Type systems are always cool, good luck implementing it! On Inko’s website I see the following: Just a tiny nitpick, unless I’m mistaken it is basically impossible to statically avoid race...

      Type systems are always cool, good luck implementing it!

      On Inko’s website I see the following:

      unexpected runtime errors, race conditions, and other types of errors commonly found

      Just a tiny nitpick, unless I’m mistaken it is basically impossible to statically avoid race conditions, didn’t it mean data races only, like Rust? Dead locks, live locks are all race conditions and I don’t think that we can have Turing complete systems provable without those, in the general case (due to Rice’s theorem).

      2 votes
      1. yorickpeterse
        Link Parent
        You're right, that should be "data races", so I'll fix that :)

        You're right, that should be "data races", so I'll fix that :)

        1 vote
  2. [2]
    hobblyhoy
    Link
    I'm building a relaxing isometric game called Tiny Town which you can try out here. I dont have an end state in mind (or even much in terms of game mechanics yet) - It's more of a challenge...

    I'm building a relaxing isometric game called Tiny Town which you can try out here. I dont have an end state in mind (or even much in terms of game mechanics yet) - It's more of a challenge project for me. e.g. no graphics or gaming libraries, no html Canvas elements, etc.

    4 votes
    1. ackables
      Link Parent
      It's definitely a fun little toy to mess around with. I feel like it would work well as a desktop widget where you can watch the trees grow throughout your workday. Or it could be a cool AR scene...

      It's definitely a fun little toy to mess around with. I feel like it would work well as a desktop widget where you can watch the trees grow throughout your workday. Or it could be a cool AR scene for the apple vision pro once that comes out.

  3. Grendel
    Link
    I'm running semi-homebrewed TTRPG based on the Dune universe. I... might have gone a little crazy and bought a domain for it haha. How could I not buy AdventuresOnArrakis.com? This is based on D20...

    I'm running semi-homebrewed TTRPG based on the Dune universe. I... might have gone a little crazy and bought a domain for it haha. How could I not buy AdventuresOnArrakis.com?

    This is based on D20 Modern, which is itself based on D&D 3e. So 20+ years old. Naturally finding an online character sheet was next to impossible.

    I (finally) found a basic HTML/CSS/JS character sheet for 5e. Most of what I initially found was React/NPM, and having 250MB and 1,300 dependencies for a glorified web form was horrifying to me. I then modded it for our campaign and hosted it (using Azure static sites). The page was wonderfully designed to export to to JSON that could be saved and loaded back in later. So, I rigged up a simple back end user server less functions (in Azure) so that the page sends the JSON and that backend stores it as a blob in a tiny NoSQL DB (an Azure Table).

    It automatically saves every time a form field is edited. Each player gets a unique URL to their sheet, and I can monitor them in real time during our sessions!

    The only downside was the the design of the sheet was challenging to say the least. It used all absolute sizing and positioning (literal 8x11 inch dimensions), so trying to add/change the content caused horrible graphical glitches.

    It's not perfect, but I was able to change most of it to relative size/positioning enough that it's usable with my changes. Ideally I'd love to get it mobile friendly, but that's definitely outside of my scope of knowledge.

    Next is to make an interactive step by step character creator. My players went through initial character creation manually, but the system is clunky and does a poor job walking players through the process, so most of them still feel confused and likely missed important elements. I'm hoping the character generator helps me as a DM better understand the system and makes life better for players. I'd like to go so far as to have feats and such saved to the noSQL DB, so that players can click a link on their sheet to see the info for them.

    The best part of all of this is that I was able to use Microsoft Azure in such a way that my cost is zero!

    3 votes
  4. devalexwhite
    Link
    I just finished a Weight Tracking app for Palm Pilot (OS >3.0). It was a fun experience to find a classic IDE, get it running with wine, track down documentation on Wayback Machine and build...

    I just finished a Weight Tracking app for Palm Pilot (OS >3.0). It was a fun experience to find a classic IDE, get it running with wine, track down documentation on Wayback Machine and build something for my 20ish year old PDA.

    My next project has been learning the API for the Haiku operating system and building an app for that (not sure what to build quite yet).

    3 votes
  5. [2]
    JoshuaJ
    Link
    Maybe someone here will know: I’m working on a script that uses R code for some statistical analysis, but the main script is in python. I would like to package this up with pyinstaller as a...

    Maybe someone here will know:

    I’m working on a script that uses R code for some statistical analysis, but the main script is in python. I would like to package this up with pyinstaller as a distributable, is there a way to do that? Or is it better to try to port the R code to Python to avoid this?

    3 votes
    1. bytesmythe
      Link Parent
      I can't claim to be an R programmer, but a lot of similar work is done using libraries like scipy and numpy. It's probably much easier just to stick with that if your main script is already in...

      I can't claim to be an R programmer, but a lot of similar work is done using libraries like scipy and numpy. It's probably much easier just to stick with that if your main script is already in python, and if it were me that's what I'd do. Of course, there is always the python environment problem...

      1 vote
  6. xk3
    Link
    Every week I add one new feature to xklb. With large archives of data I often have a curation or organization task that I want to make more automated or more efficient. Some of the weird features...

    Every week I add one new feature to xklb. With large archives of data I often have a curation or organization task that I want to make more automated or more efficient. Some of the weird features I've created so far:

    • Sorting line-delimited files by line similarity TF-IDF (Term Frequency - Inverse Document Frequency)
    • Multiple playback of video (2 to as many screens or as many concurrent videos your CPU can decode. I've gotten 300 low quality videos to play in mpv before DBUS starts throwing weird errors)
    • Actions like delete or move after playing including confirmation (y/n move/delete) in terminal or GUI
    • Interdimensional cable -- playing a few second clips of random videos
    • Music alarm clock
    2 votes
  7. joshbuddy
    (edited )
    Link
    I've started working on a framework for building e2ee apps built on top of sqlite. The idea is to be able to share databases between small groups of friends, and allow schema changes forwards and...

    I've started working on a framework for building e2ee apps built on top of sqlite. The idea is to be able to share databases between small groups of friends, and allow schema changes forwards and backwards. It's my first real go project, and can be found here.

    If anyone is into this problem space and if you have anything to share, happy to hear from you!

    1 vote
  8. underdog
    Link
    I'm currently on a sabbatical, and since this is supposed to give me a rest from work, Im working on small things. I'm currently building an item builder tool for a game that I'm playing. It's...

    I'm currently on a sabbatical, and since this is supposed to give me a rest from work, Im working on small things. I'm currently building an item builder tool for a game that I'm playing. It's very simple, but it allows me to venture into front-end development, which is something that I've wanted to learn for a while. Even though I'm a relatively experienced back-end developer, I'm having a hard time with CSS and all its capabilities.

    Seeing what others are working on is very inspiring, and I love seeing those threads pop up here on Tildes.

    1 vote
  9. karsaroth
    (edited )
    Link
    Still working on some things with Smatter though I haven't had much time lately. I'm attempting to make video and subtitle combos streamable as a way to make them available on more devices. The...

    Still working on some things with Smatter though I haven't had much time lately. I'm attempting to make video and subtitle combos streamable as a way to make them available on more devices.

    The problem is it's hard to find a standard that does what I need. HLS might work but as far as I can tell ffmpeg doesn't support streaming subtitle inputs (it assumes a file and tries to read the whole thing at once). Fudging the segment files was my next step, but using VLC those don't seem to be readable.

    So I am trying for webrtc now, but still am not sure how to introduce the subtitles to a stream, and will probably need to build a custom player anyway. At least that might be supported by most browsers.

    It might be something to put in the too hard basket and work on making it dockerable for a while.

    1 vote
  10. [3]
    101010
    Link
    I'm about to start a new web development job, despite the fact that I haven't done any web stuff before. So in order to make it easier for me to experiment in that space, I bought a domain and...

    I'm about to start a new web development job, despite the fact that I haven't done any web stuff before. So in order to make it easier for me to experiment in that space, I bought a domain and I've been trying to set up some basic self-hosting infrastructure for myself.

    I have a Raspberry Pi 4 that's been running Pi Hole for ad blocking and DHCP for a while now. I decided to wipe my SD card and set up Pi Hole inside a Docker container instead. I thought that was supposed to make setup easier, but I've been tearing my hair out trying to get it to work all day.

    I'm pretty sure I have Docker set up correctly. I can sudo docker run hello-world or sudo docker run ubuntu bash for example. But I think I'm missing something in my docker compose file for Pi Hole, I can't get to the web interface or find it on my network.

    When I eventually get that set up, I'm planning on figuring out NGINX so I can host some other services on my network from different docker containers. Ansible is on my to-do list too.

    Maybe at some point I'll actually try making a website like I was originally planning on doing.

    1 vote
    1. [2]
      karsaroth
      Link Parent
      If you share your docker run command it might help, but just in case, are you mapping the right ports in your container? Also there's a specific domain name you're supposed to use to access...

      If you share your docker run command it might help, but just in case, are you mapping the right ports in your container? Also there's a specific domain name you're supposed to use to access containers, but I don't remember what that is off the top of my head.

      2 votes
      1. 101010
        Link Parent
        Well since my last comment, I've made what I think might be progress. Rather than mapping ports, I went ahead and set the network_mode to host. Now I can access the web interface in 3 ways. I can...

        Well since my last comment, I've made what I think might be progress. Rather than mapping ports, I went ahead and set the network_mode to host. Now I can access the web interface in 3 ways. I can go to pi.hole, the static IP of my Raspberry Pi, or the IP address of the container. From the web interface, I could enable DHCP and I could see certs being issued.

        Here's my compose file now:

        version: "3"
        services:
          pihole:
            container_name: pihole
            image: pihole/pihole:latest
            network_mode: host
            environment:
              TZ: 'America/NewYork'
              WEBPASSWORD: <REDACTED>
              VIRTUAL_HOST: pi.hole
            volumes:
              - './etc-pihole:/etc/pihole'
              - './etc-dnsmasq.d:/etc/dnsmasq.d'
            cap_add:
              - NET_ADMIN
            restart: unless-stopped
        

        The new problem is, when I set my router's DNS to the Pi's static IP, a bunch of domains get ERR_ADDRESS_UNREACHABLE while others work just fine. Google works, but not DuckDuckGo. Tildes works, but not Reddit. RealVNC's website works, but RealVNC Server says it's temporarily disconnected.

        Here's what I had in dhcpcd.conf, because I think that might be my problem:

        interface eth0
        static ip_address=192.168.0.2/24
        static gateway=192.168.0.1
        static domain_name_servers=192.168.0.2
        

        So, defeated, I killed the Pi Hole container, and reverted back to Google's DNS and DHCP on my router for now, so I'm not disrupting the internet in my house while I'm using it for work. But the weirdest part is that I'm still having the exact same ERR_ADDRESS_UNREACHABLE issue on my Raspberry Pi, even after changing the domain_name_servers in dhcpcd.conf back to my router's IP or even to Google's DNS directly! One step forward, two steps back.

  11. [4]
    frammis17
    Link
    I recently installed a couple of two TB disks into an unused Ubuntu system, created a mirrored (i.e., RAID 1) disk pair, and turned the machine into a NAS server. I back up the RHEL machine and...

    I recently installed a couple of two TB disks into an unused Ubuntu system, created a mirrored (i.e., RAID 1) disk pair, and turned the machine into a NAS server. I back up the RHEL machine and another Ubuntu machine onto the NAS server.

    Several days ago I sent a 4.5 GB file from the Ubuntu system to the NAS server; the average rate was 81.66 MB/s. This is the fastest network transfer rate I've ever seen, and that includes the multi-million dollar data center I worked in for a number of years!

    My only regret is that I didn't do this years ago!

    1 vote
    1. [3]
      bugsmith
      Link Parent
      What made you opt for RAID 1?

      What made you opt for RAID 1?

      1. [2]
        frammis17
        Link Parent
        If one of the 2TB disks dies, the other disk is a fully redundant copy.

        If one of the 2TB disks dies, the other disk is a fully redundant copy.

        2 votes
        1. bugsmith
          Link Parent
          Of course it does... Sorry, I totally mixed up zero and one when I asked that question.

          Of course it does... Sorry, I totally mixed up zero and one when I asked that question.

  12. NoobFace
    Link
    Trying to get gzdoom to compile with emscripten for a WASM project I'm working on. I'm not a C developer or a frontend person so this is proving to be a learning experience.

    Trying to get gzdoom to compile with emscripten for a WASM project I'm working on. I'm not a C developer or a frontend person so this is proving to be a learning experience.

  13. Ris
    Link
    My cousin writes books, so I built her a website where she can post the book cover and a description along with links to buy. She has a dashboard where she can upload all of that information that...

    My cousin writes books, so I built her a website where she can post the book cover and a description along with links to buy. She has a dashboard where she can upload all of that information that will be displayed on the front end of the site. Everything works and it's (mostly) scalable. I just need to add user accounts so that only thr right people can log in.

    Simple I know, but I went to uni for compsci and haven't done any since. I feel like I'm starting back from square one.