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

9 comments

  1. [2]
    skybrian
    Link
    I'm still having fun building software with exe.dev. I can even do it on my phone sometimes, since I don't type much. The main downside is that it's harder to actually look at code on a small...

    I'm still having fun building software with exe.dev. I can even do it on my phone sometimes, since I don't type much. The main downside is that it's harder to actually look at code on a small screen, but it also gives me a chance to test the website on mobile.

    I'm working on a personal links website, which is coming along nicely. One advantage of looking at the code less is that I think more about features - what should the website really do? And it helps that I'm actually using it.

    It was written in Go originally, because that's the default for exe.dev, but I decided to migrate to Deno (Typescript) so I can share common code with client side. So, I asked Shelley to write a migration plan and then to implement it with some adjustments. So far, so good. I probably wouldn't have considered it without a coding agent to help.

    Claude was down this morning so I tried GPT-5, which felt like a downgrade.

    6 votes
    1. ali
      Link Parent
      I've felt like ChatGPT has been ok in coding, but for general chat's it's basically started to feel like a parrot. Basically just repeating back what you say only. It still helped me with...

      I've felt like ChatGPT has been ok in coding, but for general chat's it's basically started to feel like a parrot. Basically just repeating back what you say only. It still helped me with brainstorming occasionally, but often especially in voice mode it just felt like it rephrased what i've said

      1 vote
  2. talklittle
    Link
    I got Docker working for a Phoenix Framework app, both production and development environments. Been a while since I've used Phoenix, but recently came back to it and it's about time I got it...

    I got Docker working for a Phoenix Framework app, both production and development environments. Been a while since I've used Phoenix, but recently came back to it and it's about time I got it working properly with Docker. (This isn't some special or difficult task, just something I hadn't bothered with before.)

    Phoenix generates a production-ready Dockerfile using mix phx.gen.release --docker but it's not meant to be used for development: missing hot reload, and it's slower, and until recently mix release was breaking due to an unsupported regex in the config/dev.exs.

    Production Dockerfile (from phx.gen.release --docker template)
    # Find eligible builder and runner images on Docker Hub. We use Ubuntu/Debian
    # instead of Alpine to avoid DNS resolution issues in production.
    #
    # https://hub.docker.com/r/hexpm/elixir/tags?name=ubuntu
    # https://hub.docker.com/_/ubuntu/tags
    #
    # This file is based on these images:
    #
    #   - https://hub.docker.com/r/hexpm/elixir/tags - for the build image
    #   - https://hub.docker.com/_/debian/tags?name=trixie-20260112-slim - for the release image
    #   - https://pkgs.org/ - resource for finding needed packages
    #   - Ex: docker.io/hexpm/elixir:1.19.5-erlang-28.2-debian-trixie-20260112-slim
    #
    ARG ELIXIR_VERSION=1.19.5
    ARG OTP_VERSION=28.2
    ARG DEBIAN_VERSION=trixie-20260112-slim
    
    ARG BUILDER_IMAGE="docker.io/hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}"
    ARG RUNNER_IMAGE="docker.io/debian:${DEBIAN_VERSION}"
    
    FROM ${BUILDER_IMAGE} AS builder
    
    # install build dependencies
    RUN apt-get update \
      && apt-get install -y --no-install-recommends build-essential git \
      && rm -rf /var/lib/apt/lists/*
    
    # prepare build dir
    WORKDIR /app
    
    # install hex + rebar
    RUN mix local.hex --force \
      && mix local.rebar --force
    
    # set build ENV
    ENV MIX_ENV="prod"
    
    # install mix dependencies
    COPY mix.exs mix.lock ./
    RUN mix deps.get --only $MIX_ENV
    RUN mkdir config
    
    # copy compile-time config files before we compile dependencies
    # to ensure any relevant config change will trigger the dependencies
    # to be re-compiled.
    COPY config/config.exs config/${MIX_ENV}.exs config/
    RUN mix deps.compile
    
    RUN mix assets.setup
    
    COPY priv priv
    
    COPY lib lib
    
    # Compile the release
    RUN mix compile
    
    COPY assets assets
    
    # compile assets
    RUN mix assets.deploy
    
    # Changes to config/runtime.exs don't require recompiling the code
    COPY config/runtime.exs config/
    
    COPY rel rel
    RUN mix release
    
    # start a new build stage so that the final image will only contain
    # the compiled release and other runtime necessities
    FROM ${RUNNER_IMAGE} AS final
    
    RUN apt-get update \
      && apt-get install -y --no-install-recommends libstdc++6 openssl libncurses6 locales ca-certificates \
      && rm -rf /var/lib/apt/lists/*
    
    # Set the locale
    RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen \
      && locale-gen
    
    ENV LANG=en_US.UTF-8
    ENV LANGUAGE=en_US:en
    ENV LC_ALL=en_US.UTF-8
    
    WORKDIR "/app"
    RUN chown nobody /app
    
    # set runner ENV
    ENV MIX_ENV="prod"
    
    # Only copy the final release from the build stage
    COPY --from=builder --chown=nobody:root /app/_build/${MIX_ENV}/rel/myapp ./
    
    USER nobody
    
    # If using an environment that doesn't automatically reap zombie processes, it is
    # advised to add an init process such as tini via `apt-get install`
    # above and adding an entrypoint. See https://github.com/krallin/tini for details
    # ENTRYPOINT ["/tini", "--"]
    
    CMD ["/app/bin/server"]
    
    Development Dockerfile (manually adapted for dev)
    # Find eligible builder and runner images on Docker Hub. We use Ubuntu/Debian
    # instead of Alpine to avoid DNS resolution issues in production.
    #
    # https://hub.docker.com/r/hexpm/elixir/tags?name=ubuntu
    # https://hub.docker.com/_/ubuntu/tags
    #
    # This file is based on these images:
    #
    #   - https://hub.docker.com/r/hexpm/elixir/tags - for the build image
    #   - https://hub.docker.com/_/debian/tags?name=trixie-20260112-slim - for the release image
    #   - https://pkgs.org/ - resource for finding needed packages
    #   - Ex: docker.io/hexpm/elixir:1.19.5-erlang-28.2-debian-trixie-20260112-slim
    #
    ARG ELIXIR_VERSION=1.19.5
    ARG OTP_VERSION=28.2
    ARG DEBIAN_VERSION=trixie-20260112-slim
    
    ARG BUILDER_IMAGE="docker.io/hexpm/elixir:${ELIXIR_VERSION}-erlang-${OTP_VERSION}-debian-${DEBIAN_VERSION}"
    
    FROM ${BUILDER_IMAGE} AS builder
    
    # install build dependencies
    # and runtime dependencies (no multi-image for dev)
    RUN apt-get update \
      && apt-get install -y --no-install-recommends build-essential git \
         libstdc++6 openssl libncurses6 locales ca-certificates \
         inotify-tools \
      && rm -rf /var/lib/apt/lists/*
    
    # prepare build dir
    WORKDIR /app
    
    # install hex + rebar
    RUN mix local.hex --force \
      && mix local.rebar --force
    
    # set build and runner ENV
    ENV MIX_ENV="dev"
    
    # install mix dependencies
    COPY mix.exs mix.lock ./
    RUN mix deps.get --only $MIX_ENV
    RUN mkdir config
    
    # copy compile-time config files before we compile dependencies
    # to ensure any relevant config change will trigger the dependencies
    # to be re-compiled.
    COPY config/config.exs config/${MIX_ENV}.exs config/
    RUN mix deps.compile
    
    RUN mix assets.setup
    
    COPY priv priv
    
    COPY lib lib
    
    # Compile the release
    RUN mix compile
    
    COPY assets assets
    
    # compile assets
    RUN mix assets.deploy
    
    # Changes to config/runtime.exs don't require recompiling the code
    COPY config/runtime.exs config/
    
    # Set the locale
    RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen \
      && locale-gen
    
    ENV LANG=en_US.UTF-8
    ENV LANGUAGE=en_US:en
    ENV LC_ALL=en_US.UTF-8
    
    CMD ["mix", "phx.server"]
    

    Basically changing the multi-stage build to a single stage, and removing some prod-specific stuff toward the end, such as removing mix release. Installing inotify-tools for hot reload.

    Anyway I'm happy to be back using Phoenix Framework. I'd been trying out FastAPI in Python and it's pretty good, but then I had to add a webapp component and chose Svelte, which pulled Vite along as a builder. Then it started feeling messy having to manage multiple layers of builders and routers. Phoenix is so elegant and I'm happy I decided to come back to it. It covers both the API and webapp components in a very clean way.

    4 votes
  3. thenetnetofthenet
    Link
    I'm continuing to build out my tiny homelab and I recently installed Watchtower to keep my Docker containers up to date, and Karakeep to capture all of the webpages that I might read again at some...

    I'm continuing to build out my tiny homelab and I recently installed Watchtower to keep my Docker containers up to date, and Karakeep to capture all of the webpages that I might read again at some point in the distant future.

    Karakeep has AI tagging, so to see how that works I decided to get an edge device and then I installed Ollama in a container, rather than using some external LLM provider like Open AI. Not the fastest thing, but I'm glad Karakeep can handle the AI tagging asynchronously so I don't have to wait and watch it doing its thing.

    3 votes
  4. knocklessmonster
    Link
    I'm quite proud of myself: I just rebuilt my entire homelab. I'm looking to get more hands-on on the Linux side of things as it's something I've found I'm lacking at work. Main goals are to...

    I'm quite proud of myself: I just rebuilt my entire homelab. I'm looking to get more hands-on on the Linux side of things as it's something I've found I'm lacking at work. Main goals are to finally get elbow-deep on podman and kubernetes (walk with minikube, then build nodes/scaling/etc).

    I did the following yesterday and today:

    1. Replaced Proxmox on my Minisforum mini-pc server.
    2. Complained at Copilot about my network setup when it revealed I can't actually use macvlan for managing container traffic when presented with multiple MACs off a single port.
    3. Verified this independently (Linksys AX1500 AP/Router).
    4. Installed OpenWRT to my Raspberry pi 5.
    5. Spent three hours with Copilot going over my OpenWRT setup to learn how it works so I could build out my new homelab subnet.

    It works. I pushed a test nginx container on a specific port and it worked with no trouble. Networking has always been my weak point, but I apparently knew everything I needed to conceptually to put this together, but hadn't actually gotten to build this infrastructure before. It was a lot of fun.

    3 votes
  5. imneme
    Link
    In terms of open-source stuff people can use, I made Web Book a thing you can use to put a book (e.g., a novel) up on the web with static site and a simple reader interface. Nothing super fancy,...

    In terms of open-source stuff people can use, I made Web Book a thing you can use to put a book (e.g., a novel) up on the web with static site and a simple reader interface. Nothing super fancy, but quite nice. I did use a bit of AI to help throw it together.

    Also I'm continuing to work on Inquizitivity, a home-grown learning management system for the courses I teach. It's designed to be the system that I as a CS professor want to use, creating a mostly-static site with minimal support infrastructure required. So it has sources for pages in markdown, on-line lessons that track student progress, questions for enagement with nice feedback (LLM-based for free-form answers), and needs minimal infrastructure. It's used for multiple courses at my institution, but not quite ready for broader usage yet. But I do so like it; I love that if it doesn't do something, I can whip up some code and then it does. Today I improved support for variables (you know, like SEMESTER) where you can now say “NEXTWEEK = WEEK + 1” and that works.

    3 votes
  6. IsildursBane
    Link
    So had my Proxmox server fail again this week so was doing work on that. The boot drive had issues and got corrupted, and I was unable to restore it. So I ended up doing a clean install of...

    So had my Proxmox server fail again this week so was doing work on that. The boot drive had issues and got corrupted, and I was unable to restore it. So I ended up doing a clean install of proxmox, which might have been necessary anyways since I was running a few versions behind. Luckily storage for my NAS vm was on a separate drive, so had no data loss there.

    Looking into it, it seems likely that my boot drive is failing and should be replaced soon. Unfortunately, SSD drives have also been hit with the chip shortage, and to get a reputable SSD manufacturer I am looking at $100 CAD for a 500GB SSD, so will try and put it off for a bit to see if SSD prices stabilize a bit.

    2 votes
  7. Toric
    Link
    I finished* the project ive been working on and off on for 6 months now, crabroll! In the past 2 weeks, I got it working over MQTT, and then got it talking to home assistant, and the board has...

    I finished* the project ive been working on and off on for 6 months now, crabroll! In the past 2 weeks, I got it working over MQTT, and then got it talking to home assistant, and the board has been sitting on my desk without any unrecoverable errors for 5 days now.

    Next step is to design and print the mechanical parts to actually hook it up to my window blinds, but before that I have to actually assemble my voron...

    *(as in, got v0.1.0, see github issues for all the work that still needs doing)

    1 vote
  8. ali
    Link
    I've been working on a budgeting App for myself and my girlfriend (and will share it with others who need multi currency budgeting) we've usually budgeted by hand and I was just really bad at it....

    I've been working on a budgeting App for myself and my girlfriend (and will share it with others who need multi currency budgeting)

    we've usually budgeted by hand and I was just really bad at it. Since I also have ADHD I need some zero friction way to do mundane things. So I have been building it to work as easy as possible. I am using FunctionGemma, which is a small, fine tunable LLM based on Gemma3.
    I find it super cool to work with, since the "use GPT and you're great" approach is quite lame in my opinion.

    It runs extremely quickly on the phone too - 270M Paramters. Really excited since this is my first venture into apps in a few years.

    Other than that, many of you will hate this: I have bought Meta Ray Bans. Callback to me actually posting an article about it in 2021

    They have no AR support - which is ok for now. I mainly bought this for POV filming which I enjoy a lot here in Bangkok. Of course it's extremely weird too, and I am not someone who films people without asking for their permission. Whether filming in public (i.e. just people passing by as you walk) classifies is a different discussion maybe not for this thread.
    Why I bought them as well is: they have released an SDK and I feel like there can be a lot of potential to work with this to build useful tools. I'm now just trying to get the SDK to work, feed video to my phone, and then see what kind of funny, weird, or useful tools I could build with it. Without a display, interactions are probably limited, but I can start with it, assuming I'll have a phone as an Output and later move to AR glasses.
    I have to say though, I do wonder whether these things are "the next big thing" that some people try to tout them as. I don't think society will like having everyone walk around with a camera filming everyone. I myself basically wore it as a camera - putting it on or off, depending on whether I want to film at that moment.
    Live subtitles for deaf people are one use case I've seen mentioned, and of course something like be my eyes greatly benefits from these glasses. Anyone else here work with AR?

    1 vote