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

29 comments

  1. [3]
    Apos
    Link
    I wrote a new tutorial on shaders: Infinite background shader. I don't know if it's as good as the first one, but it was so hard to write, trying to keep it simple but still have the right math....

    I wrote a new tutorial on shaders: Infinite background shader. I don't know if it's as good as the first one, but it was so hard to write, trying to keep it simple but still have the right math. Fact checking also took a while.


    I released my new camera library. It features parallax zooming which I don't see often in 2D games. An effect that I can do with that is the famous vertigo effect. snip


    Now I'm back on my pathfinding algorithm. I made a video about it a while ago: https://www.youtube.com/watch?v=UbMAoXffbY4. I'm looking into ways to make my space optimization work better so that I can efficiently modify the graph at runtime. The problem is trivial to understand but writing the code is somewhat challenging.

    Along with that, I'm revisiting my quadtree data structure and possibly turning it into an open source library. It's what powers my infinite map editor.


    I finally fixed a bunch of layout bugs in my static site generator. It now powers almost all my documentation sites. I really like that I can setup a new site in only a few seconds. Don't have to put any thoughts into the docs setup. I started writing some best practices. Hopefully some day it will be a great resource to save time.

    8 votes
    1. [2]
      gpl
      Link Parent
      Ohhhh I really like your static site generator, something like that would be super useful for me.

      Ohhhh I really like your static site generator, something like that would be super useful for me.

      3 votes
      1. Apos
        Link Parent
        Thanks! If you see anything missing, feel free to create some issues. I'm trying to make something with as little config as possible so each improvements can benefit every other sites.

        Thanks! If you see anything missing, feel free to create some issues.

        I'm trying to make something with as little config as possible so each improvements can benefit every other sites.

        3 votes
  2. [4]
    Rocket_Man
    Link
    I don't know if I've mentioned this before, but I've been putting slightly more effort into a personal finance tool. The concept is basically an openAPI spec for personal finance and budgeting....

    I don't know if I've mentioned this before, but I've been putting slightly more effort into a personal finance tool. The concept is basically an openAPI spec for personal finance and budgeting. You define a JSON/YAML that describes a persons's financial situation. Which can then be processed into an interactive web visualization.

    7 votes
    1. [3]
      DataWraith
      Link Parent
      Are you aware of Plaintext Accounting? It defines a relatively simple data format for finances and budgeting -- it is purpose-built and likely to be more ergonomic than JSON/YAML for data entry.

      Are you aware of Plaintext Accounting? It defines a relatively simple data format for finances and budgeting -- it is purpose-built and likely to be more ergonomic than JSON/YAML for data entry.

      3 votes
      1. Rocket_Man
        Link Parent
        I was not aware of Plaintext Accounting, It'll definitely play around with it as it seems like it could be fun. If it makes sense I'll see if I can support plain text as a format. I didn't mention...

        I was not aware of Plaintext Accounting, It'll definitely play around with it as it seems like it could be fun. If it makes sense I'll see if I can support plain text as a format. I didn't mention the actual data entry would happen through a simple web-app that simplifies adding information.

        The reason for choosing JSON is that I want the focus to move away from individual transactions to defining complex financial situations and relationships. So the full flow is actually Input data into web app -> output financial definition -> extrapolate info from that definition -> generate interactive visualizations

        2 votes
      2. acdw
        Link Parent
        +1 for beancount, it's a great tool!

        +1 for beancount, it's a great tool!

        1 vote
  3. meghan
    Link
    Just published a cli torrent client I made https://github.com/nektro/mtorrent some screenshots: https://media.discordapp.net/attachments/423451373561053184/828159103217303632/2021-04-03_16-36.png...
    7 votes
  4. [6]
    Gyrfalcon
    Link
    I've got two things going on. First is that I am dipping my toes into Nim using a platform called Exercism. I don't think it's likely to have significance for me outside of hobby projects but I...

    I've got two things going on. First is that I am dipping my toes into Nim using a platform called Exercism. I don't think it's likely to have significance for me outside of hobby projects but I like learning new and interesting languages, and I like bite size programming problems, so this seems like a good way to do both.

    Second is that I have decided to help contributing to Tildes! I just put up a merge request for my first issue, hopefully the first of many.

    6 votes
    1. Deimos
      Link Parent
      Thanks! I'll try to code-review soon (I haven't always done very well with that). I've given you wiki edit privileges as well, definitely feel free to update parts of the docs that are outdated or...

      Second is that I have decided to help contributing to Tildes! I just put up a merge request for my first issue, hopefully the first of many.

      Thanks! I'll try to code-review soon (I haven't always done very well with that).

      I've given you wiki edit privileges as well, definitely feel free to update parts of the docs that are outdated or incorrect that you notice, and I'll review and merge over to the Docs site soon as well.

      4 votes
    2. [4]
      Apos
      Link Parent
      I've never used Nim, but there are some part of it's syntax that I really like. (Example .. for inclusive range and ..< for exclusive. (Rust uses ..= which I really dislike.))

      I've never used Nim, but there are some part of it's syntax that I really like. (Example .. for inclusive range and ..< for exclusive. (Rust uses ..= which I really dislike.))

      3 votes
      1. [3]
        Gyrfalcon
        Link Parent
        There is a lot of nice syntax in there, but there are definitely some things that they do in favor of simplicity that bother me. The one I can think of off the top of my head is that when you...

        There is a lot of nice syntax in there, but there are definitely some things that they do in favor of simplicity that bother me. The one I can think of off the top of my head is that when you import code from another module, everything just gets lumped into one namespace by default. It's probably not a huge problem, but it was jarring coming from previous Python use.

        3 votes
        1. [2]
          petrichor
          Link Parent
          Try from module import nil! Or even,from module as alias import nil.

          Try from module import nil! Or even,from module as alias import nil.

          2 votes
          1. Gyrfalcon
            Link Parent
            I have tried that, and I think I will probably try to do it that way if I use Nim for anything bigger. For small stuff like on Exercism though, I think it's overkill, and it's nice to be able to...

            I have tried that, and I think I will probably try to do it that way if I use Nim for anything bigger. For small stuff like on Exercism though, I think it's overkill, and it's nice to be able to do data.moduleFun instead of module.moduleFun(data).

            1 vote
  5. [3]
    m15o
    Link
    I've been fascinated by pubnix ever since I discovered them. However my linux knowledge was close to zero. So I've set as an objective to learn enough to be able to host one. And I'm happy to have...

    I've been fascinated by pubnix ever since I discovered them. However my linux knowledge was close to zero. So I've set as an objective to learn enough to be able to host one. And I'm happy to have one up. It's hosted directly from my apartment, in an old computer, available at:

    https://main-street.nightfall.city

    It's available on gemini and gopher as well. It expands on the universe of https://midnight.pub. I still have a ton of things to learn, but that's the best thing about this whole experience.

    6 votes
    1. [2]
      helloworld
      Link Parent
      I'm intrigued. What is pubnix/midnight.pub and what can I do with it?

      I'm intrigued. What is pubnix/midnight.pub and what can I do with it?

      2 votes
      1. m15o
        Link Parent
        Hey helloworld! https://midnight.pub is an internet message-board I've created a year ago. It's a very simple forum. A pubnix is a linux server that's accessible through ssh where people can...

        Hey helloworld!
        https://midnight.pub is an internet message-board I've created a year ago. It's a very simple forum.
        A pubnix is a linux server that's accessible through ssh where people can interact, create pages, play games. It's a little like the ancestors to social networks!

        5 votes
  6. [4]
    entelechy
    (edited )
    Link
    I'm working on translating an obscure SNES platformer from Japanese to English. Japanese has three writing systems: hiragana, a basic phoenetic alphabet katakana, used for loan words kanji, which...

    I'm working on translating an obscure SNES platformer from Japanese to English.

    Japanese has three writing systems:

    • hiragana, a basic phoenetic alphabet
    • katakana, used for loan words
    • kanji, which represents ideas instead of pronunciations, and has thousands of characters

    There's a good explanation on legends of localization.

    I've learned the hiragana characters and am working on katakana. I just want to know enough to be able to transpose characters I see on the screen, and will likely be asking friends to check my google-translate-level efforts as I go.

    The game itself is short - only a few boxes of text. The next step for me is to figure out where the script is located in the ROM - so just poking around and seeing if I can get the text in the intro to change. I'm still pretty early on and have just been pestering folks at romhacking.net with questions as I go. But it feels like an interesting puzzle to reverse engineer.

    6 votes
    1. [3]
      wirelyre
      Link Parent
      Very cool! Is the Roman alphabet already in the ROM or will you need to draw your own?

      Very cool! Is the Roman alphabet already in the ROM or will you need to draw your own?

      2 votes
      1. [2]
        entelechy
        Link Parent
        The roman alphabet is used in a few places, but I'm not sure if I'll be able to reuse it - the one place I've seen it is in the main menu, and the font there wouldn't really fit the places where...

        The roman alphabet is used in a few places, but I'm not sure if I'll be able to reuse it - the one place I've seen it is in the main menu, and the font there wouldn't really fit the places where there's japanese text.

        Right now I'm focused on creating a table file - kind of a rosetta stone of which hex values match which characters. From there I can figure out where the script is located. This is typically simple in an English ROM because you can use relative search tools to look for strings you know are in the script. But because it's Japanese it's been a bit harder, and I haven't been able to find the English strings this way.

        Working on it today - once I've cracked the code and made a table file, I'll know what the next steps are.

        2 votes
        1. entelechy
          Link Parent
          Found the intro credits - it's in English, and written as ANSI hex: https://imgur.com/iNZpn0X Some other folks in the community suggested that the opening dialogue I was trying to find might just...

          Found the intro credits - it's in English, and written as ANSI hex: https://imgur.com/iNZpn0X

          Some other folks in the community suggested that the opening dialogue I was trying to find might just be a static image, and told me to for it in VRAM with bsnes plus. Making progress :)

          2 votes
  7. joplin
    Link
    I mentioned last time that I was working on some simple software (audio) synthesis. I ended up deciding to go the FFT route and tried out the vDSP framework that ships with all Apple OSes. I'm...

    I mentioned last time that I was working on some simple software (audio) synthesis. I ended up deciding to go the FFT route and tried out the vDSP framework that ships with all Apple OSes. I'm able to get a frequency spectrum out of it and reconstitute it back into the original waveform. I need to read a bit more to understand how the windowing works, but I think it will be very interesting.

    5 votes
  8. EgoEimi
    (edited )
    Link
    I'm a relative novice building a bike brake LED strip lights that'll adjust brightness based on acceleration data obtained from commercial Bluetooth Low Energy cycling sensors. I also want to make...

    I'm a relative novice building a bike brake LED strip lights that'll adjust brightness based on acceleration data obtained from commercial Bluetooth Low Energy cycling sensors. I also want to make them light-adaptive so they'll flash extra bright with attention-grabbing patterns when the bike is on a brightly-lit street segment.

    Right now I'm roughly prototyping on my laptop to receive wheel+crank revolutions data from sensors, process the data, and stream brake light data to an Arduino. I find Bluetooth to be difficult to work with, so I'm using some libraries that help abstract the nitty-gritty details. However, the libraries are more-or-less maintained. It's not easy finding comprehensive documentation about how Bluetooth Low Energy cycling devices work exactly. I occasionally get inexplicable hardware problems that I can't dive into.

    The biggest thing that stops me from getting projects across the finish line is getting bogged down trying to work out every small detail along the way and ending up exhausted and defeated. For this project I'm trying a different mindset where I focus on the big details, make big compromises and cut corners, and push out a shitty prototype that works just barely. And then going back to work out the small details and do things the 'right' way.

    5 votes
  9. fazit
    Link
    I recently moved into a new flat and finally got a reason to implement some lightweight home automation - some of the light switches in this new flat are placed in atrocious places, e.g. the door...

    I recently moved into a new flat and finally got a reason to implement some lightweight home automation - some of the light switches in this new flat are placed in atrocious places, e.g. the door closes on them when you enter the room.

    So I got some cheap lights and switchable plugs from Amazon, flashed them with Tasmota and setup a Pi with a Home Assistant instance. It worked pretty much out of the box. It's nice that I can have dim lights in the morning and funky lights in the evening. And I learned a bit about Docker along the way, so I guess that counts for something.

    Next up: A trip to IKEA to buy some Tradfri Switches to integrate with Home Assistant.

    5 votes
  10. archwizard
    Link
    Well, recently I switched the theme on my Hugo site. I learned a lot about custom templates and layouts while I added the analytics script and completely redid the footer. I even used gitlab ci/cd...

    Well, recently I switched the theme on my Hugo site. I learned a lot about custom templates and layouts while I added the analytics script and completely redid the footer. I even used gitlab ci/cd to automatically deploy the site after I make changes. I guess the next step is actually writing posts :)

    I also have been working on a series of scripts to back up and sort pictures. I've heard that there are two types of people in the world: those who have backups and those who wish they did. Unfortunately, I'm definitely in the latter camp. In February, the phone I'd had for years completely died, and I lost everything in the internal storage, including a lot of pictures, so I'm making sure that from now on all of the pictures I take are archived correctly. So far, I'm using Syncthing to get the files off my phone, then a series of bash scripts to add files to a git annex, add metadata, and help me tag them easily. Next step is probably gonna be setting up a few remotes so that if something happens to my computer, I still have access to the files.

    4 votes
  11. [3]
    acdw
    Link
    Learning FORTH!

    Learning FORTH!

    3 votes
    1. [2]
      anothersimulacrum
      Link Parent
      I know next to nothing about the subject, so forgive my ignorance on the topic, but http://forth.works/doc.html may interest you if you're learning FORTH.

      I know next to nothing about the subject, so forgive my ignorance on the topic, but http://forth.works/doc.html may interest you if you're learning FORTH.

      3 votes
      1. acdw
        Link Parent
        Awesome, thanks! I'll add this to my bookmarks :)

        Awesome, thanks! I'll add this to my bookmarks :)

        3 votes
  12. AreaDev
    Link
    I don't know much php, but I am trying to master at the same time creating something useful - something similar to reddit, but not quite. There it will be as I see it.

    I don't know much php, but I am trying to master at the same time creating something useful - something similar to reddit, but not quite. There it will be as I see it.

    3 votes