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

31 comments

  1. Weldawadyathink
    Link
    I found a free TV on Facebook marketplace that needed a new backlight. The new set of backlight strips were $75, so it was a cheap way to upgrade from a very old 1080p TV to a relatively okay 4k...

    I found a free TV on Facebook marketplace that needed a new backlight. The new set of backlight strips were $75, so it was a cheap way to upgrade from a very old 1080p TV to a relatively okay 4k TV. It took me a few hours, but the replacement went off without a hitch.

    The only problem is the colors were way off, even on the "calibrated" mode. My guess is the output color of the new backlight LEDs is slightly different from stock, so the factory calibration just makes it less accurate. I've never properly calibrated a TV before, so I jumped into the deep end of learning. Turns out display calibration is crazy complicated. I managed to get it reasonably close to accurate (with the help of ChatGPT) once I figured out out to disable the local dimming zones. This TV only has 12 anyway, so it's nearly useless and makes the calibration inconsistent.

    Now that I have it dialed in, I think it's more accurate than our previous TV. All around a fun project, and now I have a very useful little tool in my tool belt.

    13 votes
  2. [3]
    rogue_cricket
    Link
    Welp, I got distracted and now I guess I'm working on a retro virtual pet site based around combining slimes. It's written in Rails 8 because I am familiar and comfortable with the framework. I am...

    Welp, I got distracted and now I guess I'm working on a retro virtual pet site based around combining slimes.

    It's written in Rails 8 because I am familiar and comfortable with the framework. I am experimenting also with Stimulus/Hotwire, but honestly kind of flying by the seat of my pants with it. The DB is postgres chosen specifically for JSONB making things nice and easy for me.

    The slimes are currently modelled with a Genotype object, which consists of Locus objects of varying types. Two slimes squished together produce an offspring that combines the genetics. I initially conceived it as being more "purely" genetically-oriented but kept running up against the tension between "simulation" and "game", and I think I decided to fall more on the side of "game."

    Colour was hard to figure out for a multitude of reasons, but I believe I have a pretty good grasp on it now. I'm currently working on the shape of the slimes, which I suspect will be VERY hard.

    Each slime is actually a radial function, basically, setting out N points which are then joined by a Catmull-Rom spline. While I have a variety of set body types I have been experimenting with ways to modify them based around individual inheritable characteristics - for a little while today I tried to actually model different loci as harmonics in different combinations, but it became pretty clear pretty quick that if I did that people would just immediately try to make their slimes look like buttplugs (because it's the first thing I did).

    So as interesting as that was, back to set shapes for now. I have a debug toy where I can lerp between them to get some interesting midpoints, which I might do something with.

    7 votes
    1. [2]
      archevel
      Link Parent
      Got me thinking... If you express the shape of a slime as a function that operates on a line then you get an arbitrary wiggly line. Then you turn that line into a circle by connecting the ends. If...

      Got me thinking... If you express the shape of a slime as a function that operates on a line then you get an arbitrary wiggly line. Then you turn that line into a circle by connecting the ends. If the line ever crosses itself when it is bent then you could treat that as the slime splitting at that point into two slimes. Two slimes colliding at a point would merge the slimes functions in some way. Slimes could naturally then grow by combining the length of their circumference line. Anyway, fun project!

      1 vote
      1. rogue_cricket
        Link Parent
        That's an interesting approach and kind of what I was going for with the harmonic series! The slime is a circle, I applied transformations based around periodic functions to the outline, and the...

        That's an interesting approach and kind of what I was going for with the harmonic series! The slime is a circle, I applied transformations based around periodic functions to the outline, and the final expression was a finite Fourier transformation of the harmonic sums. (I also provided a "floor line" to them to make them look like creatures rather than just "splats", gave them eyeballs). It could produce cute slimes, but unfortunately also produced a lot of weird-looking slimes that I couldn't see anyone being excited to have - and sometimes there was no clear throughline of "this slime has aspects of both its ancestors", which is important to me. I suppose that is the risk of making things more free and procedural in general!

        But yes, right now squishing them together is more akin to breeding them than to FULLY combining them. Just curling them together computationally rather than starting with periodicity as a requirement could potentially allow for more interesting ways of combining them in more of an "amalgamate" way than a "breeding" way, which I kind of like! I'll definitely keep it in my back pocket, if not for the breeding mechanic directly, then for some kind of something down the line. Maybe getting rid of unwanted slimes can smush them into THE GREAT AMALGAM.

        2 votes
  3. [13]
    edoceo
    Link
    Trying to find a new approach to verifying who's human on the web. I don't think that capthca and the forced ID things are the right answer

    Trying to find a new approach to verifying who's human on the web. I don't think that capthca and the forced ID things are the right answer

    5 votes
    1. [10]
      Bwerf
      Link Parent
      A worthy endevour, do you have any good ideas?

      A worthy endevour, do you have any good ideas?

      2 votes
      1. [9]
        edoceo
        Link Parent
        Well, I have ideas; not sure if they are good. One fundamental thing is that the system needs to not-scale. Which is like the opposite of what everyone thinks. The system needs to be designed to...

        Well, I have ideas; not sure if they are good. One fundamental thing is that the system needs to not-scale. Which is like the opposite of what everyone thinks. The system needs to be designed to limit itself to operate on the human scale and start off from the beginning with these principles. What did early/small communities look like? Folk new other folk and could vouch. EG: Is @bwerf an OK human? @artvandlay says they are. And of course with that model we'd still need to have some cryptography and signatures and stuff.

        2 votes
        1. [3]
          post_below
          Link Parent
          That's an ambitious project, not so much the tech, but trying to mix human scale and global network scale. If the goal is to replace CAPTCHA, wouldn't it need to fail requests by default? You...

          That's an ambitious project, not so much the tech, but trying to mix human scale and global network scale.

          If the goal is to replace CAPTCHA, wouldn't it need to fail requests by default? You could only pass requests where attestation already existed. And wouldn't that mean that it would always auto-fail some percentage of potentially valid requests even if you managed to drive widespread adoption?

          In addition, wouldn't you need a central attestation store because you couldn't rely on users being connected to the network at a given time? And in that case wouldn't it only work if there was already an attestation record for that request? Would it be IP based? Fingerprinting?

          Or am I misunderstanding and this is meant to replace CAPTCHA on just one particular site? In that case though it sounds like invite-only would be a lot easier and more reliable.

          Hopefully I'm missing something because better CAPTCHA is something we all want.

          1 vote
          1. [2]
            edoceo
            Link Parent
            You are missing some things. Also, your comments touch on a lot of the problems in this space. There is just a lot more problems than what you've pointed out. Those, and many others, are bouncing...

            You are missing some things. Also, your comments touch on a lot of the problems in this space. There is just a lot more problems than what you've pointed out. Those, and many others, are bouncing around my brain, getting notes and research and thought experiment.

            Another thing is, the "business model" because I don't have budget to run a service that could have (eventually) millions of users.

            And then business structure. Likely have to make an NFP, and get a diverse board early for credibility.

            Lots of hard problems. Should be fun.

            1 vote
            1. post_below
              Link Parent
              I can't deny the appeal of hard problems! I'll be curious about your solutions

              I can't deny the appeal of hard problems! I'll be curious about your solutions

        2. Bwerf
          Link Parent
          Interesting, so some kind of humans vouching for each other? I'm interested in where this will lead, good luck!

          Interesting, so some kind of humans vouching for each other? I'm interested in where this will lead, good luck!

        3. [2]
          skybrian
          Link Parent
          The trouble I see is that you probably don't want the community to be completely dead and that's the most likely result. It can't be too hard to join or it won't work at all. Invite-only seems...

          The trouble I see is that you probably don't want the community to be completely dead and that's the most likely result. It can't be too hard to join or it won't work at all.

          Invite-only seems like a reasonable way to go?

          1. edoceo
            Link Parent
            Yea, it's got a big cold-start problem.

            Yea, it's got a big cold-start problem.

            1 vote
        4. [2]
          jzimbel
          Link Parent
          Tangled is doing this, if you could use some inspo. I haven’t used it myself, but I’ve been following their development with interest. Looks like they use this to implement vouching.

          Tangled is doing this, if you could use some inspo. I haven’t used it myself, but I’ve been following their development with interest.

          Looks like they use this to implement vouching.

          1. edoceo
            Link Parent
            I've been following the Ghostty issues. Thanks for the pointer to Tangled

            I've been following the Ghostty issues. Thanks for the pointer to Tangled

    2. [2]
      bitshift
      Link Parent
      Out of curiosity, is this something you're building for your own use? Just wondering what your motivation is.

      Out of curiosity, is this something you're building for your own use? Just wondering what your motivation is.

      1. edoceo
        Link Parent
        I'd like it to become something widely used. I don't like many of the methods today and really don't like government enforcing online identity. We should be able to prove we are human, without...

        I'd like it to become something widely used. I don't like many of the methods today and really don't like government enforcing online identity. We should be able to prove we are human, without needing to specify which human.

        1 vote
  4. gleamingyeets
    Link
    I'm a burgeoning programmer. Lately I've been working on a simple Python program that will track the time I've spent studying and log it to a SQLLite database all with the push of a button. Now...

    I'm a burgeoning programmer. Lately I've been working on a simple Python program that will track the time I've spent studying and log it to a SQLLite database all with the push of a button. Now the most important thing I need to do is find the motivation to continue working on it consistently...

    5 votes
  5. artvandelay
    Link
    Home server upgrades are in progress. I harvested parts from my old server and moved everything into a new case. Things are functioning just fine thankfully. I had installed the new HDDs I bought...

    Home server upgrades are in progress. I harvested parts from my old server and moved everything into a new case. Things are functioning just fine thankfully. I had installed the new HDDs I bought without realizing that the SATA controller on the motherboard doesn't support the 4k block sizes. So now I'm waiting on a HBA card + cables to arrive in the mail so I can verify if my new drives work.

    4 votes
  6. IsildursBane
    Link
    Been starting to research building my own alarm clock based off of a raspberry Pi for my wife. She has been wanting a simple standalone alarm clock, but one where she can pick the audio file for...

    Been starting to research building my own alarm clock based off of a raspberry Pi for my wife. She has been wanting a simple standalone alarm clock, but one where she can pick the audio file for it. Her research has seemed to indicate that picking your own audio file is quite hard to achieve, unless you pay too much. So I am in the beginning research stage of building my own

    3 votes
  7. post_below
    Link
    Like @edoceo I've recently been working on a way to make bot protection suck less. My solution isn't particularly exciting: Run extensive signal and behavior scoring to determine if a request...

    Like @edoceo I've recently been working on a way to make bot protection suck less. My solution isn't particularly exciting: Run extensive signal and behavior scoring to determine if a request needs to get a CAPTCHA gate.

    The goal is for humans to never see a challenge, while challenging the majority of automated traffic reliably.

    So far it's working great, after a lot of iteration over time, but I haven't yet run it on a high traffic site.

    3 votes
  8. [6]
    1338
    Link
    My book tracker is turning into something I'm feeling proud of and enjoying using myself. I've been mostly focusing on polish and improving the dashboard function recently. There's now a much...

    My book tracker is turning into something I'm feeling proud of and enjoying using myself. I've been mostly focusing on polish and improving the dashboard function recently. There's now a much better widget editor UI and the default dashboard is to the point where it's usable and not horribly ugly and buggy. But there seems to be no end of things small bugs that need fixing.

    Some screenshots:

    https://ibb.co/7JzHNQBb
    https://ibb.co/JjrndnCj
    https://ibb.co/mVpWbTyy
    https://ibb.co/1YtKd2gW

    2 votes
    1. [5]
      tomf
      Link Parent
      have we talked APIs? which are you using?

      have we talked APIs? which are you using?

      1. [4]
        1338
        Link Parent
        I have Google Books and OpenLibrary integrated. Not really happy with either of them. I looked at some other options but quickly hit juice vs squeeze issues. A core thing I'm trying to do...

        I have Google Books and OpenLibrary integrated. Not really happy with either of them. I looked at some other options but quickly hit juice vs squeeze issues.

        A core thing I'm trying to do differently is to let any user customize anything about their library, so I am hoping to make it accessible to like scan a book directly vs needing a given edition of a book already available. I'm mostly been focused on physical books, ways to scan data from audiobooks/ebooks or integrate with libby or audible or such is something I haven't even begun to think about.

        1 vote
        1. [3]
          tomf
          Link Parent
          yes! I have built about four book trackers over the last few years and the whole ISBN system is so fucked that I end up giving up. Like you, I don't care about the edition -- I just want the...

          yes! I have built about four book trackers over the last few years and the whole ISBN system is so fucked that I end up giving up. Like you, I don't care about the edition -- I just want the metadata.

          Really makes me appreciate IMDB (omdbapi) for its simplicity.

          The last one I was using oku.club and then syncing everything back to a spreadsheet (js and json), but the data just isn't consistent.

          A wrapper for chatGPT or whatever would probably be the easiest -- snap a pic, it pulls the info, cleans it, then you send it off to a form or whatever...

          fuck ISBN :)

          1 vote
          1. [2]
            1338
            Link Parent
            Yep, I have that implemented! It'll also crop and cleanup the cover for you so the image matches your edition. I also have bookshelf scanning the same way.

            A wrapper for chatGPT or whatever would probably be the easiest -- snap a pic, it pulls the info, cleans it, then you send it off to a form or whatever...

            Yep, I have that implemented! It'll also crop and cleanup the cover for you so the image matches your edition. I also have bookshelf scanning the same way.

            1 vote
            1. tomf
              Link Parent
              so rad. I thought about making an app for record shopping. Snap a pic of the cover and it plays 30s from the middle of a few tracks. Spotify offers this preview anyway, so its a breeze. I didn't...

              so rad. I thought about making an app for record shopping. Snap a pic of the cover and it plays 30s from the middle of a few tracks. Spotify offers this preview anyway, so its a breeze. I didn't want to use AI for it, but I think that's the only reliable way.

              So cool. Good use of AI.

  9. DistractionRectangle
    (edited )
    Link
    I've been nerdsniped and find the whole concept of photogrammetry, gaussian splatting, and mesh generation/extraction fascinating. I'm trying to setup my own pipeline around open source/source...

    I've been nerdsniped and find the whole concept of photogrammetry, gaussian splatting, and mesh generation/extraction fascinating.

    I'm trying to setup my own pipeline around open source/source available technologies, and am having a bit of fun learning. End to end, I've managed to produce a mediocre guassian splat of the Gerrard Hall data set in 1.5 hours, and have since learned about the importance of masking, not overfitting, etc.

    So I'm currently trying to find (or will make) a tool for masking with SAM3 + manual edits, after which I'll see how else I can improve my quality (short of buying a more vram).

    2 votes
  10. CrypticCuriosity629
    Link
    I'm chugging away on my homelab hyperfixation! I bought a chinese motherboard from Aliexpress for $50 and got a used Intel Xeon CPU E5-4628L V4 off ebay as well as an Nvidia Quadro P1000 GPU. All...

    I'm chugging away on my homelab hyperfixation!

    I bought a chinese motherboard from Aliexpress for $50 and got a used Intel Xeon CPU E5-4628L V4 off ebay as well as an Nvidia Quadro P1000 GPU. All for less than $100 total, so I'm happy about that.

    I'm going to be rebuilding my NAS/Media Streaming server inside my homelab rack with this new hardware, so it'll give me a far better overhead on media transcoding.

    I also got ERPNext running on an old Mac Mini that I'll be adding to my homelab, and I've been writing a custom app for small commercial print shops to use as their MIS system and project management system.

    2 votes
  11. Apos
    (edited )
    Link
    I decided to give a try to vibe coding a side project since my work requires me to learn that stuff. Did an implementation of my chess variant. Posted about it a while ago here, but I designed the...

    I decided to give a try to vibe coding a side project since my work requires me to learn that stuff. Did an implementation of my chess variant. Posted about it a while ago here, but I designed the rules back in 2006. It's pretty cool to finally see it played online. I used to only play it on the board with friends.

    The LLM implemented all the features and I did the QA:

    • Play locally on one device with your friends, against the AI, or watch AI vs AI.
    • Has AIs that can play the game, including neural networks that I'm training to get better.
    • Play a friend online with just a share code, no account or server (there's a fallback that uses https://www.metered.ca/ if the P2P connection can't be done).
    • Auto-matchmaking to get paired with another player.
    • Has a puzzle mode with tactics pulled from the games that the neural net is generating to learn the game better.
    • Has an analysis board with an eval bar and best-move hints.
    • Board editor to set up any position.
    • Move history, captured pieces, sounds, and PGN import/export.
    • Hosted straight from GitHub pages and the matchmaking is done with trystero.

    Play it here: https://apostolique.github.io/AposChess/.

    If you want to watch AI vs AI, the loop-champion is the current strongest neural net. At the time that I'm posting, it has 3 hidden layers: 64, 16, 8. It tends to beat the handcrafted AI (where the piece value and position evaluation is hardcoded) at depth 6 a good 67% of the time.

    For quick games, depth 4 vs depth 4 is good, tick the eval option to see what each one is thinking. It's really cool how different AIs will disagree on who is currently winning. I find that using custom and setting depth to 0 and timeout to 6000 gives good quality games.

    The variant doesn't tend to result in as much draws as regular chess from what I can see.

    1 vote
  12. hamstergeddon
    Link
    So at work we've got this bash script that runs as a github action when we cut a release. It git diffs to determine the new tickets in the release, sends them to openAI to generate more...

    So at work we've got this bash script that runs as a github action when we cut a release. It git diffs to determine the new tickets in the release, sends them to openAI to generate more descriptive descriptions from the PR descriptions, then dumps them into a release document on Confluence.

    I picked up a few tickets centered around improving the script and it quickly led to a bunch of issues because it's impossible to fully test locally (because of the AI handoff and Confluence aspect) and there's no easy way to do unit testing on the script.

    I got fed up with it and decided to refactor the whole thing in nodeJS.

    I had a few goals:

    1. Be written in a language the whole teams knows natively (ie, not bash)
    2. Have unit tests
    3. Be able to run the script FULLY locally and be 90% certain it's going to perform the same "in prod"

    For #1, easy enough -- node and TS.
    For #2, just reused our existing unit test framework in the codebase
    For #3, I had to get creative!

    The main limitation of running it fully locally was that there's an AI handoff component, and none of the individual devs have access to the openAI API key used. So I wrote a "sandbox mode" that hands off the AI bits to the individual dev's instance of Claude or Codex. It's not 100% the same, obviously, but it's as close as we can get without access to that API key (which I cannot get). The next limitation was Confluence. I didn't want to spam a confluence workspace with docs, but I found out you can query Confluence for docs by name. So the solution was a single document that serves as THE test document. It just gets overwritten any time the sandbox script gets run. And the sandbox doc has a big disclaimer at the stop stating that it's for testing purposes and not a REAL release doc, just in case some dipshit product person finds it while browsing confluence.

    Anyway, that's all there is to say about it really. I'm trying to get a few "high impact" items under my belt for leverage for a promotion, and there's been a recent push to make our releases easier for dev managers to test/approve before release (ya know...what release managers used to do before they got axed). And I figured this would be a good opportunity to improve upon our release docs to satisfy that goal. Plus it's internal tooling, which is so much more fun than client work.

    1 vote