• 0 Posts
  • 16 Comments
Joined 1 year ago
cake
Cake day: July 5th, 2023

help-circle

  • SQL is horrible as a language to read or write. There’s a million different variants, because it lacks so many basic things. And when used in other code, you generally end up string concatinating one language in another language, with all the HORRIBLE bugs something like that brings about.

    Imagine Backend People said we should just write adhoc Javascript for the frontend by concatinating the “correct” code in the backend.





  • Ironically, I learned Rust first, and later looked at Go. I found a lot of the syntax needlessly “different”. That being said, it’s still a decent language. Point being, a lot of the weirdness subsides once you understand why it’s there.

    Personally, I don’t actually care about the lifecycle and memory management stuff. What I like about Rust is:

    • An enforced error type that is very convenient to use with the ? operator. No more err != nil spam, but same amount of safety
    • ADTs with a host of wonderful features, like exhaustive match statements. Go enums are horrendously basic, let’s be honest
    • NO NIL!! Non existence is expressed with an Option type that, like the error type, comes with many conveniences
    • Generics from the start, meaning you don’t have older code that throws away type safety anywhere
    • Traits/Interfaces can be implemented for foreign/external types and types can implement external interfaces (duh)
    • Great tooling, good formatting tools, good LSP, that kind of stuff. Golang has that too

    Why learn Rust? For the same reason everyone should learn different languages. To learn new concepts and see new perspectives on old problems. It’ll make you a better developer even in your previous languages.




  • For bigger projects, anything with MANDATORY types is a must for me. Optional, not compiler checked hinting doesn’t cut it.

    Not that i hate the language, but I do hate the tooling around it. I don’t think I’ve ever had a pleasant experience with setting up a Python project. And all the data stuff is just wrappers for code in other languages, making the packaging story even uglier, even harder.


  • In my experience it HEAVILY depends on the language you’re using. Nothing beats Intellij for Java or Kotlin, but Rust and Go feel at home in any editor.

    I know that LSPs and DAPs somewhat take care of these, but the following are often easier in IDEs:

    • Refactorings, including really smart language specific ones
    • Support for fancy frameworks. For example, Intellij can analyse all annotations for Dependency Injection or Spring stuff, and will then tell you exactly how everything connects on a higher “framework” level. Arguably, this is a solution to a problem Enterprise Java created
    • Debugging is easier
    • In general, stuff works “well enough” out of the box. As a fan of Neovim, I’ve definitely been frustrated a lot the first time I had to set something up
    • Fancy integrations, for example linking frontend code calling backend code directly, or an entire little Database Manager builtin, with magic SQL code completion



  • We used to have a Python guy at my work. For a lot of LITTLE ETL stuff he created Python projects. In two projects I’ve had to fix up now, he used different tooling. Both those toolings have failed me (Poetry, Conda). I ended up using our CI/CD pipeline code to run my local stuff, because I could not get those things to work.

    For comparison, it took me roughly zero seconds to start working on an old Go project.

    Python was built in an era where space was expensive and it was only used for small, universal scripts. In that context, having all packages be “system-wide” made sense. All the virtual env shenanigans won’t ever fix that.




  • Dungeon Fighter is a very silly coop game that might appeal to people that don’t like board games normally. You’re a group of adventurers and have to move through a dungeon. You roll the dice on a big bullseye board. The twist is that all abilities or traps etc. are in the form of modifying how you roll your dice. So you might have to roll the dice from below the table, or while jumping etc.