# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 6434
# self = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=6334
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=6234
@movq 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 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 Tada, cool! :-)
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.

Goat

There ya go: https://lyse.isobeef.org/waldspaziergang-2025-06-24/
@movq *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.
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.
@prologic Bon voyage! I hope you'll find some well-needed rest.
@movq All the returns 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 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.

Drawers on the workbench

https://lyse.isobeef.org/tmp/hobelbankschubladen/
@thecanine With the teeth this looks like a vampire dog. :-D And I don't get the reference either.
@aelaraji 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.
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 Must be a decode ago that I last used Wine. I wanted to play GTA2, but that didn't go as planned.
@movq And there the air raid siren goes off.
@kat Oh no, how unpenguinly! But at least it runs, even races. :-)
@movq 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.
Wet t-shirt contest time! After our forest stroll I just wrung out the damn thing. Fuck me!
@kat Cool, that's a nice summary!
@kat Na, I'm too old for this shit.
@movq No.
@movq Yeah. :-( But hey, there are at least six of us using mail as it should be™. :-)

I sent the dealer an e-mail about that with all sorts of other issues as well. Let's see if they fix anything of that some day. Or yet just even read it.
Come on, why is the bloody IBAN only in the damn HTML part of your e-mail but not in the plain text!? Grrr! Don't you wanna get paid, dealer!? Your new web shop system sucks so bad, I want the old version back.
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.
@movq Lol, what the hell!? Reports like that turn me away even more from iron oxide. Also, great naming choice on the method they made there. display() doesn't actually display it. But it's a Rust thing.
I'm now going to delete 7,336 old photos (previews, resized web versions and index.htmls) and reclaim 3.3 GiB disk space on my laptop.
@kat Cool! Does it still run on your machine? :-)
@movq Hmmm, that indeed surprises me, too. Looks like I live in a moorhen shortage area. Even ducks and geese are not all that common. But then also, there aren't any substantially sized lakes around here. Just a few smaller ponds, which I don't visit all that often.
@quark Ta. Hmm, what's wrong with the blue text color? Is it too dark on the black background for you? :-?

Normal links are blue while images are teal. I thought I differentiate the two if I easily can. The underline of URLs comes from my terminal and is not tt's fault.

Configuring colors is in the todo list. But of course, providing a sane default is definitely something I'd like to have.
@bender Let's start a counter penguin feed! Or something along those whiskers. Should also at least mentally help with the heat.
@quark Oh boy. Glad you survived.
@quark LOL! :-D
There ya go, @quark, these are the two most important views.

Message tree view:

Screenshot of the message tree view

Reply form:

Screenshot of the reply form
@aelaraji I'm glad to hear that you don't find it too terrible. :-) There are still heaps of bugs to fix and things to improve. Bucketloads of them.
@kat @movq A Tux improves the life. :-)
@movq Thanks. It's already over, the heat got us. :-(
@movq Kein Muckefuck, wohl bekomms. :-)
Once again, I went on a hike onto my backyard mountain after calling it quits very late. This time I brought my cam along. The view was extremely hazy, but the setting sunlight resulted in cool colors. The freshly cut grass smelled wonderful.

I saw a flock of pidgeons circling around and some sort of rat or mouse quickly running over the road in front of me from one field into the next one with a giant nut in its mouth. Or so I at least believe, couldn't really tell, it happened so fast.

A couple enjoyed the setting sun on a bench and stripped their shoes on this warm evening. Somebody forget their bottle of water on the summit, but it looked rather cool in the evening light:

Water bottle

Not sure what they're doing, but they now set up scaffolding at the ruin. I heavily doubt it, but it would be cool if they rebuilt the castle. :-)

On the way back I met up with a mate who couldn't come along right from the beginning. We saw two deer on the meadow, but it was already too dark for my camera, the photos were totally rubbish. The sunset turned really pretty and colorful just in time when I reached home. https://lyse.isobeef.org/waldspaziergang-2025-06-10/
@movq That's cool! I think I never ran across a moorhen in the wild. Nor such a goose, just the "normal" ones. I should maybe try to sit on a watch to shoot some birds. With my cam, not a rifle of course. :-)
@movq Heck yeah, these are some brilliant shots! Where did you spot the goose and moorhen?
Speaking of fantastic and inspiring things, Epic Upcycling makes a wonderful desk from pallet wood and scrap metal: https://youtu.be/hY1-5PtJPo8 So relaxing to watch. I wanna make one so bad, too. I guess I start with the plane rack, though.
Fuck me, this is soooo bloody amazing! :-) I absolutely love watching the iterations on Primitive Technology's belt and pully blower: https://youtu.be/1799Rqn71A8 It's just so dang cool and really inspiring. This wants me do something similar so hard. :-)
@movq Interesting, didn't know that.
@movq Very rarely does it happen. Yup, the clouds are to praise for today's spectacle. Surpringly, the pink is fairly close to how it actually looked in person. I was pleased to see that. The neon orange in front of the grayish sky was way cooler, though. I wish I could close the aperture on my camera in the hope of capturing the insane color. Oh well.
@movq I didn't even know about the internet back then. Might have been just around that time we got our very first second-hand computer.
Woooaaah, the sun just was a crazy orange disk in the sky. Looked super amazing. Unfortunately, on the photo it was just white. But then it turned pink when it reappeared below the clouds: https://lyse.isobeef.org/abendhimmel-2025-06-07/

