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?

18 comments

  1. xavdid
    Link
    For the past few years of Advent of Code, I've written step-by-step explanations for how each puzzle is solved. This has been an important step in my learning, plus it's fun. Previously, these...

    For the past few years of Advent of Code, I've written step-by-step explanations for how each puzzle is solved. This has been an important step in my learning, plus it's fun.

    Previously, these writeups have been available as GitHub READMEs, which is fine. But, in an effort to really showcase them, I'm making a little static site to host them. This has a few advantages:

    • I can get a little fancier with my syntax highlighting (e.g. line numbers or highlighting new rows)
    • They'll be easier to find rather than buried in a repo
    • I can add things like an RSS feed

    I'm building it with Astro and am very impressed so far!

    10 votes
  2. [6]
    wababa
    Link
    I'm making my own frontend Javascript framework (happily adding on to the many that already exist). I've been in the web development world long enough that I feel I can make something better for...

    I'm making my own frontend Javascript framework (happily adding on to the many that already exist). I've been in the web development world long enough that I feel I can make something better for my small side-projects, which I frequently make. It's been fun thinking from ground zero, deciding on what to keep from vanilla Javascript vs what to abstract away. One thing I find enjoyable about it is that I can limit its capabilities and reduce upfront work because I'm making it for myself. My basic strategy has been to build in new features when the need arises while developing a side-project.

    5 votes
    1. [5]
      json
      Link Parent
      These are always fun. Care to describe it in more detail? Perhaps similarities or differences to known frameworks?

      These are always fun. Care to describe it in more detail? Perhaps similarities or differences to known frameworks?

      2 votes
      1. [3]
        wababa
        (edited )
        Link Parent
        Yeah! Here is some example code: render([ { type: "title", content: "Welcome", subtitle: "This is my website!", }, { id: "message-to-user", type: "text", content: "Let's get started", }, { type:...

        Yeah! Here is some example code:

        render([
            {
                type: "title",
                content: "Welcome",
                subtitle: "This is my website!",
              },
              {
                id: "message-to-user",
                type: "text",
                content: "Let's get started",
              },
              {
                type: "button",
                content: "Press me!",
                onclick: () => {
                    update({
                        "message-to-user": {
                            content: "You clicked the button!"
                        }
                    })
                },
              }
        ])
        

        As you can see, building UI is done completely via JSON. I did this because I'm not a huge fan of how XML is formatted and it's way easier to manipulate JSON.

        The UI is created using existing building blocks like "title" and "text" (and some more). These translate to various HTML elements with minimal styling around them. I did this so I could create UIs really quickly, it's basically a "component library" that ships with the framework. If I were to officially release it to the public, I would probably allow custom blocks to be created, but right now it limits me to only create super simple UIs, which follows the framework's philosophy of "Simple UI code = Simple UIs = Simple UI tests".

        The last thing worth pointing out is that updates to the UI are done manually with the update function. I really wanted the programmer to control when the UI updates (which is very different from frameworks like React). I think this works really well with small, simple UIs, but probably will quickly run into problems with complicated UIs (something I'm avoiding in the first place with these projects). The update function takes in a format that makes it easy for a backend to update the UI to encourage dumb frontends while still preserving single-paged apps. I took inspiration for this from the HTMX project. You can still update things via the frontend like in the example, but ideally, a user action triggers an API endpoint that returns not data but updates to portions of the UI based on the new data.

        1. [2]
          json
          (edited )
          Link Parent
          Could be a cool idea to further remove the JS functions as event handlers there. Perhaps a bit more like a JSON-RPC call definition. idk. "onclick": { "action": "update", "payload": {...

          Could be a cool idea to further remove the JS functions as event handlers there. Perhaps a bit more like a JSON-RPC call definition. idk.

          "onclick": {
            "action": "update",
            "payload": {
              "message-to-user": {
                "content": "You clicked the button!"
              }
            }
          }
          
          2 votes
          1. wababa
            Link Parent
            Yeah I like that a lot! The more the backend thinks it's directly connected to the frontend the better imo

            Yeah I like that a lot! The more the backend thinks it's directly connected to the frontend the better imo

      2. Mendanbar
        Link Parent
        Lol, relevant username gave me a chuckle 😂

        Lol, relevant username gave me a chuckle 😂

        1 vote
  3. HelpfulOption
    Link
    I had an idea tunnel into me that involves some graphics shader hacking/mistreatment. After a week of moments when I was sure it wasn't possible, and refactoring the architecture 3 times, I...

    I had an idea tunnel into me that involves some graphics shader hacking/mistreatment. After a week of moments when I was sure it wasn't possible, and refactoring the architecture 3 times, I actually generated realistic, usable output.

    A long way to go still, but it's hard to describe the relief and satisfaction I felt after everything fell in place. And all of it is a little too technical to try to explain to people in my circles.

    4 votes
  4. akselmo
    Link
    I am currently preparing to work on KDE Plasma 6, be it code or just testing. Also since I have now time thanks to being laid off (..yay..) I think I finally have energy to work on my game project.

    I am currently preparing to work on KDE Plasma 6, be it code or just testing. Also since I have now time thanks to being laid off (..yay..) I think I finally have energy to work on my game project.

    3 votes
  5. smores
    Link
    For the past year I've been working really hard on Storyteller, and I finally have it more or less working end to end, which feels amazing. Storyteller is meant to be a self-hosted, open source...

    For the past year I've been working really hard on Storyteller, and I finally have it more or less working end to end, which feels amazing.

    Storyteller is meant to be a self-hosted, open source replacement for Amazon Kindle's Whispersync. I love the ability to seamlessly switch between audio and text when reading a book; I prefer reading text but very often find myself wanting to continue my book when I get into the car for a long drive. I also really don't like using Amazon products, nor DRM-protected content, nor cloud services for media content.

    So now I have Storyteller! It's got three pieces; a backend API (that does library management and automated text <-> audio synchronization), a web interface for administrating a library, and a (not yet publish) mobile app(s) for reading and listening to the books.

    I've gotten to work with a very enjoyable mix of new and familiar technologies for me. The web interface is Next.js, which I'm very experienced with, but the mobile apps are React Native which is brand new (and has been super enjoyable, with some notable pain points), and the backend API is using fastapi and whisper, which are both totally new to me. If anyone wants to chat more about these, I'd be happy to.

    This whole thing is definitely still in alpha, but I'm hoping to finish up the last few features (collections and user invites) by the end of this year and "launch" (basically just make a documentation site and announce that it exists) a beta early next year.

    3 votes
  6. [2]
    Akir
    Link
    My 3D printer has some long overdue upgrades and enhansements that need to be done. I've already put together a Nevermore filter for it, and now I just need to actually install it on the thing....

    My 3D printer has some long overdue upgrades and enhansements that need to be done.

    I've already put together a Nevermore filter for it, and now I just need to actually install it on the thing. There's also the issue of actually procuring the activated charcoal for it. When I installed the acrylic panels to enclose the printer, I somehow missed that I was supposed to apply some felt tape so it would seal properly. I might just skip that though, as I opted to use hammerhead style t-bolts to attach them and they are a real pain to reattach.

    The super floppy hinge on the case for the control on it has always annoyed me and there has been a vastly improved version available for probably the past year. I've got it printed and I'm just waiting for a missing screw to come in the mail.

    Along with that screw order I also got all the screws I would need to put together a stealthburner toolhead. The afterburner has been enough for me for quite a long time because I found that ABS is basically perfect for everything I print. But for the first time in forever I find myself needing to print something flexable, and much to my chagrin it's not able to handle TPU. I have a roll of PP that I would also like to try to print with but it's having the exact same problem because it's so flexible. I haven't bought the other components needed for the stealthburner yet, which is something of a problem since it will probably take a long time for it to come in.

    2 votes
    1. Akir
      Link Parent
      Hey, I already have an update for this. It turns out I don't need to bother with the Stealthburner anymore. I was fiddling with my extruder assembly and that's when I realized that at some point...

      Hey, I already have an update for this.

      It turns out I don't need to bother with the Stealthburner anymore. I was fiddling with my extruder assembly and that's when I realized that at some point when I had taken it apart, I forgot to insert the PTFE tube responsible for aligning the filament into the hotend. Because there was now a cavity it meant there was room for the soft filament to warp. After cutting a new tube it's working flawlessly.

      Honestly this kind of blew me away. I must have been printing at least a year without that tube in place without it ever being an issue. Given how most machines just simply stop working if it's missing a part, I'm really impressed at how well this machine was engineered.

  7. 0xSim
    (edited )
    Link
    I'm the main dev of Omnisearch, an Obsidian plugin. Nowadays the project is in "active maintenance", but I got a burst of inspiration 3 days ago and managed to combine a small http server (bundled...

    I'm the main dev of Omnisearch, an Obsidian plugin. Nowadays the project is in "active maintenance", but I got a burst of inspiration 3 days ago and managed to combine a small http server (bundled in the plugin) with a userscript, to surface Omnisearch results directly in Kagi.

    A small demo of the proof of concept.

    I loved spending a few hours on this simple feature, because I got to work on a userscript. They're underrated and feel like relics of the old web, but they embody the idea of hacking, bending a tool – in this case, your browser – to your will with just a few lines of code, making it a little more yours without resorting to curated plugins or settings.

    2 votes
  8. UP8
    Link
    RSS Reader:. I finally redid the ingestion system to put feed id’s on separate feeds. I did a sample of 10% of the feeds and did a complete ingestion and classification cycle and seemed OK, I...

    RSS Reader:. I finally redid the ingestion system to put feed id’s on separate feeds. I did a sample of 10% of the feeds and did a complete ingestion and classification cycle and seemed OK, I switched all feeds to the new endpoint, and am hopeful the next cycle (maybe tomorrow) is successful. I still need to update the UI for managing feeds so it creates new style feeds but that doesn’t seem difficult at all.

    One application of this is feed-specific processing. One annoying problem is that anything I submit to Tildes gets picked up from the Tildes RSS feed and of course the classifier will think I liked it because I liked it before! Things like this add up to maybe 5% of my feed and this info will help me filter out items I know I will never like that the classifier struggles with. I’d have to work pretty hard to get a similar improvement with the classifier because the classifier is already strong, particularly given that I slowed down the classification cycle, letting it be more selective and operate at a better spot on

    https://en.wikipedia.org/wiki/Receiver_operating_characteristic

    Another big feature on the horizon is something that looks at an article from a place like phys.org, extracts links to their sources, determines if the papers are open access, and gives me a choice of which article to submit. But really I should spend time on…

    My blog: Still no progress, but a high priority.

    Three-sided cards:. No technical work this week, but I am thinking about a simulation system for collages I want to make because I made a huge number of perfectly good prints that will be relegated to work prints

    https://mastodon.social/@UP8/111219354336635872

    for instance, where after having the cards in my hands it was so clear that if the characters are sharing the same space they have to be scaled appropriately by height the way Rin Tohsaka and Archer are. I am planning larger and more complex collages and my current process of “printing 50% more cards than I need and put them together by hand” won’t scale.

    Really though I gotta focus on getting the blog up.

    1 vote
  9. simplify
    Link
    I am so exhausted lately after work, I haven't even found the energy to update my GitHub with a few little projects that I want to have listed for portfolio-style examples of my work. For the past...

    I am so exhausted lately after work, I haven't even found the energy to update my GitHub with a few little projects that I want to have listed for portfolio-style examples of my work. For the past 19 months I've been doing full-stack web development in PHP/JavaScript and I want out of this company and out of webdev. I want to move into DevOps or Data Engineering, and every time I start looking at job posts on Indeed, all the jobs want so much experience that it feels beyond my reach. I have 5+ years in IT consulting/sysadmin, I'm a Linux geek, I'm outgoing, helpful, communicative, pick up on everything quickly, and always end up being a leader at work. But man, I feel so deflated when I start looking for jobs. It doesn't help that I'm limited to finding remote-only because I live in a very small market with few options for this line of work. It just feels like an impossible climb right now.

    1 vote
  10. adorac
    Link
    I've been working on a Minecraft mod that adds a procedurally generated solar system that you can see in the sky! Everything has a simulated orbit using Kepler's laws, which was a bit hard to wrap...

    I've been working on a Minecraft mod that adds a procedurally generated solar system that you can see in the sky! Everything has a simulated orbit using Kepler's laws, which was a bit hard to wrap my head around when writing the code, but it seems functional now. Next step is to actually add the procedural generation and do a bunch of pixel art.

    1 vote
  11. joshbuddy
    Link
    I'm making a board game framework with my brother. Hoping to release it soon but so far it's really great, easy to work with and looks solid.

    I'm making a board game framework with my brother. Hoping to release it soon but so far it's really great, easy to work with and looks solid.

  12. xk3
    Link
    I just added an Exploratory Data Analysis (EDA) subcommand to my desktop productivity tool pip install xklb library eda my.csv fancy.parquet pickle.pkl excel.xls jason.json html_tables.html etc.nc...

    I just added an Exploratory Data Analysis (EDA) subcommand to my desktop productivity tool

    pip install xklb
    library eda my.csv fancy.parquet pickle.pkl excel.xls jason.json html_tables.html etc.nc
    

    https://github.com/chapmanjacobd/library/commit/1622affba03ef6acad737b0d63b2291dd5d91ac7

    Ideally, it is able to read any file that pandas supports (there are some I know I still haven't added yet) but it works with most things. Spits out summary statistics (in Markdown!) like this:

    ## tests/data/test.csv:0
    ### Shape
    (2, 4)
    
    ### Sample of rows
    |    |   Unnamed: 0 |   A |   B |   C |
    |----|--------------|-----|-----|-----|
    |  0 |            0 |   1 |   3 |   5 |
    |  1 |            1 |   2 |   4 |   6 |
    
    ### Summary statistics
    |       |   Unnamed: 0 |        A |        B |        C |
    |-------|--------------|----------|----------|----------|
    | count |     2        | 2        | 2        | 2        |
    | mean  |     0.5      | 1.5      | 3.5      | 5.5      |
    | std   |     0.707107 | 0.707107 | 0.707107 | 0.707107 |
    | min   |     0        | 1        | 3        | 5        |
    | 25%   |     0.25     | 1.25     | 3.25     | 5.25     |
    | 50%   |     0.5      | 1.5      | 3.5      | 5.5      |
    | 75%   |     0.75     | 1.75     | 3.75     | 5.75     |
    | max   |     1        | 2        | 4        | 6        |
    
    ### Pandas columns with 'converted' dtypes
    | column     | original_dtype   | converted_dtype   |
    |------------|------------------|-------------------|
    | Unnamed: 0 | int64            | Int64             |
    | A          | int64            | Int64             |
    | B          | int64            | Int64             |
    | C          | int64            | Int64             |
    
    ### Missing values
    0 NaNs (0.0%)
    

    Let me know if anyone has any ideas for other interesting stats I could pull out