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

  • 5 Posts
  • 175 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.
















  • If you can achieve the desired UX on web, I see few reasons to build a native app. But of course it can be hard to work with web technology sometimes; Javascript and WASM can’t do everything and they aren’t the best developer experience compared to more moderns languages.

    Even for offline usage, there is increasing support for progressive web apps. For example, I don’t even need to be connected to the internet to use Exaclidraw after I’ve loaded the app once and installed it as a PWA.

    Then there are times when you simply need access to native platform APIs. SQLite is a a very important technology that isn’t easily used from a web app. Most of the powerful APIs you get from an OS like the file system or graphics APIs are extremely watered down for the web.