Pink saturn^Wsun disk
Aha! So, @bender added all the Spanish feeds then!? ]:->
@movq Bwahahaha, exactly! :-D
Aha! https://tiswww.cwru.edu/php/chet/readline/rluserman.html#Readline-Killing-Commands
Ha, I just learned that deleting text in my zsh with Ctrl+U to the front or Ctrl+K to the end puts it in a buffer that can be pasted by pressing Ctrl+Y! That's neat. Even removing the last word with Ctrl+W moves it into this paste buffer.

https://jvns.ca/blog/2024/11/26/terminal-rules/#rule-5-vaguely-support-readline-keybindings

I guess I have to implement pasting in tt as well.
We went up our local backyard mountain and boy is it humid. The view after the rain is fairly good, but I'm totally soaked. No photos, I'm too exhausted for that.
@kat I never did anything remotely like this. I might have to look into it some day. It might be a good topic for a Do What You Want Day.
@movq Unfortunately. :'-(
@movq I've absolutely no idea how they're poured in. I bet it must be some automatic thing. At least I cannot imagine that any sane person would ever add such junk to a list.
@bender Muting on a domain level would be an option.
@kat That sounds fun! I'm happy to read an article on how you did that. :-)
@movq I hear you! I'd also love to forbid any use in military software (development). Even though I cannot imagine anything of my stuff ending up there.
@movq Das wär auch meine Vermutung. :-) Wir nennen sie hier Peterling.
Sooo many new spam feeds to mute in the twtxt.net discovery view. :-( The RSS/Atom to Twtxt feed bridge was a mistake, I believe. I guess I just have to abandon that altogether and rely on my subscriptions to interact with new feeds in order to discover legitimate new ones. Not sure if that works, sounds like a chicken-'n'-egg problem.
@kat Oh, even a large one!
@movq Wow, this is sick!
@arne Ohh, sehr hübsch geworden!
@sorenpeter Cool, that animation is quite hypnotic. :-)
@movq Regarding https://www.uninformativ.de/blog/postings/2025-05-21/0/POSTING-en.html: Hahaha, that's what I immediately thought, too! The pain of going back to CVS. :-D I used that back in school. Quickly after, I upgraded to SVN and even that was terrible in comparison to a modern VCS, such as git.

In any case, happy hacking!
@movq Zum Beispiel: https://www.youtube.com/watch?v=-unPs-NrVI0
@movq That's cool! Both of you can now form a house band. :-)
@kat Ta! The dead end wasn't all that bad in my opinion. Personally, I really do like dirt paths and exploring. It was all dried up, so no muddy mess we had to walk through. More like climbing over thick branches that have been worked into the ground by harvesters or forwarders in the muddy winter. Rough terrain. My mate, on the other hand – whose idea it was to check out the real summit in the first place ;-) — wasn't all that pleased about the detour. Oh well. :-D
@movq Das klingt ein wenig nach einem Johnny-Einschub zwischen zwei Liedern auf einer EAV-CD. :-D
@movq Yeah, that sounds pretty good!
@movq What a wonderful present! Crazy how time flies.
@movq I'm glad you like that raven. :-) This is the original for when you get a screen as big as an entire wall one day: https://lyse.isobeef.org/abendhimmel-2025-05-16/01.JPG
@kat I only listened to you while going through my photos, so I did not pay very close attention. :-)

Since you have a proper server – haha, not just one – and hence are not limited, I suggest you learn a real programming language and don't waste your time with this PHP mess. It might have improved a wee bit since I was a kid, but it felt like some hacked together shit. The defaults also were questionable at best, it was easier to hold it wrong than right. This stands testament to bad design and is especially terrible from a security point of view.

You're right, programming is like any other craft. You only truly learn by actually doing it. And this just takes time. Very long time to master it. Or as close to as it gets. The more you know, the more you realize what else you don't know (yet). It's a never ending process. So, take it easy, don't get discouraged, happy hacking and enjoy the endeavor! :-)
We had sun, clouds, wind, rain and a whole lot of fun on our trip to the Wasserberg. We've been out seven hours in total, not bad at all for all those kilometers. We added on some detours to check out a pond I've been introduced by a mate a few years back.

After some (expensive) tucker at the Wasserberghaus, we tried to actually visit the summit this time. However, there's nothing to see, just a rough logging trail (46-49). That was a dead end, so we had to turn around. It was some nice exploring, but I reckon this was my first and last time up there. :-)

Wasserberg on the left, Fuchseck on the right

Unfortunately, we didn't go to the neighboring Fuchseck this time, only the Wasserberg with some extras.

