talklittle's recent activity

  1. Comment on Type inference of all constructs and the next 15 months of the Elixir programming language in ~comp

    talklittle
    Link
    They're making huge progress on automated type checks in the Elixir compiler. As with many dynamic languages, Elixir is pretty fast to write the first time. But error-prone refactoring is the...

    They're making huge progress on automated type checks in the Elixir compiler. As with many dynamic languages, Elixir is pretty fast to write the first time. But error-prone refactoring is the widely recognized shortcoming, because it's easy to introduce bugs where function calls and signatures no longer match up. That's a big reason why test-driven design is widely used with dynamically typed languages.

    The people working on Elixir have known this for years, and have been working for years on some novel approaches in the compiler to infer types at compile time.

    Now in the age of LLM programming, type inference is even more of a necessity, because an LLM could get the code subtly wrong the first time, and a coding agent needs a way of checking its work. Ideally as a first step before resorting to generating an entire unit test suite. Excessive unit tests are also an additional maintenance burden (and LLM tokens = money).

    5 votes
  2. Comment on What programming/technical projects have you been working on? in ~comp

    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. Comment on What are you reading these days? in ~books

    talklittle
    Link
    I finally read Lord of the Flies, having never read it in high school. I see why it's a must read. The author has masterful control of descriptive visual language. I could vividly picture the...

    I finally read Lord of the Flies, having never read it in high school. I see why it's a must read. The author has masterful control of descriptive visual language. I could vividly picture the island, the boys, the ocean, the rocks, the creatures, the forest, and the sky. It was very interesting watching the amount and intensity of metaphor gradually increase over the course of the book, which matched up with the events of the story.

    I'm not sure if this was a great time to read this book though, because the book easily made me feel dread from beginning to end, and a pretty large amount of despair by the end. I was hoping to come away with a smidgen of hope, but I did not. On the other hand maybe this is the perfect time to read this book. Not recommended to anyone having mental health struggles though.

    4 votes
  4. Comment on I just noticed a slightly easier way to link tags in comments in ~tildes

    talklittle
    Link Parent
    The Tildes server setup has made huge strides in the past year, largely thanks to @Bauke especially with the Tildes Setup Guide, which is actually a collection of Ansible scripts:...

    The Tildes server setup has made huge strides in the past year, largely thanks to @Bauke especially with the Tildes Setup Guide, which is actually a collection of Ansible scripts: https://gitlab.com/tildes-community/tildes-setup-guide

    So it should be up-and-running on a bare VPS (Linode, DigitalOcean) in under half an hour.

    Docker as a development environment also pretty much works. That might be a preferable option if you're just playing around with it and don't need TLS certificates and stuff. Running dev environment: https://docs.tildes.community/vagrant/index.html

    The reason I've said it's not recommended is that some admin actions still require manual database fiddling. I think that includes stuff like refilling users' invitations, bulk removing comments, and likely some other actions. The current state is definitely enough to play around with though, and develop new features and bugfixes.

    5 votes
  5. Comment on CGA-2026-01 🕹️⛵🛡️ INSERT CARTRIDGE 🟢 The Legend of Zelda: The Wind Waker in ~games

    talklittle
    Link Parent
    You weren't kidding about the music! I haven't played Wind Waker and not sure if I'll participate but I wanted to check out the soundtrack. Instantly fell in love with the main menu music. It's...

    You weren't kidding about the music! I haven't played Wind Waker and not sure if I'll participate but I wanted to check out the soundtrack. Instantly fell in love with the main menu music. It's the traditional Zelda menu music from e.g. Link to the Past, which is already great; but at 0:25 the string synth kicks in to give it the ocean flavor. Definite Super Mario Bros. 3 Water Land vibes but with Zelda's mystical/pensive/subdued feel. Really nice.

    5 votes
  6. Comment on Merry Christmas! in ~talk

    talklittle
    Link Parent
    About those eight days of Honda car. How was the trip?

    About those eight days of Honda car. How was the trip?

    3 votes
  7. Comment on Minky Momo to release first new OAV in thirty-one years in ~anime

    talklittle
    Link Parent
    Old Tilders unite! I'm on board for the Samurai Troopers—which I know as Ronin Warriors—reboot, with tempered expectations of course. Loved that show back then. Never saw Minky Momo either, but...

    Old Tilders unite! I'm on board for the Samurai Troopers—which I know as Ronin Warriors—reboot, with tempered expectations of course. Loved that show back then. Never saw Minky Momo either, but pretty sure I've heard plenty of "Love Love Minky Momo" (Eurobeat?) covers. Good times.

    2 votes
  8. Comment on Tildes login session management? in ~tildes

    talklittle
    Link Parent
    On iOS, logging out in Three Cheers does attempt a server request, and that means the session is invalidated on the server side. On Android the app behaves differently: it does not do a...

    On iOS, logging out in Three Cheers does attempt a server request, and that means the session is invalidated on the server side.

    On Android the app behaves differently: it does not do a server-side logout. This is because the account is kept in the system account manager to make it easy to log in and out quickly. I probably did it this way on Android to make it easier on myself when developing and testing the app. Also iOS doesn't have a direct equivalent to Android's account manager API.

    8 votes
  9. Comment on Tildes login session management? in ~tildes

    talklittle
    Link
    Doesn't directly answer your question but Tildes login sessions expire after a year. Changing password doesn't appear to invalidate sessions.

    Doesn't directly answer your question but Tildes login sessions expire after a year.

    Changing password doesn't appear to invalidate sessions.

    14 votes
  10. Comment on Save Point: A game deal roundup for the week of December 14 in ~games

    talklittle
    Link
    For anyone interested in game dev there's the "Learn Godot in 2025" video tutorial series through Humble Bundle:...

    For anyone interested in game dev there's the "Learn Godot in 2025" video tutorial series through Humble Bundle: https://www.humblebundle.com/software/learn-godot-in-2025-complete-course-bundle-software-encore

    Minimum $25 for about 30 video courses, each a couple hours. I bought it a few months ago and have been thoroughly enjoying it. The instructor does a fantastic job making the Godot editor accessible, where I'd previously found it often daunting even for simple tasks. The pacing of the lessons is very good IMO.

    8 votes
  11. Comment on JustHTML is a fascinating example of vibe engineering in action in ~comp

    talklittle
    Link
    Incidentally I seem to recall you had been working on some sort of unit testing framework. (Forgive me but I don't remember the details.) Just out of curiosity does that have any relevance to...

    Incidentally I seem to recall you had been working on some sort of unit testing framework. (Forgive me but I don't remember the details.) Just out of curiosity does that have any relevance to what's being discussed here with the vibe engineering? Would it be useful to hook up something like that to an LLM to have it generate tests as a complementary tool? Or would an LLM instead replace a framework like that?

    3 votes
  12. Comment on What creative projects have you been working on? in ~creative

    talklittle
    Link Parent
    That's a cool video! I'm remembering some of the vivid imagery from what I read of your book a while back. I'd be curious to see the new updates of the story.

    That's a cool video! I'm remembering some of the vivid imagery from what I read of your book a while back. I'd be curious to see the new updates of the story.

    1 vote
  13. Comment on What the hell are we doing with hierarchical tags? in ~tildes

    talklittle
    Link
    The "tag aliases" feature has been brought up several times before as a solution to this. So the current hierarchical tags might be chosen as the "canonical" tag and then aliases would exist, so...

    The "tag aliases" feature has been brought up several times before as a solution to this. So the current hierarchical tags might be chosen as the "canonical" tag and then aliases would exist, so we could have both instead of forced to choose one over the other.

    This is one of the things I've been wanting to add when I have time/energy to work on Tildes properly again. As an aside: I don't need to explain to the techie crowd here, but the software industry is in many instances moving to an extremely demanding—and on an individual basis likely unsustainable—pace. So the maintainers here are also swamped with work, and of course non-work life things as well.

    10 votes
  14. Comment on This site is fast in ~tildes

  15. Comment on Gloria Estefan: Tiny Desk Concert (2025) in ~music

    talklittle
    Link
    I listened to this yesterday. What a feel-good performance! She gave nice commentary. Toward the end it seemed like her storytelling energy was running out but even so, they brought the energy for...

    I listened to this yesterday. What a feel-good performance! She gave nice commentary. Toward the end it seemed like her storytelling energy was running out but even so, they brought the energy for that last song!

    2 votes
  16. Comment on Itoki Hana - ぼくの死因 Cause of My Death - Singing with Piano (2025) in ~music

    talklittle
    Link
    A lonely song. I like the vocals. It's a simpler version of a 2021 song which had more arrangement. I prefer this piano version. She also sang Skies Forever Blue (bittersweet video game themed...

    A lonely song. I like the vocals.

    It's a simpler version of a 2021 song which had more arrangement. I prefer this piano version.

    She also sang Skies Forever Blue (bittersweet video game themed song) and The Greatest Living Show (abuse themed, beautiful hand animated music video) around 2023, collaborating with Toby Fox of Undertale video game fame.

    3 votes
  17. Comment on 2025 Nobel Prize – This year's Nobel Prize announcements will take place between 6th - 13th October 2025 in ~science

    talklittle
    Link Parent
    [Offtopic] Oops didn't see you were already posting the individual prizes in the comments here. Oh well, I thought the quantum one was interesting so doesn't hurt to have as a top-level topic IMO.

    [Offtopic] Oops didn't see you were already posting the individual prizes in the comments here. Oh well, I thought the quantum one was interesting so doesn't hurt to have as a top-level topic IMO.

    1 vote
  18. Comment on 2025 Physics Nobel awarded to three scientists for work on quantum computing (in the 1980s) in ~science

    talklittle
    Link
    The timing makes sense given how quantum computing is getting more attention than ever. Kind of funny the committee chose work from 40 years ago in spite of all the supposed progress being made...

    The timing makes sense given how quantum computing is getting more attention than ever. Kind of funny the committee chose work from 40 years ago in spite of all the supposed progress being made today. Maybe a lot of today's quantum research is difficult to objectively validate and therefore controversial?

    "To put it mildly, it was a surprise of my life," said Professor John Clarke, who was born in Cambridge, UK and now works at the University of California in Berkeley.

    Michel H. Devoret was born in Paris, France and is a professor at Yale University while John M. Martinis is a professor at University of California, Santa Barbara.

    [...] The Nobel committee recognised breakthrough work performed by the three men in a series of experiments in the 1980s on electrical circuits.

    In the words of the committee, "the discovery of macroscopic quantum mechanical tunnelling and energy quantisation in an electric circuit".

    5 votes