

I’m not much of a fan of Debian, but in your position would still recommend it. You’ll have enough to learn about from just using it as a server. You can learn about potential advantages of other distros later…


I’m not much of a fan of Debian, but in your position would still recommend it. You’ll have enough to learn about from just using it as a server. You can learn about potential advantages of other distros later…


I always thought openSUSE’s package manager zypper has quite a few neat ideas:
zypper install→ zypper in, update → up, remove → rm.fish git texlivezypper 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.zypper search, it prints the results in a nicely formatted table.Documentation: https://doc.opensuse.org/documentation/tumbleweed/zypper/
Hmm, I don’t know about Pacman, but for example openSUSE’s zypper remove has a --clean-deps flag, which doesn’t exist on the other subcommands. So, it wouldn’t make sense to have it be zypper --remove --clean-deps…


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.


Ah yeah, I was thinking of the “Caused by” shenanigans, which it prints in addition to the stacktrace.


Other useful Debug implementations:
PathBuf and Path will give you the path with quotes and I believe, it escapes any non-UTF8 characters.std::time::Duration will give you reasonably formatted output, like Duration::from_millis(54321) will format as 54.321s, whereas Duration::from_millis(321) will format as 321ms. Not appropriate for every situation, but works pretty well for logging.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…


So, uh, if you’re already using jq, this should also format JSON:
echo "{\"key\":\"value\"}" | jq
😅
I just saw this on F-Droid, will need to test it, but sounds like it could be really good: https://f-droid.org/packages/lu.knaff.alain.saf_sftp
I’m hoping, it works like mounting or FUSE on proper Linux, where you can just use normal applications to transparently access network files. Then you’d be able to use any old file manager app to actually work with the files…
You probably just misread, but just to note that SFTP is different from SMB. They’re similar in purpose, but basically competing protocols…


I’m guessing, they mean JavaScript and WebAssembly in general…


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…
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.
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.
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.
It’s mentioned as the second point in “But that’s not all…”:
An optional new login manager for Plasma
Are you thinking of the volume icon in the systray? For that, it’s pretty standard that scrolling changes the volume, yeah. @muusemuuse@sh.itjust.works is talking about the volume of each individual application, though:
(I have hardly used Windows for the past decade, so no idea, if it has it.)


They cause a huge amount of load, deteriorating the service for everyone else. I’m also guessing the time ranges in the graph, where there’s no data, is when OP’s server crashed from the load and had to restart.
That kind of shit can easily trigger alerting and will look like a DDoS attack. I would be pissed, too, if I dropped everything to see why my server is going down and it’s not even proper criminals, but rather just some silicon valley cunts.
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 thennot()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 thecfg_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.