https://lyse.isobeef.org/wanderung-auf-den-wasserberg-2025-05-18/
@movq Wow! This giant Tux is just fucking amazing, I have to say. <3 Even a bricked Tux and a GNU!
@kat Yup, we got lucky. :-)
@thecanine Things in general just sitting around collect dust. Granted, plush is an even worse dust magnet. We badly need some anti-dust material. ;-)

Nice, did you print this keychain yourself?
@bender Hahahaha! :-D
Once again, we had some very beautiful colors this evening: https://lyse.isobeef.org/abendhimmel-2025-05-16/

Sunset
@movq Oh, okay. Too bad. :-D Or luckily, thinking of all the dust they collect.
@bender Just to save some unnecessary und useless network traffic. :-) So that I can download more 1080p videos!@1
It's this time again to archive another quarter. I should do this probably monthly to keep the main feed small.
@movq @prologic Ta!
@movq Woah! :-) Is/was that your room?
@bender Ta! :-)
@movq Oh, made in Germany explains the prices. Surprisingly, buying via the reseller is *much* cheaper than purchasing it from the manufacturer directly. WTF. O_o
@movq Yeah, we're pattern matching machines. :-) Only the trans5c preview looks like a brain to me. :-) Trans4 is a bacterium.
@movq They already do:

> […] These changes will apply to operations like cloning repositories over HTTPS […]

On a positive note: Finally time to get rid of as many Go dependencies as possible. :-)
@movq @kat Just have a beeswax candle ready for sniffing. :-)
@movq There are some real bangers in your collection! Aro3, the octopus, would look great on a wall.
@movq A quick search revealed https://www.tux-onlineshop.de/plueschtiere next door to you, but these tuxes look rather ugly. Also, shipping to the US&A is 60 bucks. I bet @kat's sister can do better. :-)
@movq Has that hashing change even be accepted? :-?
Nice European greenfinch: https://lyse.isobeef.org/gruenfink-2025-05-10/

@kat You don't need to change the directory first in line 11, you can just create the directory, that's sufficient since you're having an absolute path.

The echo in line 13 is useless, you can simplify this to: newdir="$WD/$now" If you reversed this line with the previous one, you could make use of the variable in the directory creation: mkdir "$newdir".

In line 16, pull the directory change out of the loop upfront. The loop body doesn't modify the working directory, so no need to reset it with each cycle. In fact, you could even spare the cd altogether when you simply tell find where to look: find "$basedir" -type f….

I didn't try it, but if I read the manpage correctly, you should be able to simplify line 19 as well:

> -C Change to DIR before performing any operations. This option is order-sensitive, i.e. it affects all options that follow.

Hence, remove the cd and put the -C "$WD" as the first argument to tar. Again, I didn't try it. Proceed with caution.

Finally, you don't need to specify the full path to rm in line 21. I bet, /bin is in your PATH. When you removed the previous cd from my last suggestion, the relative path that follows won't work anymore. So, just use the absolute path that you already have in a variable: rm -rf "$newdir"

I hope you find this tiny review a wee bit useful. :-)
@kat @movq @prologic Yeah, I'm also having them in my repertoire for ages, so I'm used to the weird command line options. From today's perspective, they're not consistent with the rest of the typical shell utilities, that's for sure.

Regarding find | grep foo, I recommend find -name '*foo*', prologic. Also, I regularly use -type d and -type f to find directories or files.
@kat Nothing wrong with handwritten HTML. That's often superior to generated stuff I believe. :-)
Thanks to @kat and her shelf I finally spent several hours in the woodshop. I wanted to build two drawers for the workbench and thought that I will complete this project in no time. I've been so wrong again. ;-)

I didn't draw any plans, just measured a few times and then went to cutting a bunch of particle board leftovers at the table saw. I routed rebates on the sides, fronts and backs to lap the boxes and sink in the bottom. It turned out that having no plans was a stupid idea. I cut exactly on the lines as I calculated and measured, however, the math in my head fell apart when it eventually met reality. The bottoms are too short, so I gotta glue on some strips. Also, with the longer fronts, the sides won't work either, I have to fix them as well. :-D

Finally, the lid of my cyclone bucket broke when the negative pressure got too large. Oh well. It was just an old wood glue bucket, I've got another empty one, so I can use that lid but strengthen it first with some plywood. Something for future Lyse to deal with.

All in all, it was still good fun. Wood (haha) do it again, but at least with some sketches on paper. ;-)
@anth Congrats, that's pretty cool! Quite some time, I'm impressed.

@prologic You'll sometimes find the "Creation Date" in whois. Our domain was registered in 2009. Woah. That's also been a while, crazy.
@movq Yup, that's Mr. Compiler Explorer. :-)
@prologic There have always been and there will always be people who have absolutely no clue what they're doing. I've been 100% one of them when I started. Guaranteed, heaps of new SQL injections are born every single day, numbers rising.

That doesn't justify all the WAF crap in the first place, though. In my opinion it's just a filthy plaster applied to an injected wound. The software itself must be secure. Otherwise, don't put that shit on the internet. Probably not even operate it at all. Nowhere. Fix it or throw it in the bin.