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

39 comments

  1. [6]
    Comment deleted by author
    Link
    1. [5]
      unknown user
      Link Parent
      Sounds neat! Any chance you can release an .exe or something? Your binary seems to be... actual non-extension binary, and I'm a mere mortal with an interest. Have you contacted Steam support with...

      Sounds neat! Any chance you can release an .exe or something? Your binary seems to be... actual non-extension binary, and I'm a mere mortal with an interest.

      And in the case of CSGO here, if you try with their actual ID it doesn't work at all (https://steamcommunity.com/games/730/rss/)... Which is frustrating. Oh and sometimes games don't have an RSS feed at all

      Have you contacted Steam support with this issue? This may be an oversight on Valve's part.

      2 votes
      1. [5]
        Comment deleted by author
        Link Parent
        1. senko
          Link Parent
          The Go compiler has this great feature where it's completely self-contained and can cross-compile to other platforms (operating systems, even CPU architectures), with only a proper invocation....

          The Go compiler has this great feature where it's completely self-contained and can cross-compile to other platforms (operating systems, even CPU architectures), with only a proper invocation.

          That only applies if the program in question doesn't link to anything OS-specific. In this particular case, it doesn't, so cross-compiling is easy:

          GOOS=windows go build
          

          Here's a Windows executable I built on my OSX machine out of the 0.3.0 tag of the github repo.

          You shouldn't really be trusting random people on the internet (me) and running .exe-s from them, but that's an easy way to generate releases you can then upload to your repo hosting service and then people can download directly from you.

          This blog post gives a quick rundown of the procedure (old but still valid).

          10 votes
        2. [3]
          unknown user
          Link Parent
          "This app can't run on your PC", as expected. Surely there were ready-made tools to make Go files into OS executables before you started. You're still better than me at Go, so I'm not even gonna...

          you could try downloading the binary that's there and just adding .exe to the file name?

          "This app can't run on your PC", as expected.

          Surely there were ready-made tools to make Go files into OS executables before you started. You're still better than me at Go, so I'm not even gonna try and search for something meaningful here. I'm sure you can find something.

          3 votes
          1. [3]
            Comment deleted by author
            Link Parent
            1. [2]
              unknown user
              Link Parent
              Flash of command-line window, that's it. Open for split-second, and closed. Guessing it needs more of something, but no clue what that something is.

              Flash of command-line window, that's it. Open for split-second, and closed. Guessing it needs more of something, but no clue what that something is.

              2 votes
              1. Liru
                Link Parent
                You'll likely need to open the command line (ctrl+shift+rightclick on the folder you're in, choose "open command line here" or something similar), then invoke it from there.

                You'll likely need to open the command line (ctrl+shift+rightclick on the folder you're in, choose "open command line here" or something similar), then invoke it from there.

                4 votes
  2. [3]
    Comment deleted by author
    Link
    1. Gyrfalcon
      Link Parent
      That's super neat! Amazing how with just 8 colors it's difficult to tell from the 256 color at a glance. The inspiration for my project makes use of a lot of dithering, Low Tech Magazine's Solar...

      That's super neat! Amazing how with just 8 colors it's difficult to tell from the 256 color at a glance.

      The inspiration for my project makes use of a lot of dithering, Low Tech Magazine's Solar Website, as an aesthetic choice and to better compress their images.

      3 votes
    2. Tygrak
      Link Parent
      Dithering is super cool, I once messed around with dithering in python and the results are always extremely impressive!

      Dithering is super cool, I once messed around with dithering in python and the results are always extremely impressive!

      1 vote
  3. [2]
    Comment deleted by author
    Link
    1. unknown user
      Link Parent
      jesus christ

      This page is best viewed using curl(1) on a screen resolution of 80×24 characters or better.

      jesus christ

      3 votes
  4. Seven
    Link
    I just finished a project for my Computer Game Technologies class and I'm really proud of it. The assignment was to make a 3D Unity game, and considering that I've never worked with Unity before,...

    I just finished a project for my Computer Game Technologies class and I'm really proud of it. The assignment was to make a 3D Unity game, and considering that I've never worked with Unity before, I think it turned out really well. It's a hybrid FPS/Tower Defense game, and although it's pretty simple, I think it's pretty fun as well! You can play it here if you are interested!

    7 votes
  5. [8]
    Gyrfalcon
    Link
    My project has been to dip my toe into web design, with a goal of making a website blog thing that uses no more than 1 Mb of bandwidth per page. This is inspired by a few sites I have found and...

    My project has been to dip my toe into web design, with a goal of making a website blog thing that uses no more than 1 Mb of bandwidth per page. This is inspired by a few sites I have found and enjoyed that emphasize being solar, low-tech, or both.

    To that end I've started learning HTML and CSS, plus played around with a couple of static site generators.

    7 votes
    1. [7]
      unknown user
      Link Parent
      You're going to find this very easy once you recognize that you don't need JS, or massive images, or all-inclusive stylesheets. HTML is very light: a regular page with some content would ever give...

      with a goal of making a website blog thing that uses no more than 1 Mb of bandwidth per page

      You're going to find this very easy once you recognize that you don't need JS, or massive images, or all-inclusive stylesheets.

      HTML is very light: a regular page with some content would ever give you between 2kB and 20kB. Stylesheets are light as well, even if you go full-hog on naming the full path of each element (html body nav div.part div.heading.first a.link), which is a ludicrious practice, considering the very nature of CSS being cascading.

      Custom fonts – the ones you load on your own, either by hand or via a CSS framework – can sometimes measure in 100s of kBs, but that can be easily cut down to ~20kB if you stick to the most common subset of symbols (i.e., Latin if you expect to write mostly in English, or Dutch, or Xhosa).

      Depending on the image, you may be able to reduce its size by half without losing its visual appeal.

      So, writing light websites is not a difficult task. The most difficult part is shedding what you don't need, and reducing the size of what you do.

      You're new to this. The first thing I would advise you to do is make websites dirty – in that, use whatever makes finishing the website quicker. After it's done, clean up: remove, reduce, and refactor. Remove things you don't need. Reduce things you can't go without. Refactor what's left to lessen its impact further.

      In other words, first make the website, then make it weigh less than 1MB.

      Best of luck.

      5 votes
      1. [6]
        Gyrfalcon
        Link Parent
        Thanks! I am definitely having some trouble getting my layouts right across desktop and mobile, so I am focused on that before making things lighter.

        Thanks! I am definitely having some trouble getting my layouts right across desktop and mobile, so I am focused on that before making things lighter.

        1. [5]
          unknown user
          Link Parent
          Any particular thing about layouts that you find difficult to accomplish?

          Any particular thing about layouts that you find difficult to accomplish?

          1 vote
          1. [4]
            Gyrfalcon
            Link Parent
            Well last night I spent a good chunk of time trying to get my header bar with the site name, logo, and navigation links to respond at all gracefully to the window being narrowed. I succeeded at...

            Well last night I spent a good chunk of time trying to get my header bar with the site name, logo, and navigation links to respond at all gracefully to the window being narrowed. I succeeded at that to a satisfactory point, although ever since I decided to organize the header bar and the content into separate div elements, the content has been rendering the first set of lines underneath the header bar. Placing clear: both; in the CSS for the content div or in a br somewhere in between doesn't seem to help though, so I will have to keep working on that.

            1. [3]
              unknown user
              Link Parent
              The clear property only works when you also set float on the element. Are you using floats to determine your layout? It has its uses, but I get a feeling you don't need it. What you want could...

              The clear property only works when you also set float on the element. Are you using floats to determine your layout? It has its uses, but I get a feeling you don't need it. What you want could probably be done with Flexbox.

              If you put the header as you have it on Codepen, I might be able to provide better feedback. I know you haven't asked for it, but layouts can be tricky – especially in responsive design – and I'd like to illuminate that for you a little bit.

              1 vote
              1. [2]
                Gyrfalcon
                Link Parent
                The links I am using for navigation are floated so that Jekyll can generate them from a list of pages. From what I was reading that can still require a clear, but I may not have been asking the...

                The links I am using for navigation are floated so that Jekyll can generate them from a list of pages. From what I was reading that can still require a clear, but I may not have been asking the right question! I will the header up on Codepen and post it over in the questions thread, since I think it would be a good addition there.

                1. unknown user
                  Link Parent
                  Mention me when you do.

                  Mention me when you do.

  6. [5]
    aymm
    Link
    Two things mainly: An Arduino based flower pot sensor I wanted to dip my toes into C++, and I had a couple ESP8266 lying around. The plan is to make a little moisture sensor for whatever flower...

    Two things mainly:

    An Arduino based flower pot sensor

    I wanted to dip my toes into C++, and I had a couple ESP8266 lying around.
    The plan is to make a little moisture sensor for whatever flower pot I happen to have. I added a character LCD and three buttons to the thing for easier in-/output. It displays the current moisture of the soil (well, currently only the raw voltage), and allows me to set the brightness of the LCD backlight. I added a feature to automatically turn off the backlight after a couple seconds (also adjustable via the buttons).
    On boot it tries to connect to the last known Wifi network. If it can't (or none is configured) it starts an access point where I can plug in connection data. The AP turns itself off after 5 minutes (assuming wifi connection is not wanted - this is still on my to-do though). I've added a small webserver to provide the current readings as JSON and allowed configuring an FTP server and a frequency to upload the current status.
    I also want (currently working on that) to be able to configure turning wifi off automatically and only turn it on to upload the ftp data and switch off again.

    A webinterface for my audiobook collection

    I haven't found a system to organize audiobooks the way I want, so I'm writing my own. I have multiple copies of some audiobooks (different narrators and/or languages), but I still want to treat them as one book with different audio tracks. I want to filter them based on tags and genre and mark a narrator as particularly good or bad. I also want a button which converts an audiobook to MP3 if it isn't already (m4b won't sync in the Overcast watchOS app) splits the audiobook into parts of roughly 90 minutes length (append another chapter as long as the current playtime is < 90 minutes) and then upload them to Overcast.
    I have barely started that one yet though

    7 votes
    1. [2]
      unknown user
      Link Parent
      Your web interfact project sounds interesting. Once you're done, if you feel like sharing the implementation, please let me know, either by mentioning or by PM'ing me.

      Your web interfact project sounds interesting. Once you're done, if you feel like sharing the implementation, please let me know, either by mentioning or by PM'ing me.

      2 votes
      1. aymm
        Link Parent
        Sure, I'll probably put it on github anyways. It's still very early though, so that'll take a while. It also requires some manual work beforehand, I have a JSON file in every audiobook directory...

        Sure, I'll probably put it on github anyways. It's still very early though, so that'll take a while. It also requires some manual work beforehand, I have a JSON file in every audiobook directory with some metadata which needs to be manually added. My project allows editing that, but not adding new stuff.

        You could fairly easy get around that though, I cache everything in a database. It scans the files when starting and modifies them after an edit, but everything else runs off an SQLite DB.

        2 votes
    2. [2]
      GoingMerry
      Link Parent
      Audiobook interface sounds interesting! I started an interface for my ebooks (so I could share them with people) but I got lost in some technical issues and had a baby so I've been a bit stalled....

      Audiobook interface sounds interesting!

      I started an interface for my ebooks (so I could share them with people) but I got lost in some technical issues and had a baby so I've been a bit stalled. You have inspired me to get back into it =)

      1 vote
  7. skybrian
    Link
    I'm slowly working on a musical instrument project, currently investigating sound synthesis. I ordered a Teensy 4.0 and audio shield, but forgot to order the right header to stack them. From...

    I'm slowly working on a musical instrument project, currently investigating sound synthesis. I ordered a Teensy 4.0 and audio shield, but forgot to order the right header to stack them. From reading the forums there seem to be problems if you don't keep the connections very short, so laying them out separately on a breadboard seems less likely to work.

    Since I'm not great at soldering I would prefer the all-in-one approach of an Axoloti, but that's a much bigger board. The Bela Mini looks pretty neat too, but it's rather expensive.

    6 votes
  8. ibis
    Link
    This week I'm applying machine learning algorithms to landsat images in python to try and measure deforestation in the Amazon for a uni project.

    This week I'm applying machine learning algorithms to landsat images in python to try and measure deforestation in the Amazon for a uni project.

    6 votes
  9. blitz
    Link
    I want to build Practical Engineering guy's ISS Pointer Thing. This would be my first hardware project of any complexity. I've been a professional software engineer for over 5 years. I kind of...

    I want to build Practical Engineering guy's ISS Pointer Thing. This would be my first hardware project of any complexity. I've been a professional software engineer for over 5 years.

    I kind of hate him for that instructable because he gave me the idea for that project but it doesn't go into nearly enough detail for me to be able to follow it simply. He lists that he uses some parts from servocity.com, but doesn't say which ones, so I've spent almost the entire afternoon trying to reverse engineer the parts list from the very limited perspectives he has in the video and in the pictures with that instructable.

    I also have no experience with motors, so I'm kind of at a loss as to how I should plan to get such precise motion from my motors. A servo for the elevation arm is easy enough, since I only need 180 degrees of motion for my elevation, but I will need a continuous revolution for my azimuth. A stepper motor seems reasonable here, but is there any way to tell what the motor is rotated to when the device is turned on for the first time? I guess I need an absolute encoder, but I don't know if there are any with the resolution I'm looking for (about 1 degree accuracy) for a price I'm willing to pay.

    If anybody here has any mechanical engineering experience I would love to pick their brains.

    6 votes
  10. mrbig
    (edited )
    Link
    Not gonna lie, your projects make me feel like Harry Potter in his first day at Hogwarts.

    Not gonna lie, your projects make me feel like Harry Potter in his first day at Hogwarts.

    5 votes
  11. [4]
    unknown user
    Link
    Currently working on something tentatively called webdigrid. It's an unofficial web implementation of Indigrid. In the end, it's supposed to be accessible from any computer with account ID alone....

    Currently working on something tentatively called webdigrid. It's an unofficial web implementation of Indigrid.

    In the end, it's supposed to be accessible from any computer with account ID alone. It's current implementation design implies using servers for saving, even if all the in-between processing is in-browser, whereas Indigrid's local-only privacy is one of its selling points. I'm looking forward to exploring similarly-private solutions while maintaining global accessibility.

    The plan is to present a localStorage-based prototype (no server saving, everything remains in-browser) by December.

    Mark is apparently working on his own, WASM-based version.

    4 votes
    1. [2]
      andre
      Link Parent
      The way Indigrid organizes information looks interesting, but the lack of customizable shortcuts is a dealbreaker for me. I hope you consider allowing support for user-specified hotkeys (or maybe...

      The way Indigrid organizes information looks interesting, but the lack of customizable shortcuts is a dealbreaker for me.

      I hope you consider allowing support for user-specified hotkeys (or maybe even consider a built-in vim-esque map). Indigrid's main ethos already seems to be improving your thinking patterns, which resonates with vim pretty well.

      4 votes
      1. unknown user
        Link Parent
        From what I understand, the lack of customizability is intentional. Indigrid is made so that you no longer have to consider details while working. The fewer things you have to consider, the fewer...

        From what I understand, the lack of customizability is intentional. Indigrid is made so that you no longer have to consider details while working. The fewer things you have to consider, the fewer the things that can distract you.

        Mark, the creator of Indigrid, and I have discussed this lack of customizability before – even specifically pertaining to hotkeys. He wasn't eager to help with this. I don't think it would be a challenge for him to develop custom hotkey engine, but I do think it subtracts from the straightforwardness of Indgrid – "come, see, customize themes and fonts, start working", and I think he holds that part of Indigrid in high regard.

        On some level, I agree with that. I'm prone to distraction, and while I enjoy fiddling with the settings, this rigid structure is refreshing. That said, I have already changed one hotkey pair to better match the keymapping in the rest of the app: moved "Open in side column...": Ctrl+L / Ctrl+RCtrl+Left / Ctrl+Right. (You think "left" and "right", not "which of these letters map well to the concepts of sides", when considering such things.) Considering my intentions, new hotkeys will also be added. If webdigrid proves a successful enterprise, it may motivate Mark to follow the changes that the cross-users may ask for.

        I'll consider custom hotkeys. No promises.

        The overview of vim you've provided is very high-level. Is there any introduction to the idea of vim or vi that a complete newbie to either might understand? It's a fascinating concept, and I can see how you can apply to something like Indigrid.

        3 votes
    2. [2]
      Comment deleted by author
      Link Parent
      1. unknown user
        Link Parent
        You're missing out. But, TL;DR: You want to use Indigrid if you want to be able to jot down your ideas quickly, experiment with them, and be able to delete them without hesitation, certain that...

        (Well, there's a manifesto, but I don't have time to read it right now.)

        You're missing out. But, TL;DR:

        You want to use Indigrid if you want to be able to jot down your ideas quickly, experiment with them, and be able to delete them without hesitation, certain that the infinite-undo system will be able to take you back to any single point in your outlining history.

        A wiki is partially for presentation: it has formatting, and it's meant to end up in pages. Indigrid is all for you, to wield it as you see fit: indented plain text that you can copy in and out of your regular Notepad.

        I wish there was a way to try it right on the website – it was one of the suggestions I made while I was working on that part – because I hate telling people "just download it and see for yourself". Alas, that's the only way to give it a try right now. Watching the video should help, but not nearly as much as a first-hand experience.

        1 vote
  12. unknown user
    Link
    Business work is progressing nicely! Our SaaS app has about 3-4 tentpole features that it needs developed to be in a sellable state, and I'm still working on the first one—sadly with my real job...

    Business work is progressing nicely! Our SaaS app has about 3-4 tentpole features that it needs developed to be in a sellable state, and I'm still working on the first one—sadly with my real job taking priority it's slow going. I did just spend about 2 on and off days diagnosing an issue with out private NPM registry mind you!

    Turns out yarn depends on both .npmrc and .yarnrc to function properly, or otherwise has some weird inheritance issue with both files that aren't well documented. Don't you just love the node ecosystem :/

    4 votes
  13. moocow1452
    Link
    Got some old Mindstorms bricks flashed with Java code, gonna teach some kids some Java. It's our robotics club, and we had the bricks lying around, so I figured instead of doing dumb virtual...

    Got some old Mindstorms bricks flashed with Java code, gonna teach some kids some Java. It's our robotics club, and we had the bricks lying around, so I figured instead of doing dumb virtual things to teach loops and sequences, we could make some lights flash and joints move, will follow up if people are into it.

    4 votes
  14. rogue_cricket
    (edited )
    Link
    A lot of people here are working on cool fun things so I thought I'd chip in with something different. I'm working on untangling some massive SQL queries which are currently running unacceptably...

    A lot of people here are working on cool fun things so I thought I'd chip in with something different.

    I'm working on untangling some massive SQL queries which are currently running unacceptably slowly. We have our database indexed appropriately, but the way that the queries are written causes the indexing to not work because the code unnecessarily checks conditions on basically every row it returns. I suspect they were written by some kind of cave goblin or perhaps a co-op student.

    I suspect more than one goblin/student was involved as the formatting even across a single query is wildly inconsistent in terms of the even the basics like spacing, capitalization, and spelling. The only consistent thing is that there is no indentation whatsoever.

    So far I have three favourite lines. Firstly, there is a single line used to convert timestamps which according to my editor spans over 800 characters, and it is copy-pasted throughout various files. Secondly, I found a quadruply-nested REPLACE(REPLACE(...)) used to insert a series of animal emojis into a string. And thirdly this line, short and sweet, which I believe really sums up the amount of care put into the original craft of this whole thing:

    Select customer.transferred AS Transferd

    I am very tired.

    EDIT: I just went back and checked, it's not four nested REPLACE()s for the animal emoji. It's six.

    4 votes
  15. Kremor
    Link
    I'm working on a open source alternative to Squarespace and Wix, something that you can use to create "simple" websites using a drag and drop editor.

    I'm working on a open source alternative to Squarespace and Wix, something that you can use to create "simple" websites using a drag and drop editor.

    3 votes
  16. poopfeast6969
    Link
    I've been implementing a multirotor flight controller in an FPGA, including a hardware PID implementation for translating motor speed to an output throttle. FPGAs are pretty difficult to explain,...

    I've been implementing a multirotor flight controller in an FPGA, including a hardware PID implementation for translating motor speed to an output throttle.
    FPGAs are pretty difficult to explain, even to someone with the right background knowledge. But they're basically a chip that you can implement your own digital logic on, like an ASIC but without the million dollar development and tooling cost.

    It's been slow going, I never had a full appreciation for hardware integer maths until now. You really have to fully comprehend what the Verilog is actually synthesising in order to avoid overflows etc. Which I don't so it's been a painful few weeks tuning it.

    3 votes
  17. [3]
    archevel
    Link
    I just started on a project to build a remote dnd/tabletop webapp like fantasy grounds or roll20, but based on webrtc&local storage. Ideally it would just be a webpage and you'd handle the...

    I just started on a project to build a remote dnd/tabletop webapp like fantasy grounds or roll20, but based on webrtc&local storage. Ideally it would just be a webpage and you'd handle the signaling part with s link share or something. Unfortunately it does require a stun/turn server for the initial connection. Apart from that it would be fully decentralised!

    This is mainly a hobby to learn elm so will likely end up with me getting 50% of the way and then tiering of it :)

    2 votes
    1. [2]
      unknown user
      Link Parent
      Is there a chance you can host it on one of the free platforms – like Heroku – to eliminate the need for buying or renting a server of your own for that first connect?

      Unfortunately it does require a stun/turn server for the initial connection.

      Is there a chance you can host it on one of the free platforms – like Heroku – to eliminate the need for buying or renting a server of your own for that first connect?

      1. archevel
        Link Parent
        The bandwidth & cpu required to run the server is pretty minimal so once I need something that is consistent I'll throw up something in the free tier on one of the cloud providers or perhaps pay...

        The bandwidth & cpu required to run the server is pretty minimal so once I need something that is consistent I'll throw up something in the free tier on one of the cloud providers or perhaps pay for someone else to do it. There are a few possible dedicated providers, eg https://www.twillio.com/stun-turn

        1 vote
  18. ras
    Link
    I'm working on two projects right now, one for school and one for myself. The one for school is a Q-Learning Cliff Walking example project written in Java. It's an AI/ML class, and while I don't...

    I'm working on two projects right now, one for school and one for myself. The one for school is a Q-Learning Cliff Walking example project written in Java. It's an AI/ML class, and while I don't love the class, I've been enjoying this project. The one for myself is a "bank account" web app written so that my wife and I can keep up with our kids' allowance and the things they've bought. I'm using Angular for it. I don't have much experience with any sort of web development so it has been equally fun and frustrating.

    1 vote