The lid is on and the first saw brackets are done. Let’s see how impractical they are. I might have to add heavy chamfers to better guide them in.
I added 07 to 11: https://lyse.isobeef.org/tmp/hobelbankschubladen/
sudo
is a sandwich. 🫠 https://www.sudo.ws/
@movq@www.uninformativ.de @bender@twtxt.net I never saw that. Neither the website nor the logo. I like the old one more, although I have to admit the story behind the new one is actually really cool: https://www.sudo.ws/about/logo/
I didn’t manage to leave the house yesterday. But when I went into the woods this evening, activity first was 10% of what it had been the day before yesterday. By the end it got a lot busier, about 50% of last time I reckon. Around 500 fireflies I’d imagine. I might have been faster than the days before. When I left the forest, I was right in the fog, that was cool.
Shortly after, I saw another lightshow. Right behind the Wasserberghaus somewhere on the Swabian Alp there was very crazy heat lightning every 5-10 seconds. That looked absolutely amazing. :-)
Here are nice tools to search for news, if your newsoutlet is blocked. Web search or Port70news under newsfeeds.
Cheers @danzin@danzin, was it you who added a PR to core #Python about pprint?
(listening to #corepy #podcast)
Update: Thank you so much for improving Python @danzin@danzin !
core.py: PyCon US 2025 Recap
Starting from: 01:32:45 https://podcasters.spotify.com/pod/show/corepy/episodes/PyCon-US-2025-Recap-e347dc3
https://anchor.fm/s/eb6edc3c/podcast/play/104100675/https%3A%2F%2Fd3ctxlq1ktw2nl.cloudfront.net%2Fstaging%2F2025-5-13%2Fb281ac3a-b0ec-49b9-b31d-7a90031e910d.mp3#t=5565
@prologic@twtxt.net I like the last two, on the first three you sent. I looked up “Canarvon Gorge”, and read more about it. Thanks for introducing me to it!
As promised, here’s some photos of love you!! camping trip to Canarcon George in QLD, Australia.
Heck yeah, I’ve been a firefly taxi again! \o/ One landed on my hiking boot and rode along a few meters. It then took off on its own without me having to help it. I saw easily a thousand glowing individuals tonight, bloody cool. :-)
we should bring back XFN that is the cutest shit in the world i want to link to my friends and have the internet know they are my friends through the markup!!!!!!!!!!!
Woops, sorry if my Pod was offline for a few days, I hadn’t checked and needed to renew the domain xP
@prologic@twtxt.net Oh cool, completely disconnected is the best! Looking forward to the photos. :-)
@movq@www.uninformativ.de We did indeed! 😅 I’ll share photos soon™ 🔜 Was completely “off-grid”, no connectivity to anything anywhere 🤣
@movq@www.uninformativ.de Yes, flat UIs are broken! I’m used to that by now, but it’s still more work to recognize than when there are borders around buttons, etc.
These are lists in your Inkscape example, right? (I’m too lazy to start Inkscape myself and look at it. And writing this took longer than just seeing for myself, but here we are. I met up with one of my best schoolmate this morning and it’s fucking hot already. So I blame the heat.) Nested tabs are probably an own death sin in itself. I know, I know, the upper ones can be made into windows and dragged around, but still.
[47°09′32″S, 126°43′17″W] Storm recedes – back to normal work
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.
[47°09′12″S, 126°43′57″W] Automatic systems disengaged due to heavy rain
Do you edit posts endlessly? Also messages, when the platform allows it, trying to fix typos and to clarify things, did I say endlessly?
ok. i’ve changed usernames, doing this from Lynx now instead of a web browser. i saw the plugins for firefox. not sure if I’m going to do that. i mean, i have this
I was wondering: What the heck is the light on my boot!? Turns out between sock and shoe tongue was a firefly, unbelievable! ;-D I’ve no idea how that happened. After untying, it took me five attempts to finally get it off. How crazy!
Watching several hundred glowworms tonight did not get boring. It’s just so damn cool. :-)
Updating my “how install and use #py5” pages, check them out if you want to “… draw and experiment some #CreativeCoding with #Python …”
EN: https://abav.lugaralgum.com/como-instalar-py5/index-EN.html
ES: https://abav.lugaralgum.com/como-instalar-py5/index-ES.html
[47°09′31″S, 126°43′40″W] Bad satellite signal – switching to analog communication
I went to the firefly party again and checked them out on a different path. Boys and girls, there were so many of them! Apparently, I took the wrong turn and the numbers dropped. Still several hundreds if not over a thousand, but I’m spoiled now.
On the way there I noticed an absolutely spectacular sunset. However, I didn’t bring my camera. Should have peaked through the closed shutters before I left.
It turns out the disco music from the next town over wasn’t only audible in the forest but is also free-to-air in my bed. :-( It’s earplugs time.
@mckinley@mckinley.cc’s blog appears to have gone stale, hm.
[47°09′12″S, 126°43′25″W] Transponder still failing – switching to analog communication
Thanks @bender@twtxt.net! Yeah, so super cute. I couldn’t pet them, though. Despite very curious, they were also very restless.
I persuaded my dad to check out the fireflies with me tonight. He only wanted to go for a short trip, so we came just across a couple hundred of them. Otherwise, the thousands mark would have been exceeded in no time. He was super glad I talked him into that. :-)
It was also my first time to see them over the meadows. Those numbers don’t compare to the ones inside the forest, no question, but we probably saw 60 or so. Haven’t come across them there before, I only heard and read about that.
Note to future-Lyse next year: Leaving at 21:45 seems like a good time. We left earlier and had to wait just a few more minutes for them to come out in masses.
Too bad it’s impossible to share photos or videos. My camera isn’t made for that at all, not even close.
@lyse@lyse.isobeef.org such a beautiful goooooooat! Those eye, and the ear I would love to pet… Nice click, mate!
Hahaha, I’m sure there were well over one thousand fireflies today! Basically at all times I could watch at least 15 of them around me. At better spots where one could see a few meters into the forest, there were easily 30 individuals, probably more. One even landed on my small finger. I didn’t feel anything at all, but my finger glowed. :-) Awwww! After a 20 meters ride it took off.
But it looks like I have to go already at 21:30 at sunset the next days. Today, I left the house at 22:00 and all the above happend in the first half. The second half of the walk was rather boring, maybe just around 70 glowworms in total. The extremely busy route yesterday was virtually dead this time I came around. They all have already gone to sleep, or something like that.
I also encountered two toads. I nearly stepped on the first one, but it luckily jumped to the side in time. No animals harmed.
@movq@www.uninformativ.de That short segment is fairly close to reality, even though it obviously looks heaps better in person: https://youtu.be/u8YVorNRcDM?t=66
@movq@www.uninformativ.de I also don’t think that I’m a particularly good speaker. :-) The workshop model is a good idea, I like that.
Yeah, it’s really good fun. I can highly recommend it. This is also a good way to train (new) developers to think like attackers, how to break in, destroy something or raise awareness of some classes of bugs. Then you can avoid them next time. It’s surprising to me what vulnerabilities come up during this event every time. So, absolutely worth it, win, win.
We’re entering the “too hot to think”-season in 3, 2, 1 … and we’re live!
Welcome to the family, Puffy. 🥳🐡
After drawing the bigger canine stickers, I also want to change my profile picture for summer, to something more fluffy, shaded and a bit smug looking.
went to vote. got told i can’t vote because i’m not registered. handed a form to fill out that i later learn is not in english.
go home and find out the problem is widespread among young voters like me.
fuck this country.
OH, FUCK ME DEAD! On the way home from today’s walk I saw easily 800 fireflies! Yes, over eight hundred! That was absolutely amazing. First time this year and already this many. Crazy! They were just fricking everywhere in the entire forest. I counted to one hundred and then stopped. The darker it got, the more fireflies came out and glowed around. :-) There were spots where in under ten seconds I counted 20 glowworms. Super sick. Soooo beautiful. <3
Before I left I tried to call a mate to join me, who apparently wasn’t home yet, though, didn’t pick up. But in the very end I surprisingly met her in the forest and we were super happy to encounter all the fireflies. She also said that today was her first time this year to spot them. I’ll definitely check them out in the next days, too.
Apart from all the glowworms, I also came across some goats, two deer (one of which only the ears showing out of the grass), according to the sounds I sadly must have scared up four more, bucketloads of tadpoles, four big and very active anthills next to each other and three bats to finish the stroll off. I call that extremely successful.
There ya go: https://lyse.isobeef.org/waldspaziergang-2025-06-24/
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?!)
@movq@www.uninformativ.de Interesting internal education sessions are way too infrequent here as well. There are a bunch of “knowledge transfer” meetings actually, but 90% of the topics already sound totally boring to me. The other 9% talks turned out to be underwhelming, sadly. I only attended a single one where it was delivered what has been promised. They’re all talks, not real hands-on trainings like you did.
Once a year the security guys organize a really great hacking event, though. Teams can volunteer to hand in their software dev instances and all workmates are invited to hack them and report security vulnerabilities. That’s a lot of fun, but also gets frustrating towards the end when you don’t make any progress. :-) There’s also some actual hands-on training in advance for preparation of the two days. Unfortunately, I missed the last event due to my own project being very stressful at the time.
When I had a Do What You Want Day I also show my direct teammates what I learned in the hopes of this being interesting to them as well. I’m the only one in my team using this opportunity, sadly.
@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. 🥳
- People used the Intel docs to figure out the instruction encodings.
- Then they wrote a little DOS program that exits with a return code and they used uhex in DOSBox to do that. Yes, we wrote a COM file manually, no Assembler involved. (Many of them had never used DOS before.)
- DEBUG from FreeDOS was used to single-step through the program, showing what it does.
- This gets tedious rather quickly, so we switched to SVED from SvarDOS for writing the rest of the program in Assembly language. nasm worked great for us.
- At the end, we switched to BIOS calls instead of DOS syscalls to demonstrate that the same binary COM file works on another OS. Also a good opportunity to talk about bootloaders a little bit.
- (I think they even understood the basics of segmentation in the end.)
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.
#MaradoWeekly #WeeklyPlant Week 25
[47°09′04″S, 126°43′58″W] Transponder still failing – switching to analog communication
I was this 🤏 close to buying a couple of baby-cactus plants but, I couldn’t … I still have to save up for that future screen printing project. 🥲
Visit the Rabbit Hole - telnet to woofer.v6.rocks:9999
** My measurer **
My dad is an electrical engineer and physicist. Measuring things is a core part of his professional life, and something he seems to spend a lot of time doing around the house. This is all to say my dad is relatively expert in the ways of measuring things so I think it’s hilarious that he calls absolutely anything he is using to measure anything else“my measurer.” Measuring tape, oscilloscope, scale, volt meter, bubble level, table spoons, whatever. They’re all“my measurer.” ⌘ Read more
[47°09′39″S, 126°43′13″W] Bad satellite signal – switching to analog communication
#Meta to the #EU: “the focus should be on creating a regulatory infrastructure that ensures any licence that is sufficiently permissive for the user is considered open source, rather than anointing specific licences as “open source”.”
Brilliant, sure, let’s ignore existing definitions and go with gut feeling (incidently, Meta has a gut feeling generator).
Option
and error handling. (Or the more complex Result
, but it’s easier to explain with Option
.)
@lyse@lyse.isobeef.org lol – I explicitly kept them in there so that the code is easier to understand for non-Rust people 🤪😂
@movq@www.uninformativ.de Yeah, not too bad. I completely agree with you on completeness. Also, I hate complexity without having to learn that during on-calls. :-)
Finally, the two drawers are mounted on the workbench. Some kind of a lid board on top to keep the dust out is still missing. I also gotta build the drawer inserts for the saws.
I upcycled decades old table football aluminium pipes to become my handles. The spacers are made from the inner tube. Two minutes of handsanding with 400 grit sandpaper polished it up nicely.
On my blog: Free Culture Book Club — First Woman — Dream to Reality https://john.colagioia.net/blog/2025/06/21/first-woman-1.html #freeculture #bookclub
Option
and error handling. (Or the more complex Result
, but it’s easier to explain with Option
.)
@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? 🤔
@movq@www.uninformativ.de I’m feeling SO dumb right now 😅 I used to think !!
was a sudo
argument and never used it out of that context! Thanks for the $(!!)
tip 🤘
Option
and error handling. (Or the more complex Result
, but it’s easier to explain with Option
.)
@movq@www.uninformativ.de Is this much different to Go’s error handling as values though really? 🧐🤣😈
(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.)
Now I could. A few minutes ago I posted one, and it went to the void. I can’t delete, though. I get a lovely 403.
On my blog: Toots 🦣 from 06/16 to 06/20 https://john.colagioia.net/blog/2025/06/20/week.html #linkdump #socialmedia #quotes #week
@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
@aelaraji@aelaraji.com Oh, that’s great! I haven’t heard about any of them before either. There’s also a caveat though, that I ran right into the very first time I tried this in zsh:
$ ls > /dev/null
$ echo $_
--color=tty
Yeah, exactly what you think:
$ which ls
ls: aliased to ls --color=tty
Alt+.
is going to be my favorite one! In the above, it would also give me /dev/null
, which might be probably more what I would expect.
@movq@www.uninformativ.de omg yeah! this one looks cute too (i’m weak to anything tux related!) but the commercial release has so much unpolished charm i love it! btw it’s on [internet archive(https://archive.org/details/TuxRacerCD) if you wanna download & play it :]
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.
Just discovered how easy it is to recall my last arg in shell and my brain went 🤯 How come I’ve never learned about this before!? I wonder how many other QOL shortcuts I’m missing on 🥲
@kat@yarn.girlonthemoon.xyz I recommend you to remain curious without crossing the threshold. Unless, of course, you truly want to follow a never-ending rabbit hole. 😂
@lyse@lyse.isobeef.org as long as i get to see silly little tux sliding around in a silly game older than me it’s ok even if i committed windows/wine crimes to see it <33
I probably should implement some editing feature in tt
. Sure, I can easily edit my feed in vim to fix typos. But then I still have to manually remove the old message from the cache so that the new message is inserted on next reload and I don’t end up with “duplicates” in the message tree.
@movq@www.uninformativ.de Must be a decode ago that I last used Wine. I wanted to play GTA2, but that didn’t go as planned.
pledge()
and unveil()
syscalls:
@movq@www.uninformativ.de That sounds great! (Well, they actually must have recorded the audio with a potato or so.) You talked about pledge(…)
and unveil(…)
before, right? I somewhere ran across them once before. Never tried them out, but these syscalls seem to be really useful. They also have the potential to make one really rethink about software architecture. I should probably give this a try and see how I can improve my own programs.
Speaking of Wine, Arch Linux completely fucked up Wine for me with the latest update.
- 16-bit support is gone.
- Performance of 3D games is horrible and unplayable.
Arch is shipping a WoW64 build now, which is not yet ready for prime time.
And then I realized that there’s actually only one stable Wine release per year but Arch has been shipping development releases all the time. That’s quite unusual. I’m used to Arch only shipping stable packages … huh.
Hopefully things will improve again. I’m not eager to build Wine from source. I’d rather ditch it and resort to my real Windows XP box for the little (retro)gaming that I do … 🫤
@kat@yarn.girlonthemoon.xyz lol, oof, well, better than nothing. 🥴 It appears to run quite well. 🤔
@kat@yarn.girlonthemoon.xyz UPDATE: getting it to run natively through a VM and other means all failed! so i did the cursed thing and tried the windows installer in wine…..
Felt the need to make this stupid reference - nobody will get, most likely. Feel free to guess (the file name and todays date, are both a hint), any other notes and opinions appreciated too, idk if I ever drew a standing one, from the front, before.
Achievement Unlocked: I have finally gotten to sit my ass down and watch Back to the future
from start to the end.
@prologic@twtxt.net But is there a source for it? Am I too stupid to use that site? 🤪
@prologic@twtxt.net … or just bullshit.
I’m Alex, COO at ColdIQ. Built a $4.5M ARR business in under 2 years.
Some “C-level” guy telling people what to do, yeah, I have my doubts.
To really annoy my neighbors and everyone in a 5 mile radius, I might take my Model M and type a blogpost on the balcony. 😈
[47°09′58″S, 126°43′17″W] Storm recedes – back to normal work
** growing good **
“…for the growing good of the world is partly dependent on unhistoric acts; and that things are not so ill with you and me as they might have been, is half owing to the number who lived faithfully a hidden life, and rest in unvisited tombs.”
George Eliot, Middlemarch ⌘ Read more
@movq@www.uninformativ.de neither do I 😆 and I’m going full Albert Camus mode. Embracing the Absurdism of life just to cope, it’s the only choice I have left.
i ordered some fun colorful new minidiscs so i can finally get back to recording my mixes :D looking forward to it
“The only way to learn is to try. The best way to learn is to have fun.” —@ucodery@fosstodon.org
[47°09′55″S, 126°43′52″W] Automatic systems disengaged due to heavy rain
Unless your Terms of use update email looks and reads the same as the one I got yesterday from mastodon.social
, I don’t wanna know about it, nor do I agree to it.
@aelaraji@aelaraji.com I’d love to have a positive, optimistic reply to that, but … uhm … I don’t. 🤣
@kat@yarn.girlonthemoon.xyz Ooh, I’ve got to bookmark that page. 😃
@aelaraji@aelaraji.com I wish I had the luxury of not reading that junk. 😅 But instead, I have a Mutt hotkey that pipes an HTML mail through elinks … Bah.
@prologic@twtxt.net I’m trying to call some libc functions (because the Rust stdlib does not have an equivalent for getpeername()
, for example, so I don’t have a choice), so I have to do some FFI stuff and deal with raw pointers and all that, which is very gnarly in Rust – because you’re not supposed to do this. Things like that are trivial in C or even Assembler, but I have not yet understood what Rust does under the hood. How and when does it allocate or free memory … is the pointer that I get even still valid by the time I do the libc call? Stuff like that.
I hope that I eventually learn this over time … but I get slapped in the face at every step. It’s very frustrating and I’m always this 🤏 close to giving up (only to try again a year later).
Oh, yeah, yeah, I guess I could “just” use some 3rd party library for this. socket2 gets mentioned a lot in this context. But I don’t want to. I literally need one getpeername()
call during the lifetime of my program, I don’t even do the socket()
, bind()
, listen()
, accept()
dance, I already have a fully functional file descriptor. Using a library for that is total overkill and I’d rather do it myself. (And look at the version number: 0.5.10
. The library is 6 years old but they’re still saying: “Nah, we’re not 1.0 yet, we reserve the right to make breaking changes with every new release.” So many Rust libs are still unstable …)
… and I could go on and on and on … 🤣
@movq@www.uninformativ.de > That guy over there in the corner…
I’m literally sitting in a corner chuckles. I rarely get any emails nowadays. But if I do and it is not plain-text, then my Mutt gets to bark at it and I, just… won’t read it. 🤷🏽♂️
@movq@www.uninformativ.de Hahaha 😂 This is gold! I’ve been following along with our ramblings on Rust. What’s it gone and done to you now? 🤔 I don’t think I can ever be friends personally, I feel “too stupid” to learn Rust 🤣
It all started in New York in the early 1980s. Click, now 85, and his friends were sitting at the long bar of the New York Athletic club reading magazine articles about boxing, fencing, judo and wrestling. “One of my mates said, ‘Dude, we don’t do any of those things.’” They had to face it. They were dull. They decided to embrace their dullness.
As a joke, they started The Dull Men’s Club, which involved some very silly, dull activities. They chartered a tour bus but didn’t go anywhere. “We toured the bus. We walked around the outside of the bus a few times. And the driver explained the tyre pressures and turned on the windscreen wipers.”
OpenBSD has the wonderful pledge()
and unveil()
syscalls:
https://www.youtube.com/watch?v=bXO6nelFt-E
Not only are they super useful (the program itself can drop privileges – like, it can initialize itself, read some files, whatever, and then tell the kernel that it will never do anything like that again; if it does, e.g. by being exploited through a bug, it gets killed by the kernel), but they are also extremely easy to use.
Imagine a server program with a connected socket in file descriptor 0. Before reading any data from the client, the program can do this:
unveil("/var/www/whatever", "r");
unveil(NULL, NULL);
pledge("stdio rpath", NULL);
Done. It’s now limited to reading files from that directory, communicating with the existing socket, stuff like that. But it cannot ever read any other files or exec()
into something else.
I can’t wait for the day when we have something like this on Linux. There have been some attempts, but it’s not that easy. And it’s certainly not mainstream, yet.
I need to have a closer look at Linux’s Landlock soon (“soon”), but this is considerably more complicated than pledge()
/unveil()
:
[47°09′03″S, 126°43′33″W] Transponder still failing – switching to analog communication
@bmallred@staystrong.run Ahhh this is an agent I’m tryining to play the game of Connect3. It uses a library written in Go I’ve been working on that supports Neuroevolution using Genetic Algorithms. Some features include: Mutation, Speciation, Lamarckian Evolution/Inheritence.
@kat@yarn.girlonthemoon.xyz i linked the normal length edit instead of the full 15 minute music video because i’m not gonna subject you all to that amount of my bullshit
(…15 minute version is a great watch though)
@lyse@lyse.isobeef.org those are so annoying. except when they’re idol tiktoks then they’re fine to me
[47°09′09″S, 126°43′17″W] Storm recedes – back to normal work
woke up so early that i have nothing to do
Righto, infusion time in the sauna! It started to lightly rain. Bah, why’s the heavy thunderstorm canceled?
Meh, the stupid shorts get longer. I need to increase my duration filter in order to ban all this garbage.