@movq@www.uninformativ.de itās sooo bad here on the east coast of the US omg 102F/38C heat here!!
@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.
@movq@www.uninformativ.de Oh, really!? You should come visit. :-)
As far as I know females are sitting in the shrubs and males fly around, but theyāre not all that quick. They are slowly moving glowing dots that you can easily follow with your eyes. The bigger problem might be that they turn off and then on again. So, one could count duplicates. However, thereās typically a bit of distance between them (at least 30-50 cm Iād say, often more). Counting the same individual multiple times is not all that common (assuming that they donāt speed up when turned off). My counting was also conservative I believe.
Ah, Die Maus also covered them a few days ago: https://www.youtube.com/watch?v=OVGD5QEvtoc At the end, thereās a video were you can see the speeds a bit.
@movq@www.uninformativ.de Tada, cool! :-)
@arne@uplegger.eu Stattdessen rutscht er seitlich vom Tisch? š¤Ŗ
@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!
Welcome to the family, Puffy. š„³š”
Heute im Support-Kanal: Schrƶdingers Laptop
⦠der Laptop fƤhrt weder runter noch hoch ā¦
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.
@kat@yarn.girlonthemoon.xyz NEVER MIND WE ARE SO BACK MAMDANI WON
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.
About ChatGPT rotting peopleās brains, similarly could be said about search engines, and reference books. Oh, also doom scrolling, and mobile devices, and the Internet⦠:-P
@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.
pledge()
and unveil()
syscalls:
@lyse@lyse.isobeef.org Multi-Threading. Is. Hard. 𤯠And yes, that blog is great. š
pledge()
and unveil()
syscalls:
On todayās research journey on pledge(ā¦)
/unveil(ā¦)
/landlock/capabilities I came across the great EWONTFIX blog, in particular this article here: https://ewontfix.com/17/ Super interesting.
@aelaraji@aelaraji.com awww :(((
bought the new server thatāll replace my optiplex 780 woooo!!! new server is a lenovo thinkstation P520
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. š„²
think iām gonna use this license on my git repos going forward. it kicks ass https://anticapitalist.software/
Thanks all š
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 š¤Ŗš
@prologic@twtxt.net Bon voyage! I hope youāll find some well-needed rest.
Option
and error handling. (Or the more complex Result
, but itās easier to explain with Option
.)
@movq@www.uninformativ.de All the return
s tell me that youāre not a real Rust programmer. :-D Personally, I would never omit them either. They make code 100 times more readable.
@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.
Option
and error handling. (Or the more complex Result
, but itās easier to explain with Option
.)
@movq@www.uninformativ.de Yeah pretry much š¤£
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 š¤
@kat@yarn.girlonthemoon.xyz Always do š¤£
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? š§š¤£š
@movq@www.uninformativ.de Agree! Good list š
(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.)
@movq@www.uninformativ.de Ewww š
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.
@prologic@twtxt.net have fun!
@prologic@twtxt.net Enjoy your road trip! Have fun!! š¤
Gone on a road trip. Be back in a week š
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.
Can I create a post?
@bender@twtxt.net Ahh I see hmmm I donāt know this either š¤£
@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. š¤¦
@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
@thecanine@twtxt.net With the teeth this looks like a vampire dog. :-D And I donāt get the reference either.