• 40 Posts
  • 2.03K Comments
Joined 6 years ago
cake
Cake day: May 31st, 2020

help-circle

  • Yeah, this is one of those issues that I feel separates the seniors from the, uh, less experienced seniors. (Let’s be real, as a junior, you know jackshit about this.)

    Knowing when to use an ORM, when to use SQL vs. NoSQL, all of that is stuff you basically only learn through experience. And experience means building multiple larger applications with different database technologies, bringing them into production and seeing them evolve over time.

    It takes multiple years to do that for one application, so you need a decade or more experience to be able to have somewhat of an opinion.
    And of course, it is all too easy to never explore outside of your pond, to always have similar problems to solve, where an SQL database does the job well enough, so a decade of experience is not a guarantee of anything either…




  • I do agree, yeah, although I can certainly also understand LISP fans being annoyed that someone created a custom DSL for something that is adequately solved by the LISPs. I’m also certainly not enamored with the Nix syntax myself, but do find it easier to parse than a million parentheses.

    But yeah, ultimately the complexity of Nix and Guix isn’t in the particular symbols you type out. The complexity comes from them being expression-based (which does make sense for the use-case, but isn’t as familiar as e.g. imperative languages), as well as just having to learn tons of modules for the different things you want to configure…


  • Wikipedia seems to do a decent enough job defining it:

    Authoritarianism is a political system characterized by the rejection of political plurality, the use of strong central power to preserve the political status quo, and reductions in democracy, separation of powers, civil liberties, and the rule of law.

    But basically, my point is:

    • If your government represents the people, then it is possible for your people to elect authoritarianism, especially if they are unhappy, like the meme describes, and/or when there’s foreign nations trying to destabilize the system.
    • If your government does not represent the people, then it is likely to devolve into authoritarianism on its own, because individuals or individual groups will want to assume all power and limit the rights of others.

    Basically, my opinion is that politics is a constant work in progress, no matter the political system.



  • Don’t think the original LISP is used much anymore, but there’s various dialects like Scheme, Racket and Clojure.

    Some examples where it’s used, off the top of my head:

    • Lilypond for when you need your sheet music to be turing-complete. Uses Scheme.
    • Emacs, for configuring the whole editor. (Has an own dialect, Elisp.)
    • GNU Guix, which uses Scheme for configuring the entire operating system.

    Obviously, you can also use them for general software development. A few years ago, I read of some project that used Clojure for a larger backend service, with the author gushing all over the place.
    Some folks are really passionate about the LISPs, but yeah, not terribly popular in the corporate world…




  • I’ve kind of standardized on writing it as “Failed to bar when beebbooping, while fadoodling.”

    Maybe a more concrete example:

    Failed to write file when persisting audio, while recording. Caused by: Permission denied.

    The while-part is optional, in case you’ve got a larger context.
    Well, so is the rest of it, really. I may just write “Error when beebbooping”, if I believe the error from .bar() to describe itself rather well. Error handling is hard. 🫠

    But yeah, you kind of have to describe that an error occurred, rather than purely describing what you want to do, because anyhow doesn’t prefix it or such.







  • In my experience, the biggest problem is that maintainable code necessarily requires extending/adapting existing structures rather than just slapping a feature onto the side.

    And if we’re not just talking boilerplate, then this necessarily requires understanding the existing logic, which problems it solves, and how you can mold it to continue to solve those problems, while also solving the new problem.

    For that, you can’t just review the code afterwards. You have to do the understanding yourself.
    And once you have a clear understanding, it’s likely that the actual code change is rather trivial. At least more trivial than trying to convey your precise understanding to an LLM/intern/etc…



  • Everything I implement at work is open source because I don’t want to wait for a purchase approval.

    Just to say, though, I feel like 99% of the software we deploy is open-source for that exact reason. Projects generally start out small, where you try to evaluate some concept. You’re not gonna spend months to go through the purchase process of some proprietary tool, if you can help it…