Professional software engineer, musician, gamer, stoic, democratic socialist

  • 3 Posts
  • 113 Comments
Joined 2 years ago
cake
Cake day: July 2nd, 2023

help-circle
  • I agree with the article’s ideas, but certain things about the execution bother me.

    1. calculate_order_total_for_customer. I’d just call it calculate_order_total. It’s clear than any order will have a customer, it’s in the type signature.
    2. is_user_eligible_for_discount. I’d call it user_is_eligible_for_discount. Because inevitably that function is getting called in an if statement, and you’d rather it read closer to proper English: if user_is_eligible_for_discount: ....
    3. “Designing for Tomorrow”. I agree that dependency injection is a valuable technique, but it’s not always strictly necessary and they seem to say you might as well always do it just in case. That’s counter to YAGNI. Make sure you have an immediate use case, or let future you do it if you end up needing it. It’s not hard to refactor something to inject a dependency.

  • As for actual coding, I use ChatGPT sometimes to write SDK glue boilerplate or learn about API semantics. For this kind of stuff it can be much more productive than scanning API docs trying to piece together how to write something simple. Like for example, writing a function to check if an S3 bucket is publicly accessible. That would have taken me a lot longer without ChatGPT.

    In short: it basically replaced google and stack overflow in my workflow, at least as my first information source. I still have to fall back to a real search engine sometimes.

    I do not give LLMs access to my source code tree.

    Sometimes I’ll use it for ideas on how to write specific SQL queries, but I’ve found you have to be extremely careful with this use case because ChatGPT hallucinates some pretty bad SQL sometimes.













  • Pretty sure my journey looked something like:

    1. Ubuntu for a while
    2. A furious bout of hopping experiments: Debian, ElementaryOS, Crunchbang, MX Linux, Fedora
    3. Arch for a bit, but it was too much struggle
    4. Ubuntu for a while, embracing the “vanilla” lifestyle
    5. Manjaro for a while. It seemed to solve my previous issues with vanilla Arch.
    6. EndeavourOS, basically a better Manjaro.
    7. NixOS, which had a significant learning curve but ultimately gives me the most control and repeatability for all of my machine configs. Still daily driving this on my desktop, router, and some web servers.
    8. Tried out Fedora Atomic on my old laptop out of curiosity. Installing packages was ultra slow. Workflows were too annoying.

    So I think the graph is actually pretty reflective of my own experience, aside from some of the specific distro choices during my peak ignorance phase, and obviously I ended up at NixOS which isn’t even on here.