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

21 comments

  1. [5]
    xk3
    (edited )
    Link
    I'm entering that LLM "Vice" Coding phase where it feels like I'm treading water as different models keep making similar mistakes and breaking features when unrelated features are added. Closing...

    I'm entering that LLM "Vice" Coding phase where it feels like I'm treading water as different models keep making similar mistakes and breaking features when unrelated features are added.

    Closing the loop and implementing full e2e testing with playwright has helped in a lot of ways but you have to be especially careful when having the LLM write tests because it will very quickly decide that the incorrect behavior is expected and your test will actually be completely useless because it does a skip test, return early, or >= instead of > etc.

    One strategy that I've really started to like is having an abstraction layer for the tests like a page-object model (POM). These are much too verbose if I was coding by hand but with an LLM it helps to have these types of things because the LLM really has no idea what is going on in the page without some kind of reference system ร  la API.

    The Qwen Coder free limits are starting to feel really generous compared to Gemini over the past few days. I would never pay for AI credits or cloud anything because it is all insanely priced but maybe I would buy a bigger graphics card next time. Using llmfit to find a good model, it seems pretty straightforward to run a Qwen Coder model locally via vLLM... but my graphics card is a bit too old and it is AMD so that limits my options somewhat.

    For a couple days last week I got really into Bleve and running SQLite fts5 with detail=none and hand-tokenized trigrams. But after doing a lot of benchmarking it seems like normal SQLite fts5 with detail=full and trigram tokenizer will be the best balance for the performance profile that I'm targeting. If disk space was free then I'd absolutely add Bleve just for the stellar search performance but alas it is not free and adding it just for that almost doubles the database size requirements and binary size.

    my favorite thing about coding assistance tools...

    are the poetics of the insane

    deranged code comments

    of excessive length

    // Need to resolve path to media_id if we want to store it as a caption
    // However, if we store the path here, it's problematic for InsertCaptionParams
    // Let's store the path temporarily in a different way or resolve ID later.
    // Given the current structure, we'll keep MediaPath in db.InsertCaptionParams?
    // Wait, the db package expects MediaID. Let's see how we can resolve it.
    // For now, let's keep the path in a temporary field, we can add a helper.
    // Actually, the InsertCaptionParams struct in db/queries.go has MediaID.
    // I'll leave the path in, and handle resolution in the db layer.
    // Wait, the db/queries.go uses MediaID in InsertCaptionParams, so I need an ID.
    // Let's resolve the ID.
    // We need access to db.Queries in metadata.go
    // I'll add GetMediaID as a helper to Metadata, but let's assume path is enough for now?
    // No, the DB requires MediaID.
    // I'll use a placeholder or resolve later.
    // Actually, I'll update InsertCaptionParams to have a temporary path if needed, or resolve it.
    // Let's change InsertCaptionParams to include MediaID.
    // I already did that in internal/db/queries.go.
    // How do I get MediaID here?
    // I have the path. I can use queries.GetMediaID(ctx, path).
    // But metadata.go doesn't have a queries object.
    // I'll skip this for now or pass it.
    // Actually, I'll pass the path in the struct but rename the field to MediaPath just for temporary use?
    // No, that breaks the refactoring.
    // Let's resolve ID:
    // I'll assume that the DB layer or a helper will be used.
    // For now, I'll store the path in MediaID field as a hack, and add a TODO.
    // No, that will cause a type error.
    // Okay, let's just use 0 as a placeholder for now and hope it's updated later.
    

    ๐Ÿ’„๐Ÿคก

    5 votes
    1. [3]
      imperator
      Link Parent
      Interesting those comments are hilarious. I'm a hobby coder and have used some of it in my job. Nothing super crazy. Created some python libraries and scripts for automating things. I've started...

      Interesting those comments are hilarious. I'm a hobby coder and have used some of it in my job. Nothing super crazy. Created some python libraries and scripts for automating things. I've started using Claude a bit and it's been pretty cool how quickly something's I've been able to do. But at most what I do is hundred to maybe 1-2k lines of code.

      Super basic for me in terms of "use" and I haven't integrated any agents or skills yet. My main career is in finance, so the impact may be a bit further off, but I still want to understand how these tools work from a coding perspective since then I'll know better how to apply it in other areas. I'm also an executive so it's even further off for me.

      I've used our internal copilot for some coding support, project planning, problem dissection. But it's interesting how the brain process switches... It feels different.

      3 votes
      1. [2]
        xk3
        (edited )
        Link Parent
        Yeah... I would say the most important control that you have which determines whether the LLM output will be useful or not is context. Unfortunately, a lot of these skills, agents, and LLM...

        agents or skills

        Yeah... I would say the most important control that you have which determines whether the LLM output will be useful or not is context. Unfortunately, a lot of these skills, agents, and LLM appendages are often counterproductive if not actively harmful:

        https://arxiv.org/pdf/2602.11988

        For example, I've never once had Gemini's "generalist subagent" do anything remotely useful which the simple find and replace program sed would be able to do a thousand times faster.

        Some harnesses and workflows are useful though. "Plan mode", where a large agent decides what to do and hands off the tasks to a medium sized agent, works pretty well. I think the generalist subagent is trying to do something similar but the model is just too small to do anything useful.

        It's useful to ask different large models the same question, with varying amounts of context. Using certain words can predetermine the output like if you ask "is this a bee sting"? or "is this a wasp bite"? then the output could be completely different depending on (bee, wasp) but also (sting, bite). This can have dangerous consequences of course!

        So you need to disprove often and withhold information at times to get the best result.

        The other point in variation is that many of the big LLM providers are constantly tweaking their models and offloading certain queries to caches or smaller LLMs even while billing you under a different one depending on resource availability. And at the same time there are Mixture of Experts models which is the same idea just at the model level so technically they are billing you for the model you paid for in these cases but because you worded the question in a certain way the response comes from a smaller part of the model. But even normal big models have this locality aspect too... So there are many things which cause the quality of results to vary.

        2 votes
        1. imperator
          Link Parent
          Definitely interesting. I've had to play with copilot and specifically exclude my work related information if I want something that isn't biased towards internal documents. I've really only...

          Definitely interesting. I've had to play with copilot and specifically exclude my work related information if I want something that isn't biased towards internal documents. I've really only scratched the surface, since I think I've been in a bit of denial. But ya these will certainly impact the job market and if you didn't know how you'll fall behind

          1 vote
    2. first-must-burn
      Link Parent
      All the time at the end of my coding sessions, I tell Claude "clean up the comments to reflect the state of the code, not the process we followed getting to it. This gets rid of things like // X...

      All the time at the end of my coding sessions, I tell Claude "clean up the comments to reflect the state of the code, not the process we followed getting to it. This gets rid of things like // X now behaves like Y instead of Z.

      3 votes
  2. [3]
    first-must-burn
    Link
    With March Madness around the corner, I decided I would join the fantasy league (or whatever you call it) at work. This is a new job, so I'm looking for ways to try to connect with more people. I...

    With March Madness around the corner, I decided I would join the fantasy league (or whatever you call it) at work. This is a new job, so I'm looking for ways to try to connect with more people.

    I don't follow men's college basketball at all, so I spent about a day vibe-coding a set of python tools to:

    • Download historical game data from ESPN's apis
    • Generate features from the game data
    • Train and cross-validate a model based on the feature data
    • Simulate a bracket (seeded with the actual teams) and assign a win probability for each team, propagating up the tree.

    It cost me about $25 in anthropic API credits, and it's not perfect, but it was an interesting exercise. This is something I could tune and analyze endlessly, but I wanted to limit the amount of time and energy i put into this project, so I cut myself off as soon as the model could give me a credible answer.

    The little bit of research I did about picking a bracket suggested that the higher seeds should be favored, but that a chalk bracket (highest seed always wins) is very unlikely to win. The model I generated predicted a few different upsets with high confidence, so it seems like it is doing something that at least sort of aligns with reality.

    I mostly followed the model picks, but sometimes two teams model predictions were very close. If they were within ~10% of even (e.g. 54% vs 43%), I broke the tie by having regular claude research the injuries and playing styles for the two teams, and I chose the team that seemed healthier or whose play style (according to Claude) gave them n advantage.

    I have been fantasizing about getting a perfect (or just very good) bracket, the way I daydream when I occasionally buy a lottery ticket, but I don't really expect it to do too well. At least it will give me something to connect with my new coworkers over.

    3 votes
    1. [2]
      jmpavlec
      Link Parent
      Would love a follow-up. Or maybe you can share your bracket here once the picks are locked. Will be interesting to see how it fairs. I love March Madness for all of the upsets. Curious to see how...

      Would love a follow-up. Or maybe you can share your bracket here once the picks are locked. Will be interesting to see how it fairs.

      I love March Madness for all of the upsets. Curious to see how many of those are actually "predictable".

      2 votes
      1. first-must-burn
        Link Parent
        Here it is I checked it a few minutes ago and it was right about 6 games and wrong about 2 so far.

        Here it is

        I checked it a few minutes ago and it was right about 6 games and wrong about 2 so far.

        2 votes
  3. Eji1700
    Link
    Got my NAS quasi configured (stupid sea gate gave me 8 drives all with some issue so warranty claiming them). Successfully configured the fire wall to only allow minimal access to it so thatโ€™s nice

    Got my NAS quasi configured (stupid sea gate gave me 8 drives all with some issue so warranty claiming them).

    Successfully configured the fire wall to only allow minimal access to it so thatโ€™s nice

    3 votes
  4. [5]
    0x29A
    (edited )
    Link
    (Did not design these, printed others' prints): 3D printed a stand for my Anker magsafe charger. 3D printed spacers for 120mm fans. 3D printed a 100mm to 75mm set of adapting VESA brackets and...

    (Did not design these, printed others' prints):

    • 3D printed a stand for my Anker magsafe charger.

    • 3D printed spacers for 120mm fans.

    • 3D printed a 100mm to 75mm set of adapting VESA brackets and used them to attach a tiny PC to the back of a monitor with some hex M4 screws I got in bulk

    • Continued trying to learn and mess with FreeCAD for designing 3D stuff. Getting better but the workflow is still super offputting to my brain. I've been trying Plasticity and liking it but not sure it's going to be worth it or not, since they're not focused on parametric side of things, so dimensional things are an afterthought. The landscape re: CAD software is pretty bleak. Plasticity does have a Linux version though and that was big selling point for me. I'm really undecided. It's editing/history is destructive so you can't really redimension things later either. Maybe I should tough it out and stick to FreeCAD and just try to continue getting comfortable with it.

    • Looked into a bunch of aspects regarding maybe trying to sell 3D prints, and just having a small personal business in general, and the anxiety of everything involved (and Etsy now requiring all sold designs be 100% designed by the seller and no longer allowing printing others' designs even with approval / when licensing allows) made me back off and probably stick to this for personal use. Maybe I'll reconsider at some point but putting that idea on pause a bit for now.

    • Now that I might be just sticking to personal use for the time being, I might try other community / free "non-commercial" CAD software, but not sure

    Edit: realizing this is probably better meant for the "creative stuff you did lately" post than the programming/technical one though sometimes i have some difficulty distinguishing where something should go. I am probably having anxiety about this for no reason

    3 votes
    1. [4]
      kacey
      Link Parent
      Aah, it's definitely a thing ๐Ÿ˜… I don't think you're explicitly asking for suggestions, but I wish to commit to text the concepts which were useful to me, in case someone else comes through here...

      [FreeCAD]

      Aah, it's definitely a thing ๐Ÿ˜… I don't think you're explicitly asking for suggestions, but I wish to commit to text the concepts which were useful to me, in case someone else comes through here looking for advice!

      1. The core concept that FreeCAD (or rather, the PartDesign workbench) works around is that it's possible to take a bunch of 2D snapshots of your part from different angles, then referencing from those (as positioned by you in 3D space), create your part -- either subtractively or additively. This feels really different from, say, Blender where you're using subdivision modelling to interactively push, pull, and split faces out into objects of increasing complexity; or OpenSCAD, where you're defining volumes which intersect and add to one another. Instead, you're kinda painting the part inside of the lines you've sketched with each carefully placed datum plane.
      2. Don't be afraid to leave parts of the model underconstrained, but for the love of all that is holy, if you want it to be parametric start by making it parametric! Setting up a spreadsheet and referencing values in it early is pretty easy; having to dig through several dozen sketches to find the one dimension you forgot to link up is horrifying.
      3. Save often; FreeCAD still crashes XD
      4. If the PartDesign workbench doesn't suit your needs, try the others! They all interoperate pretty well.

      But yeah, good luck with your free CAD adventure :3 they're quite a few options out there these days!

      3 votes
      1. [3]
        0x29A
        Link Parent
        Thanks! Yeah it's definitely been an adjustment to learn the Sketch -> Part style of design. Especially where there are restrictions on doing multiple shapes together with each other unless you do...

        Thanks! Yeah it's definitely been an adjustment to learn the Sketch -> Part style of design. Especially where there are restrictions on doing multiple shapes together with each other unless you do it a certain way, etc. There was a video series about "moving from Fusion to FreeCAD" which, even though I've never used Fusion, helped me grasp a lot of the concepts and power in FreeCAD. I do think I can learn it well- I just find it annoying, even once I eventually learn it, that I can't drag 3D shapes and "draw" in 3D space directly. That's so much more intuitive to my brain, but if I want that, I need to use my Windows PC, or a Windows VM, and use software with a licensing model I'm not going to be a big fan of (whether that's Fusion, Solidworks for Makers, Siemens Solid Edge, etc. - and I'm not even sure which of things like these fit the bill- or Plasticity which will cost money and not provide enough)

        On the other hand, FreeCAD is so powerful (especially given the spreadsheets / parametric stuff) for an open-source / free project that it almost feels better just to "deal with it" and learn it instead. Maybe the process of learning a more difficult tool will enhance my skills more than something where it's easy. I still wish it was easy though- drawing in 3D directly is so much more enjoyable haha!

        I've fiddled with OpenSCAD too, and while I'm not a programmer currently, I've taken a bit of classes for it a long time ago, and done a little on my own, so I'm familiar- I've thought about trying to go deep into building models that way, but that feels like an even bigger hurdle, so maybe I should settle on something and learn it.

        The beauty of the "put these things together like legos" workflow of something like TinkerCAD is I can get in and out with a quick simple design of a clip/bracket/etc for my needs in the shortest time possible

        2 votes
        1. [2]
          kacey
          Link Parent
          Oh, I'd highly advise looking into CadQuery if you ever want to pick up a software CAD tool -- it's dramatically faster and more sane of a programming language, albeit, with a different mental...

          I've fiddled with OpenSCAD too, and while I'm not a programmer currently, I've taken a bit of classes for it a long time ago, and done a little on my own, so I'm familiar- I've thought about trying to go deep into building models that way, but that feels like an even bigger hurdle, so maybe I should settle on something and learn it.

          Oh, I'd highly advise looking into CadQuery if you ever want to pick up a software CAD tool -- it's dramatically faster and more sane of a programming language, albeit, with a different mental model (it's basically software FreeCAD).

          Agreed overall that additive workflows are nicer ๐Ÿ˜… may I ask if you've tried the Part workbench, incidentally? It leans more heavily onto boolean modifiers, so you can take primitives and smoosh them together more, and that's a more supported flow. There're still sketches, but you can leave them further from the forefront of the design process.

          (note: I'm a lot less knowledgable about the Part workbench, and there may be terrible flaws in it -- ultimately, there's a reason the main supported flow goes through PartDesign these days)

          3 votes
          1. 0x29A
            Link Parent
            Okay, thanks for the rec! Will check that out. I have almost exclusively dealt with the Part Design workbench and not really messed with just the Part one, but I will play with it and see how it feels

            Okay, thanks for the rec! Will check that out.

            I have almost exclusively dealt with the Part Design workbench and not really messed with just the Part one, but I will play with it and see how it feels

            2 votes
  5. typo
    Link
    I have minimal coding experience; mainly just java that I learned in a high school class that I've used to write Processing scripts for generative art over the past decade, later pivoting to P5.js...

    I have minimal coding experience; mainly just java that I learned in a high school class that I've used to write Processing scripts for generative art over the past decade, later pivoting to P5.js and javascript so that I could work online without needing the Processing IDE installed.

    I've recently started using Claude Code to help me write extensions for Autodesk Revit (via python and an add in called PyRevit, which lets you use python to quickly prototype extensions). For those not in architecture, Revit is the defacto industry standard for building information modelling and construction documentation. We model the building using discrete elements (walls, floors, windows, plumbing fixtures, etc...), those elements contain all sorts of information that inform how they interact with other elements, what materials they are made of, etc... Then we can use that live model to then create live architectural drawings that would be used for construction.

    For the past few weeks, if I encountered something that took me longer than it should, or I found myself wishing I had a different way of completing a task, I would go to Claude, have a back and forth about what that feature could be, how exactly it would work, and then let it code away. Of course it takes some back and forth for debugging, I've found it helpful to direct it to send detailed debugging information to the built in pyRevit console.

    The key extension that I've created so far is something I'm calling "Team Updates", that bootstraps a change description log on top of the native Revit model sync function. The way we collaborate is by having a central model (either in the cloud or on our local server), with users opening a local copy of that model, making changes to the model, and then "syncing" which is a push/pull to that central model, sending the changes that have been made, and pulling changes other people have made. What I've found lacking is a way of quickly seeing what has changed in a model over a period of time, especially if the project team is large and multiple people are making changes. So I've created a custom sync button that prompts the user to just enter a short description of what changes they are syncing, then the regular Revit sync happens. That description is saved to our project folder into a .JSON file with a timestamp and username, and then I have a separate button to then pull the changelogs over some past amount of time to aid in me writing change narratives for our consultants. It also will pop up when someone opens a model and it will display all the change descriptions that have been entered since the last time they opened the model (let's you catch up on what other people are doing).

    The other extensions that I'm most proud of so far:

    • COMchecker 3000 - Pulls material square footages by facade orientation to help tabulate areas for using the COMcheck tool for energy code compliance. This takes the model information and presents it in a way to very quickly copy/paste the info into the COMcheck online tool.
    • Masonry Module Grid Generator - Does what it says. It prompts the user to pick the top-left corner of the building plan, then define an module dimension, and it creates a grid of reference planes at that interval. I used it to lay out a CMU building in minutes in exact masonry dimensions.
    • Drawing Path Auditor - Traces every callout, section, and elevation through your Revit model and surfaces the views that lead nowhere. Ideally there is a "Path" through the drawing set that the contractor can follow, plans have building sections and elevations, building sections and elevations have wall sections, wall sections have details, etc... So this tool generates a graph that maps those drawing relationships between sheets, highlights if you've cut details that aren't on sheets (dead ends) and highlights details on sheets that don't have any references to them (orphans).
    • Why Not Visible? - There's like 6 different settings throughout Revit that could explain why a specific element isn't visible in a specific view. This tool just checks those systematically and tells you what the probable cause is so you can go fix it.

    I fully intend to get this all up on github once I get it to a place where I'm confident it's working correctly!
    Current tool kit

    3 votes
  6. [3]
    IsildursBane
    Link
    So have had two separate projects on the go this week, but minimal progress on either. I researched implementing the Arr stack, since I have heard about it but knew very little. I also thought it...

    So have had two separate projects on the go this week, but minimal progress on either.

    1. I researched implementing the Arr stack, since I have heard about it but knew very little. I also thought it might help in locating a still active torrent for a season of a show I am watching, where it seems hard to track down using my surface level knowledge. I am not sure if it is the right fit for my usecase, but I plan on spinning up a VM to try it out.

    2. I have been researching testing frameworks to have automated testing on my React learning project. I learned that you can set up JUnit to run API testing, so will probably implement that for my backend testing. Once that is all configured and tests written then I will start researching testing for the frontend.

    2 votes
    1. [2]
      thenetnetofthenet
      Link Parent
      Feel free to reach out if you want to hear about my setup. A couple of years ago I implemeneted several parts of an -arr stack in Docker containers on my Synology NAS. I don't have the...

      I researched implementing the Arr stack, since I have heard about it but knew very little.

      Feel free to reach out if you want to hear about my setup. A couple of years ago I implemeneted several parts of an -arr stack in Docker containers on my Synology NAS.

      I don't have the functionality where it automatically finds and downloads stuff, since I don't need that use case, but I have the components to do that if I just configure it.

      I continue to tweak it every now and then, but it's currently stable and working well for what I need it to do.

      1. IsildursBane
        Link Parent
        I am part way through implementing it, and it seems pretty easy so far. Right now I am just in the process of adding indexers.

        I am part way through implementing it, and it seems pretty easy so far. Right now I am just in the process of adding indexers.

  7. artvandelay
    Link
    With a big push to be "AI Native" native at work with a whole week of lectures on how to use AI effectively, I thought I'd apply some of my learnings towards a feature I own. The feature launched...

    With a big push to be "AI Native" native at work with a whole week of lectures on how to use AI effectively, I thought I'd apply some of my learnings towards a feature I own. The feature launched last year but it was opt-in only. We wanted to switch it to be opt-out by default and give users an easier way of opting out besides just reaching out to us. This involved updating our database schemas, updating our API, and updating the UI as well to include a toggle for this new column we were adding to the database. The existing codepath would now just check the database instead of a feature flag.

    I decided to delegate this to AI to see how well it'd work. One of the things they told us over and over again during our lectures was that the AI output is only as good as your input. If you just say crap like "Build X, make no mistakes", the AI will build something very shallow that is technically "X", but doesn't have any real functionality. As a result, I spent roughly half a day going back and forth with Claude Code and our brainstorming skill to come up with a thorough plan on what to do. Luckily for me, an engineer on a sister team had worked on adding a toggle recently so I pointed Claude towards their stack of PRs and asked it what steps we can extrapolate from those PRs to use in my own project.

    I'm not a designer so I left the actual UI design up to our design team but I got started on the coding in the mean time. Claude managed to do a fairly solid job once I had defined a thorough plan for it step by step. The code patterns in my company's repos have been a certain way for 10+ years now so there's plenty for the AI to go off of and generate from. Following my "plan", it managed to make the modifications I needed, run the necessary scripts, and get a small stack of PRs up. I had some minor tweaks I needed it to make but once it resolved those, I was good to go. I'm pretty impressed by its "abilities" and it really is just like having a junior engineer who will do as you say.

    2 votes
  8. json
    Link
    Having fun making a new telegram bot/userbot that allows an llm to use Tools to do what it wants in a chat. https://github.com/jason-s13r/qotbot Ask for a poll, it makes one by combining tools....

    Having fun making a new telegram bot/userbot that allows an llm to use Tools to do what it wants in a chat.

    https://github.com/jason-s13r/qotbot

    Ask for a poll, it makes one by combining tools.

    Wasn't interested the clawdbot stuff where giving an llm bash access and all the other credentials is the norm.

    Have had two of these bots talking amongst themselves and holy shit the chat goes weird fast.

    2 votes
  9. dylz
    Link
    I am working on an ongoing project of implementing FieldStation42, which is a simulation of Cable TV any way you want to build it. The end goal is a recreation of my local TV stations complete...

    I am working on an ongoing project of implementing FieldStation42, which is a simulation of Cable TV any way you want to build it. The end goal is a recreation of my local TV stations complete with commercials and bumps from a specific period in the 90s. Playing on a CRT TV

    Most of my time is spent looking for old media and commercials, sorting and creating fictional TV schedules.

    Initially I had set too many rules for myself and stalled out a bit, but recently have made some encouraging progress and seeing it up and working has me re-energized.

    This project has been fulfilling because of the research aspects, and hunting for old VHS tapes. I have had many great discussions with people about how they remember certain stations or when programs aired or what shows I am missing.

    1 vote