• 11 Posts
  • 338 Comments
Joined 6 years ago
cake
Cake day: May 31st, 2020

help-circle
  • Ephera@lemmy.mltoRust@programming.devAnnouncing Rust 1.95.0
    link
    fedilink
    English
    arrow-up
    5
    ·
    23 days ago

    cfg_select! looks good. cfg_if! always added so much boilerplate that it rarely reduced complexity, even though it offered a valid solution for when you had a complex condition in one branch and then not() that in the other. It was also annoying that you had to add a dependency for those rare cases.

    We did also move away from cfg_if!, though, because IDE tooling would mostly just quit working within the cfg_if! macro call. Will have to see, if that’s better with this compiler built-in, or if the IDE tooling gets updated to support that well.



  • I always thought openSUSE’s package manager zypper has quite a few neat ideas:

    • It offers two-letter shorthands for subcommands, so zypper installzypper in, updateup, removerm.
    • When it lists what packages it will install or remove, it will list them with the first letter highlighted in a different color, kind of like so: fish git texlive
      This makes it really easy to visually scan the package list, and since it’s sorted alphabetically, it also makes it easier to find a particular package you might be looking for.
      And while there’s separate lists for packages to be added vs. updated vs. removed, they also color those letters in green vs. yellow vs. red, so you can immediately see what’s what.
    • When it lists items (other than packages), it prints an ID number, too.
      So, zypper repos gives you a list of your repositories, numberered 1, 2, 3 etc., and then if you want to remove a repo, you can run zypper removerepo 3.
    • When you run a zypper search, it prints the results in a nicely formatted table.

    Documentation: https://doc.opensuse.org/documentation/tumbleweed/zypper/



  • 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.





  • 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…






  • Most developers I’ve looked at would happily just paste the curl|bash thing into the terminal.

    I mean, I typically see it used for installing applications, and so long as TLS is used for the download, I’m still not aware of a good reason why you should check the Bash script in particular in that case, since the application itself could just as well be malware.

    Of course, it’s better to check the Bash script than to not check it, but at that point we should also advise to download the source code for the application, review it and then compile it yourself.
    At some point, you just have to bite the bullet and I have not yet seen a good argument why the Bash script deserves special treatment here…

    Having said that, for cases where you’re not installing an application, yeah, reviewing the script allows you to use it, without having to trust the source to the same degree as you do for installing an application.


  • One thing that will become important pretty quick if you continue making these scripts is that it’s almost always better to wrap your variables in quotes - so it becomes yt-dlp -x “$a.

    Oh man, this reminds me of the joke that any program that’s more complex than Hello World has bugs – and folks still don’t even agree how to spell “Hello, World!”.

    Of course, Bash is a particular minefield in this regard…


  • Ephera@lemmy.mltoLinux@lemmy.mlKDE Plasma 6.6 released
    link
    fedilink
    English
    arrow-up
    1
    ·
    3 months ago

    Yeah, I’ve done that occasionally, too, but it adds a load of friction for moving windows between screens, in particular also when un-/replugging the screen, so it’s still painful enough that I don’t bother with a second screen.

    I guess, it also plays a role that I do use lots of workspaces, so it’s 1) extra painful and 2) I don’t have as big of a need for a second screen, since I can just switch out what first screen displays very quickly.


  • Ephera@lemmy.mltoLinux@lemmy.mlKDE Plasma 6.6 released
    link
    fedilink
    English
    arrow-up
    6
    ·
    3 months ago

    Oh boy, feature freeze for Ubuntu 26.04 is on Thursday. Hopefully, they still include this update.

    My work laptop unfortunately comes with Kubuntu LTS and I desperately want the virtual-desktops-only-on-the-primary-screen feature on there. Currently, I’m the guy that actively disables all but one screen, because my workflow does not work at all with the secondary screen switching in sync with the primary screen.


  • Ephera@lemmy.mltoLinux@lemmy.mlKDE Plasma 6.6 released
    link
    fedilink
    English
    arrow-up
    1
    ·
    3 months ago

    I still wouldn’t assume it to actually go further than that. It’s a limitation of the EWMH standard, which is used for controlling the placement of windows.

    I don’t have in-depth knowledge of the standard, but I assume, it can only represent 1 desktop as the active desktop and stuff like that.
    Maybe you could try to be clever by e.g. always reporting the active desktop of the active screen and stuff like that, but yeah, no idea if you can do that for all aspects of the standard, and whether applications will still behave as expected.