Ted Unangstās snarky (and entertaining) remarks this month:
#rdysiea
If this user/feed is violating this Pod's (yarn.meff.me) community guidelines as set out in the Abuse Policy, please report them immediately!
You are also free to Unfollow or Mute this user or feed. Muting will also remove that user/feed's content from your view and you will no longer see content from that user/feed anywhere.
@movq does not follow you (they may not see your replies!)
Ted Unangstās snarky (and entertaining) remarks this month:
(#5u7y23a) @lyse@lyse.isobeef.org
These are lists in your Inkscape example, right?
The font stuff? Yeah, thatās a scrollable list where you can select the current font.
Someone did a thing:
https://social.treehouse.systems/@ariadne/114763322251054485
Iāve been silently wondering all the time if this was possible, but never investigated: Keep doing X11 but use Wayland as a backend.
This uses XWaylandās ārootfulā mode, which basically just gives you a normal Wayland window with all the X11 stuff happening inside of it:
https://www.phoronix.com/news/XWayland-Rootful-Useful
In other words, put such a window in fullscreen and you (more or less) have good old X11 running in a Wayland window.
(For me, personally, this wonāt be the way forward. But itās a very interesting project.)
(#rdrpxzq) @prologic@twtxt.net Heyho, welcome back. š Did you guys have a nice trip? š
(#s5gi4wa) @lyse@lyse.isobeef.org Probably. :-) I just saw that the account on Yarn is also gone. Maybe it didnāt survive the crash earlier this year.
Just realized: One of the reasons why I donāt like āflat UIsā is that they look broken to me. Like the program has a bug, missing pixmaps or whatever.
Take this for example:
https://movq.de/v/8822afccf0/a.png
Iām talking about this area specifically:
https://movq.de/v/8822afccf0/a%2Dhigh.png
One UI element ends and the other one begins ā no ātransitionā between them.
The style of old UIs like these two is deeply ingrained into my brain:
https://movq.de/v/8822afccf0/b.png
https://movq.de/v/8822afccf0/c.png
When all these little elements (borders, handles, even just simple lines, ā¦) are no longer present, then the program looks buggy and broken to me. And Iām not sure if Iāll ever be able to un-learn that.
Alright, now for something fun! Taxes! Yay!
(#xhtmyhq) @lyse@lyse.isobeef.org Wow. Just like Skyrim! š
@mckinley@mckinley.ccās blog appears to have gone stale, hm.
(#5qxemxa) @kat@yarn.girlonthemoon.xyz Oh dear. š©
(#x6kfgia) @arne@uplegger.eu Stattdessen rutscht er seitlich vom Tisch? š¤Ŗ
(#vjop7ga) @lyse@lyse.isobeef.org I can confidently say that I donāt remember ever having seen fireflys. (Nor Firefly.) š³ Iām most surprised that you could count them. Naively, I would assume that these guys move around a lot and youād lose track of them?
Weāre entering the ātoo hot to thinkā-season in 3, 2, 1 ⦠and weāre live!
(#xabos5a) @lyse@lyse.isobeef.org
Theyāre all talks, not real hands-on trainings like you did.
I love listening to good, well-structured talks. Problem is, not everybody is a good speaker and many screw it up. š„“ Iām certainly not a great speaker, which is why I gravitate more towards āworkshopsā, in the hopes that people ask questions and discussions arise. Doesnāt always work out. 𤣠At the very least, I almost always have some other person connect to the projector/beamer/screenshare and then they do the stuff ā this avoids me being wwwwaaaaaaaaayyyy too fast.
We are usually drowned in stress and tight deadlines, hence events like today are super rare ⦠We used to do it more often until ~10 years ago.
Once a year the security guys organize a really great hacking event, though.
Oh dear, Iād love to participate in that. 𤯠That sounds like a lot of fun. (Why donāt we do this?!)
(#esedu3a) @prologic@twtxt.net This person isnāt particularly happy with this study:
https://mastodon.social/@grimalkina/114717549619229029
I donāt know enough about these things to form an opinion. 𫤠I sure wish it was true, though. š
I did a ālectureā/āworkshopā about this at work today. 16-bit DOS, real mode. š¾ Pretty cool and the audience (devs and sysadmins) seemed quite interested. š„³
The 8086 / 16-bit real-mode DOS is a great platform to explain a lot of the fundamentals without having to deal with OS semantics or executable file formats.
Now that was a lot of fun. š„³ Itās very rare that we do something like this, sadly. I love doing this kind of low-level stuff.
(#v7d7d4a) @lyse@lyse.isobeef.org Multi-Threading. Is. Hard. 𤯠And yes, that blog is great. š
(#a4qstxa) @lyse@lyse.isobeef.org lol ā I explicitly kept them in there so that the code is easier to understand for non-Rust people š¤Ŗš
(#a4qstxa) @prologic@twtxt.net Iād say: Yes, because in Go itās easier to ignore errors.
Weāre talking about this pattern, right?
f, err := os.Open("filename.ext")
if err != nil {
log.Fatal(err)
}
Nothing stops you from leaving out the if
, right? š¤
(#gg4pbpa) (Of course, if weāre talking about a project youāre doing for a customer and the customer keeps asking for new stuff, then youāre never done, and you have to think ahead and expect changes. Is that what they mean? š¤)
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. Thereās no ābestā 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didnāt write
- Donāt use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Donāt ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when youāre stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed ā but this doesnāt āaddā to the program. Donāt use āsoftware is never doneā as an excuse to keep adding and adding stuff to your code.
Okay, hereās a thing I like about Rust: Returning things as Option
and error handling. (Or the more complex Result
, but itās easier to explain with Option
.)
fn mydiv(num: f64, denom: f64) -> Option<f64> {
// (Letās ignore precision issues for a second.)
if denom == 0.0 {
return None;
} else {
return Some(num / denom);
}
}
fn main() {
// Explicit, verbose version:
let num: f64 = 123.0;
let denom: f64 = 456.0;
let wrapped_res = mydiv(num, denom);
if wrapped_res.is_some() {
println!("Unwrapped result: {}", wrapped_res.unwrap());
}
// Shorter version using "if let":
if let Some(res) = mydiv(123.0, 456.0) {
println!("Hereās a result: {}", res);
}
if let Some(res) = mydiv(123.0, 0.0) {
println!("Huh, we divided by zero? This never happens. {}", res);
}
}
You canāt divide by zero, so the function returns an āerrorā in that case. (Option
isnāt really used for errors, IIUC, but the basic idea is the same for Result
.)
Option
is an enum. It can have the value Some
or None
. In the case of Some
, you can attach additional data to the enum. In this case, we are attaching a floating point value.
The caller then has to decide: Is the value None
or Some
? Did the function succeed or not? If it is Some
, the caller can do .unwrap()
on this enum to get the inner value (the floating point value). If you do .unwrap()
on a None
value, the program will panic and die.
The if let
version using destructuring is much shorter and, once you got used to it, actually quite nice.
Now the trick is that you must somehow handle these two cases. You must either call something like .unwrap()
or do destructuring or something, otherwise you canāt access the attached value at all. As I understand it, it is impossible to just completely ignore error cases. And the compiler enforces it.
(In case of Result
, the compiler would warn you if you ignore the return value entirely. So something like doing write()
and then ignoring the return value would be caught as well.)
We really are bouncing back and forth between flat UIs and beveled UIs. I mean, this is what old X11 programs looked like:
https://www.uninformativ.de/desktop/2025%2D06%2D21%2D%2Dkatriawm%2Dold%2Dxorg%2Dapps.png
Good luck figuring out which of these UI elements are click-able ā unless you examine every pixel on the screen.
(#rx7b6fa) @kat@yarn.girlonthemoon.xyz I might give it a shot. š
Skimming through the manual: I had no idea that keeping the āupā cursor pressed actually slows you down at some point. š¤¦
(#xfrwj3q) @aelaraji@aelaraji.com I use Alt+.
all the time, itās great. š
FWIW, another thing I often use is !!
to recall the entire previous command line:
$ find -iname '*foo*'
./This is a foo file.txt
$ cat "$(!!)"
cat "$(find -iname '*foo*')"
This is just a test.
Yep!
Or:
$ ls -al subdir
ls: cannot open directory 'subdir': Permission denied
$ sudo !!
sudo ls -al subdir
total 0
drwx------ 2 root root 60 Jun 20 19:39 .
drwx------ 7 jess jess 360 Jun 20 19:39 ..
-rw-r--r-- 1 root root 0 Jun 20 19:39 nothing-to-see
(#rx7b6fa) @kat@yarn.girlonthemoon.xyz I like the animations in your version much better than the ones from ExtremeTuxRacer. š And thereās no little dance at the end of a race!
(#y36ebpa) I also just noticed that the performance issue doesnāt affect all games. š¤ Sigh, Iāll just downgrade for the time being. Not in the mood to fiddle with this.
(#y36ebpa) @kat@yarn.girlonthemoon.xyz I guess that qualifies as an āArch momentā, albeit the first one I encountered. Iām running this since 2008 and itās usually very smooth sailing. š
@lyse@lyse.isobeef.org Yeah, YMMV. Some games work(ed) great in Wine, others not at all. I just use it because itās easier than firing up my WinXP box. (I donāt use Wine for regular applications, just games.)