• 18 Posts
  • 1.5K Comments
Joined 5 years ago
cake
Cake day: May 31st, 2020

help-circle

  • I don’t have experience with Jujutsu, but I always have the same problem with these alternative frontends, which is that I’d still want to be proficient with the original. If you need to look up how to fix something or you want to help others in your team or you want to script something, then the language to speak is simply the Git CLI.

    And I don’t feel like I even use the Git CLI enough where a different tool could be so much better that it’s worth learning both.
    Obviously, your priorities may differ, but yeah, that’s just always the reason for me why I prefer the Git CLI, even if it were objectively more difficult to use.



  • It’s mainly horrid, because it means you have to code extremely defensively (or I guess, use a different API).
    You can’t rely on new Date("not a date") aborting execution of your function by throwing an error. Instead, you have to know that it can produce an Invalid Date object and check for that. Otherwise a random NaN shows up during execution, which is gonna be extremely fun to try to find the source of.

    I understand that it’s implemented like that partially for historical reasons, partially because it’s often better to display “NaN” rather than nothing, but it’s still the sort of behavior that puts me in a cold sweat, because I should be memorizing all kinds of Best Practices™ before trying to code JavaScript.




  • I mean, for what it’s worth, I’m a seasoned dev and just did a run where I tried to answer everything as it makes sense to me (which is “throws an error” or “invalid date” for all of them) and I also got a score of 4/28.

    …and two of those points were given to me, because the quiz interpreted my answer differently than I meant it.

    In other words, this quiz exists to highlight that JavaScript’s Date functions make no sense.





  • I am not sure, but in Nix I declare the desired state of installed packages and configurations in an obscure language and the package manger takes care of that, right?

    The package manager is only one (very important) component of the system that applies your configuration, but otherwise this is a good description, yeah.

    Now the module declare reasonable default configurations? Like http server starts on system start and serves on port 80?

    Obviously, it depends on each individual module, but so far, I’ve mostly been fine with the defaults. Typically, it doesn’t modify the configuration, unless you explicitly specify a configuration value, therefore using the defaults that the software normally uses.

    Now you lost me at the Home-Manger. I can declare stuff in my home folder. OK, so for user-wide configuration? For packages and configuration in the user space? Or what?

    It’s for user-wide configuration, so what would generally be stored in dotfiles. For example, you can configure the search engines in Firefox. Or the panel layout in KDE.

    Home-Manager can also install packages, which is useful, because it can also be used standalone on other distributions. And in particular, you usually want to declare that a package should be installed and what user configuration it should use, all in one place…



  • Not if you never get your application into production…

    Insert tips head GIF here.

    I wish this was as much of a joke as I’m pretending. It’s so common for software projects to get cancelled that lots of tooling differences are just in terms of how long they let you not deal with long-term problems and how violently they do then explode into your face.

    For most of the development lifecycle of a GCed project, you’re gonna ignore memory usage. And if you’re lucky, it can be ‘solved’ by just plonking down a thiccer piece of hardware…


  • Yeah, it’s easy to underestimate how big of a leap it is from a toy application to real-world usability. Not just in terms of security, but also:

    • useful error messages
    • logging / monitoring
    • configuration
    • building a distribution
    • deploying in a reproducible way
    • documentation
    • integration with existing infrastructure
    • data migration strategies
    • etc.

    This adds a lot of complexity, so you’ll need to learn additional complexity to be able to deal with it at all:

    • modularization
    • version control systems
    • software specifications (via unit/integration tests)
    • team communication
    • helper tooling, like package managers, linters etc.

    Learning about all this stuff takes years, especially if no one in your surroundings has much experience with any of it either. Professors don’t have the time to gain or retain this experience, since they already have a different full-time job.

    My advice would be to get students to do internships or to take a job as a working student in a company/organization. Sometimes, these can be shitty for the students, but they can often provide significantly more real-world context than college ever could.





  • Ah, interesting. I went from garbage-collected languages where thinking about ownership might be useful for keeping complexity low and occasionally comes up when you manage lists of objects, but ultimately isn’t needed, to Rust where well-defined ownership is enforced by the language.

    So, I wasn’t aware that ownership is even as concrete of a thing in other languages…


  • I mean, they do have the infinite money glitch, a.k.a. being owned by Microsoft. If Microsoft’s investors think Fallout 5 will make its money back, it’s more lucrative to get started on it sooner rather than later.

    And it does also need to be said that they can’t keep remastering Fallout titles forever. They need to develop a new title at some point.

    Bethesda Game Studios has so far always only had one game in development at a time, which should be TES6 right now. If they are working on Fallout 5, we’re likely talking pre-production stages. So, it might very well be the case that the two remasters come out in roughly equal spacing before Fallout 5 comes out in a few years.