# 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 6164
# self = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=5116
# next = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=5216
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=5016
@movq Phew! Quite the opposite from ideal, but could be worse. Finger's crossed that this doesn't repeat.
Thanks, @movq, it helped. :-) I'm happy to report it was just a quick storm, no water ingress.

Oh damn, water being pushed in through cracks in the walls? Holy crap! O_o That doesn't sound confidence-inspiring at all. How much water managed to get in? Any damages or just a moist floor/walls?
@movq I also do use both clipboards all the time. I can't live with just Ctrl+C/V. Select and middle click is sooooooooo handy. Despite I'm considering myself mostly a keyboard user.
@movq The inlet has to be repaired. But I'm not gonna do that myself. You can imagine how easy it is to get tradesmen these days.

And here's the next thunderstorm lining up. Luckily, the rain barrel upgrade is completed. Also widened the funnel so that water running along the cable to the left is also caught. While typing, the rain gets stronger. Gotta check now. ;-)
It's about time to move while we still can! We had another heavy hail storm. 10-15mm diameter on average, maxing out at about 25mm. Oh boy. And my funnel contraption into the bucket at the cables in the basement were dead on.

[![Funnel into bucket](https://lyse.isobeef.org/tmp/wassertrichter-in-eimer/01-vorschau.jpg)](https://lyse.isobeef.org/tmp/wassertrichter-in-eimer/01.jpg)

Two larger streams were pouring out of the now porous looking mortar around the cables. Cool fountain in the basement. You would have thought that the right one was the bad one, but no, that one only dripped. I caught it just in time, not even half a minute later and the bucket would have spilled over. I estimate 60-75l water in total were about to mess up the floor again. Crisis averted.

[![Cables enter the house](https://lyse.isobeef.org/tmp/wassertrichter-in-eimer/02-vorschau.jpg)](https://lyse.isobeef.org/tmp/wassertrichter-in-eimer/02.jpg)

Gotta upgrade the bucket to a rain barrel until this is fixed.

Shortly after, I heared the fire brigade responding a couple of times.
@movq @prologic I'll join you at either place. :-)
@bmallred Oh my goodness, what an experience! I'm glad you were not hit and I hope they got them in the end.
@bender Oh this sounds really cool! :-) I never caught them, only watched 'em. But I have to admit that I wanted to catch them barehanded this week. Didn't try, though.

I just returned from another trip into the forest. This time, I went deeper, there was some beautiful firefly activity. When I checked on yesterday's spot on the way home there was barely anything. But I saw some presumably females sitting on the leaves in the shrubs. I didn't notice a single one yesterday. Their illuminated parts were really huge compared to the flying males. The biggest was the size of a small finger's nail (contrast that with a tiny shining dot of maybe 2-4mm max). I could even see the three distinct sections being lit up. That must have been a common glow-worm (großes Johanniswürmchen), I'd say: https://de.wikipedia.org/wiki/Datei:Lampyris_noctiluca.jpg The others might also just have been the smaller species. I don't know.

There were also some toads on the paths. A very lovely evening stroll. I'm very happy now. The dayjob's stress is completely forgotten.

I really do enjoy that I am in the woods in about 10-15 minutes afoot. The most dangerous animals here are ticks and then come the boars. And that's really it. Well, mozzies might be in the list, too. Some adventive ones can carry diseases, luckily, I haven't encountered them here yet. Today, a bunch of gnats wanted to eat me. Yesterday, I had my peace, though.
I just went into the woods for a bit over an hour. A few hundred meters in and I a found a brilliant spot. 20-30 fireflies in view all around me all the time. I loved it! As bonus, a bat was hunting over my head for two, three minutes while I watched the many glowing dots. On the return I could even see one or the other firefly over the meadows near the edge of the forest. But clearly, most can be met _in_ the forest. Guess what I will be doing tomorrow evening. :-)

I'm now really looking forward to a night hike soon.
Yesterday, I paid Duck Memorial another visit: :-D

Actually a war memorial on Mt. Hohenrechberg, but it always looks totally like a duck to me

It was a really nice hike, there was hardly anybody outside. The weather wasn't bad at all, around 22°C and cloudy most of the time. The drizzle got me a few times, but it wasn't terrible. It just raised the humidity. A bit more wind would have been nice, it was very calm, even at the summits.

On the way there I had to kill a tick that I found on my trousers. Those bloody suckers! What benefit do they bring nature? At home I checked and couldn't find any others. Phew.

On the way back from Mt. Hohenrechberg I saw a deer and hare. It's been years that I came across hares in the wild, so that was really cool. I decided to watch the sunset from Mt. Hohenstaufen, so I took a small detour. Absolutely worth it:

Sunset

A group of hippies eventually joined me at the sunset lookout, lit joss sticks, played some weird music on a metal pipe thingy (a bit like a single windbell) and sang a sun dance song. Said song had gone missing for a very long time and was recovered only lately, they told me. Okay. Some other really crazy dude told us that the mountain we're on had been raised in the Young Stone Age. That period where harvests were plentiful and people had a lot of spare time. WTF!? I mean they all were super nice and friendly and talking to them was also actually lovely, but what… err… interesting mindsets.

On the final return I saw another three deer on a paddock. And now for the very, very best part of the whole trip: in the forest I encountered 83 fireflies before I stopped counting. In the end it must have been 500-600 in total. One even nearly hit me in the face if I hadn't ducked at the last second. :-) Man, this was soooo fricking amazing! Fireflies for round about 1.5km! Didn't even try to take photos in this darkness, though.
@movq @bender @prologic Lol, that's the new shadow dirt art project in the park. :-)
@prologic Yes! Sadly, I have the feeling that this is rarely adhered to in the wild.
@prologic @movq Thanks, mates!
@prologic Visiting the login page would give you something like this:


Username: _<focused field>____
Password: ____________________
[x] Remember me (Enabling this feature will keep
    you logged in, even after closing your browser.
    Do not active this setting on shared devices.)
[Login]


The "remember me" checkbox could be already activated by default. This would benefit people like @bender.

An alternative would be to make the session lifetime configurable in the user profile. So bender would then set this to forty-two years. :-) Definitely something for power users who know what they're doing. More dangerous for the average Joe, though.
Not too shabby! We also got a rainbow, but I didn't capture it. https://lyse.isobeef.org/abendhimmel-2024-06-21/

Sunset
@prologic How so? Which part did I manage to confuse you with?
@bender It sure is no joke. But probably more fulfilling when looking back and seeing what has been accomplished that day.
@bender You gotta upgrade to triple-glazed windows.
Somebody in the neighborhood is exercising trumpet or so. What a squawking. Luckily, just after I finished my nap.
@bender @movq Coold dude! Looking at the activity graph, it appears like he's doing more useful things since the very end of 2021. :-)
@prologic Nope, we cannot.
@prologic @eldersnake I'd avoid the inverted logic. Checking a setting to disable a feature always feels wrong and confusing to me. I'd rather suggest to enable the checkbox by default. But I'm with you, an explanation what it does is definitely helpful. Maybe something along those lines: "Enabling this feature will keep you logged in, even after closing your browser. Do not activate this setting on shared devices."
@prologic Careful, you risk being hit by a brick. :-D
@bender I agree. For learning, reading is heaps better. There's also the very powerful Ctrl+F that I do not want to miss.
Nice long rant about AI: https://ludic.mataroa.blog/blog/i-will-fucking-piledrive-you-if-you-mention-ai-again/
Can't watch this. What the hell, why would you put a silly chat on the screen!? Distracting af.
@prologic Didn't understand anything. Luckily I don't have to waste my time with this web hipster shit. :-D But that's awesome! https://www.youtube.com/watch?v=ieqsL5NkS6I
@prologic Absolutely! I sure ate it after cleaning up the giant mess from door and floor. The good homemade apple sauce! :-(
@prologic I do NOT claim to be an expert in that realm. I've seen different things being implemented in the guise of "remember me". But I reckon the most common scheme, when this checkbox is activated, is to issue a dedicated, long-lived refresh token in a login cookie. I'm sure it is known under several different names. This "remember me" login cookie is separate from the actual short-lived session cookie.

Part 2 of this answer explains it fairly well: https://stackoverflow.com/a/477578 Also, this was a nice read: https://web.archive.org/web/20180819014446/http://jaspan.com/improved_persistent_login_cookie_best_practice

It depends on your threat model, but the use of public computers in libraries, internet cafés or similar is probably the most relevant here, when arguing against activating "remember me". These days, shared computer use is declining I'd assume. With twtxt being a niche for more computer-affine folks, I'd reckon this threat is not that high up the list. On the hand, you want to bring yarnd to the average non-nerd user, so this threat might actually rank more important.

It's probably okay and safe enough to remove "remember me" entirely and just issue a long-lived session cookie and be done with that. Optionally, power users or the administrator could benefit from configurable cookie lifetime(s).
@prologic Haha, my brain thought, that loopback address is missing a zero. :-D
Oh come on. The waffle fell off the plate and hit the door and then the floor. Of course with the apple sauce side each.
@bender Hihihi. ;-)
Just bent two clips or hooks from wire for my hat, so that I can attach a chin strap. Now the hurricane gusts don't blow off my hat anymore. Or so I do hope. :-D I just have to find a decent looking leather strip. The brown string I tried out quite closely matches the decorative hatband's color, but it's a bit too thin, could be more comfortable.
Those ducks belong to someone in town, @movq. Oh, sweet, I didn't know what that yellow bird was called. Thanks! :-)
Thank you, @prologic!
Went on a great 20km hike to the Wäscherschloss (lit. Launderer Castle) with my mate. Unfortunately, the castle was closed (only opens on Sundays and public holidays), so we had to peek under the door with our cameras.

[![Wäscherschloss](https://lyse.isobeef.org/wanderung-zum-waescherschloss-2024-06-15/33-vorschau.jpg)](https://lyse.isobeef.org/wanderung-zum-waescherschloss-2024-06-15/33.jpg)

Sunny and a few clouds, very windy, my hat blew off a few times, perfect 20°C hiking weather. Could have been a few degrees less, though. We walked through some beautiful scenery, especially when it is lit up by the sun. Really gorgeous views and paths. I should go over there more often. Last time was almost exactly two years ago.

The one steep foot path in the forest had 60cm deep canyons from the flood two weeks ago. Absolutely crazy! The burried post cable caution tape even was revealed. That path didn't look like a path anymore at all.

At home I had to remove a tick. Those fucking bastards!
@movq Oohhh, okay! Way more often than I thought. It's similar to oiling my handplane. Every time it squeeks or the friction gets too much (just the opposite ;-)), I pull the plane sole over my "rag in a can" oiler.
Very humid 20°C, cloudy and partially raining. That was today's weather when we went into the woods and paid or backyard mountain a visit: https://lyse.isobeef.org/waldspaziergang-2024-06-14/ Not very many folks around, looked like they all feared the liquid sunshine. The visibiliy was fairly mixed. Pretty clear in the west, we could see the Stuttgart TV tower 38.55km away (04). But very hazy to the north (03) when a rain cloud appeared.

Chestnut face nailed to a tree stump
@prologic Thanks mate! <3
@movq How often do you apply it?
@movq Haha, cool! :-) Also funny how the red container makes it completely change color.
@bender Waaahhh! Even just posting without editing?
@prologic This is how you can identify the duplicates in the feeds (storing the files first for potential further analysis later on without having to redownload them): cd /tmp; for u in prologic bender shreyan; do echo $u; curl -s https://twtxt.net/user/$u/twtxt.txt > $u.txt; uniq -cd $u.txt; done
@prologic Have a look at the raw feeds:

* https://twtxt.net/user/prologic/twtxt.txt
* https://twtxt.net/user/bender/twtxt.txt
* https://twtxt.net/user/shreyan/twtxt.txt*
Duplicates everywhere! Sigh.
@movq Right, this makes sense. Also, @bender reported the same over in https://twtxt.net/conv/ilupk5q. That whole conversation looks like that for me: Bender edits in red, notices in fuchsia (probably edits and leaves the message unchanged), and prologic acknowledges in orange. This conversation over here is marked in lime. Yeah, tt doesn't filter out duplicates. Maybe I should implement that.
@prologic I only notice that you post duplicates just like this one. This started few days ago.
I didn't know I wanted to watch a half hour lecture on over center mechanisms. But this was time very well spent with This Old Tony explaining them. Worth every second, just as always, highly recommended: https://www.youtube.com/watch?v=Ia3Iieejyg8
@bender Yes, they're on very different diets. ;-)

Hell no, I don't want to trade weathers. :-D Our humidity was around 60%.
These 24°C were brutal. The cow in 03 was standing in the bog, not sure why she liked this brackish water. It sounded "tchlk, schlk" when she moved around in that mud (what do you call that?). Some of these canyons, like 14, are over 30cm deep. Wow. In 15 at a height of two meters, a torn rag hangs in the tree in the creek bed. It's crazy to see how high the flood came in 16 with all the washed up stuff in the hedge.

https://lyse.isobeef.org/waldspaziergang-2024-06-07/

Hairy caterpillar
@movq Yes, classical "Abraummulden" and "Abrollcontainer". I haven't heard of any numbers yet, but I imagine that 100 houses have been affected. Probably more.

Here are a few photos: https://eislingen-online.de/_artikelanzeige.php?bearbeiten=_2024/2024_1150

But it's worse downstream in Ebersbach/Fils, if you want to read up on that. That's where the noise barrier collapsed onto B10 (I was mistaken on that regard, though, it wasn't the real river, but an overflowing water retention reservoir or something like that uphill that created a giant river, rushing down the streets and gardens, ripping out the accustic barrier). When water levels slightly dropped on Sunday evening, everybody here thought that we survived with only small damages, if at all. So the local fire service responded to help in Ebersbach where it had really escalated. However, they had to return shortly after, when a massive thunderstorm surprised us with very heavy rain and "land submerged" was reported back at home.
Went down to the creek and there's a skip in front of every house. Oh dear. Normally, the creek is a few meters below the tree line in 01-03. But as you can see, it went over the fields, several tens of meters wide.

Three days after the flood

The fire engine house next to the creek was also flooded. But the operational capability of the fire brigade was not affected as they already responded.

It's crazy how the relatively shallow field road on top of the hill looks. It was already in bad shape, but that's now another level. The drainage area is rather small, but tons of gravel is now in the meadows. 10cm deep holes and ditches in the road. The very loose gravel is difficult to cycle and walk on.
@prologic Yeah, l/m² is very common here. But I've also seen mm.
Between Friday 8am and Monday 8am it rained 161 liters per square meter. Our weatherman in town measured alone 40 liters on Sunday between 22:30 and 23:45. On average we get 92 liters in total in the entire May and 96 liters in June. It was a lot, but i didn't think it was actually that much. Wow!

Down in the town a lot of houses have been flooded. The municipality provided containers for all the garbage. From what I read it was the smaller creek, not the larger river that went absolutely berserk.
@prologic It was not the river water, but the rain water that found its way into the basement. It rained for a few days straight. So the ground was completely saturated at one point in time. Sunday to Monday night there was a ton of more really heavy rain, new water could not sink down anymore, so it leaked through the tight hole where the cables enter the house in the basement. That's roughly a meter above the basement floor. A tiny, tiny bit of fine sand accumulated on the floor beneath the hole.

I didn't even know that water can get through that hole in the wall, looks completely sealed to me. But as we learned, it is not sealed enough. I didn't see it flowing in, I just noticed the standing water on Monday morning.
@movq Thanks, all good. Could have been way worse. Time to work on the shelf. :-)
@movq Ein absolutes Gesamtkunstwerk. :-D Schon ne Qual, da zuzuhören. Ich habs durchgehalten, uff. ;-)
Holy crap, downstream the river broke through a noise barrier: https://www.tagesschau.de/inland/regional/badenwuerttemberg/swr-ebersbach-100.html
The river upstream kissed the hundred-year flood level (462 cm) the other day. https://www.hvz.baden-wuerttemberg.de/pegel.html?id=00265 (To me that link looks broken, but maybe it works on other browsers. :-?)

Just one pixel below

I'm on a hill, far away from the river, but with all that rain and soaked ground the water finally came into the basement where the cables enter the house over night. Luckily, just 15 mm high, so it didn't jump the doorsill into other rooms. And it was all clear, no muddy mess, all nicely filtered through the earth, gravel and sand. My shop vac is also designed to work as a wet vacuum cleaner, so that was really helpful.
@prologic I suspect this one being made of rubber, too.
@prologic Exactly, for my purposes that's enough. When I started out, I never imagined that migrations will take this long with all my gazillions of tests. :-)
@prologic There's a medieval market around the corner and this man-made western capercaillie is part of an archery tour through the forest where you can shoot all sorts of animals with bow and arrow. This one was target nine on the map.

Due to all the rain the whole market was closed yesterday, though. Since it's still raining today and tomorrow, I expect this to be total flop this years. Only Thursday was actually dry.
@bmallred Confirmed, it's fixed. :-)
@prologic The schema migration itself is easy. When not already on the latest version, loop through all schema patches and see which need to be applied. Suppose, the database schema is at version 0.5, then the SQL queries for versions 0.6, 0.7 and 0.8 are executed one after the other in exactly that order. And with a maiden database it starts out with 0.1 and goes through all the steps. Well, I just restarted with 0.8 being the first supported version, attempts to load older database versions will abort with an error. :-)

The automatic migration at startup simply exist to make *my* life easier. I not only operate this thing locally when developing, but also on a test and production environment. It's very convenient if the existing prod and test data just keep working with a new software version and I don't have to manually migrate things by hand. Simply start the new software version and voilà. I really don't wanna miss that.

Since I don't enjoy doing admin stuff, there is one big thing to not worry about. Even though I messed up one migration step so far and had to fix the production database by hand (removing all existing sessions by hand, so that a new column without default value could be added). It worked flawlessly with the test and local databases before, though, no active sessions did exist anymore at the point of deployment). That raised my adrenaline level.

I reckon I keep the supported versions to a minimum from now on. At least as long as I am absolutely sure that I'm the only person operating that software.
@movq Very cute! :-)
@prologic @movq @bender Clearly a witch on a broom!
It was a tiny bit moist on today's stroll. We saw exactly one other person in the forest. It's only raining once the entire weekend. And how!

All the black stuff on the shore of the pool are tad poles. Technically, there are hundreds of them on the flooded forest road. :-)

Tad poles on the flooded road

https://lyse.isobeef.org/waldspaziergang-2024-05-31/
Oh yes, it's certainly the DROP and CREATE COLUMN of existing tables. Wow! Alrighty then, removing the migration, here we go.
@prologic I had to read it two, three times, but I think I got it. Let me try. I believe most of it is general advice, not just specific to Go only.

# No Interface Is A Good Interface

First of all, don't start out with an interface right at the very beginning. Only create one if you later on come to the conclusion that you really have to, because chances for truly needing one are actually slim.

I experience that at my dayjob, too. There is a code base where I always wonder why certain interfaces exist in the first place. They're all implemented by exactly one type each, which is kind of useless. Just the type alone would totally suffice.

That train of thought to always also have an interface along with an implementing type might come from the Java enterprise world, at least that's where I encountered it really heavily. I never liked that. It just makes the code arbitrarily more complicated than it needs to be. The best code is the one that doesn't even exist. Simpler is better. Complexity is the root of all evil.

Advocates of the type with interface faction then like to argue: "But maybe sometime in the future we would like to create a second type that implements this interface, you will never know@11!! Or think of refactoring, we can also change the underlying implementation completely when we have an interface in front of it without people knowing!" But that basically never happens in reality. It reminds me a bit of premature optimization, preparing for the unknown future. Firstly, things turn out differently and secondly, other than one thinks. :-)

To be fair, thinking about what might happen or not is still a very valid thing. In my opinion it is even done not enough in this agile world. Implementation first, consideration second (if at all). But there are limits. So, start out simple. No interface for you at first.

That general rule goes at least for application development, it can be a little bit different when you write a library. More flexibility _might_ be actually helpful there.

# Interface Placement

When you define an actually beneficial interface, then place it in the same package where it is actually used in. Or lexically close to where is is used for that matter. As oposed to in the package where the implementing type resides in. This recommendation is very logical to me. The interface describes the API, so it should also go along with the rest of our API.

# Return Values

When you have a factory function to create a type that implements an interface, return that implementing type, not the interface. Using ugly suffixes in identifiers to help visualize the concept:

o
type FooInterface interface {
    Foo()
}

type FooImplementation struct { }
func (f *FooImplementation) Foo() { }

func NewFoo() *FooImplementation /* as opposed to FooInterface */ {
    return &FooImplementation{}
}


Most of the time I agree on that rule (it feels natural and correct), sometimes I don't. I reckon this depends on the exact use case at hand.

# Testing

When you have a type that you want to test, the recommendation is to not create dedicated interfaces for testing purposes only in order to mock something. If you do, this smells like a bad API design of the type in the first place. Instead, try to make its regular, productive API better, so it can be also used when testing the type.

Phew, this turned out to be a much longer post than I first anticipated. ;-) I hope this helps a bit.
Hmm, when I join all my eight incremental database schema changes into just a single one (basically drop support for migration of old databases), my test execution time drops from about 1:10 minutes to just 33 seconds. I might consider doing exactly that. I'm the only one who runs that software anyway.

Just haven't figured out where exactly the speedup comes from. I suspected that the column recreation is kind of expensive, but it doesn't really appear to that obvious. More testing is needed.
@prologic Absolutely! :-)
@prologic That looks cool! It even appears to get close to sunset.
One of our scout leaders found a blackbird laying outside the car and is now raising her:

Blackbird

https://lyse.isobeef.org/amsel-2024-05-29/

I should have taken a video of that gorgeous bird.
Thanks, @prologic! Could definitely be worse.
And today also just a quick two hour roundtrip in order to make it to the Yarn meetup almost in time: https://lyse.isobeef.org/waldspaziergang-2024-05-25/

View to the Swabian Alps
Quick stroll of just one and a half hours yesterday: https://lyse.isobeef.org/waldspaziergang-2024-05-24/

Old barn
Absolutely, that was really awesome! Four and a half hours, time flew. Looking forward to the next one. :-)
14:00 local time is not bad at all for me, I just might be a tiny bit late today. See you later.
@movq Yeah, there are much better ways to waste time. :-D

@bender @aelaraji All this antivirus shit just enlarges the attack surface even more.
@prologic @aelaraji @anth @movq ICQ was the first IM I ever had. I also still know my number, but I deleted my account well over a decade ago together with AIM and MSN in favor of Jabber.
Lol, somebody reverse-engineered the secret API to tell Windows that some snake oil is installed: https://github.com/es3n1n/no-defender
@bender Sounds about spot on. :-D
@movq No, LibreOffice didn't exist back then. :-D The user interface was somehow green. No clue.

TeXNicCenter is either dead or just finished. All features implemented and all bugs fixed. That's the thing, one doesn't know with completed software. ;-)

(Lol, there was a fuzz on my screen. Just perfectly aligned, so it looked like an accent grave and I was wondering how the quote got corrupted. :-D)

Agreed, a lot of people don't need the real document structure markup.

I actually cannot remember when I wrote my last letter using LaTeX. Maybe it was some kind of termination letter for a service that could not be cancelled online. It must have been a few years ago. The last "proper-ish" use of LibreOffice was at the end of last year when printing a quiz and map for the scouts I think.

Today, I was in a meeting where a workmate gave a talk. I noticed the LaTeX beamer look and feel and was intrigued. He said, that he cobbled together the corporate design, but it's not ready for official use yet. But that's really cool. My last prepared presentation with LaTeX beamer was in my previous company a few years back. But I didn't care about corporate design at all.
Regarding https://www.uninformativ.de/blog/postings/2024-05-23/0/POSTING-en.html: I remember using Star $Something back in the days. I don't remember the exact name anymore and none of the screenshots of StarOffice look familiar. Hmm. I have a green UI in mind. Not sure if I completely hallucinate it or whether that was actually the case. It was a commercial software, not freeware, we had to buy it, I think.

My first LaTeX distribution was MiKTeX with – if I remember correctly – the TeXNicCenter. A bit later on Linux I used Kile as my LaTeX editor. LaTeX produces the worst error messages I've ever come across. So compile early and often. But the results are amazing.

I know people who never make use of headings and the like to this day. Bold, italics, underline etc. is all they use. Despite writing larger documents. Admittedly, it took me a while to figure out and appreciate all the advantages of actually marking up the document structure properly.

These days I rarely reach for LaTeX or LibreOffice to craft new stuff in my private life. Simple text files is usually it. RST and Markdown if it has to be more fancy.
This is cool, the Engineerguy talks about the engineering of duct tape: https://youtu.be/E-F2QQuZZGk
@movq @prologic @bender Oh, I neither noticed the DDG downtime nor was I aware of their partnership with Bing. O_o Oh dear! Never heard of most search engines in this linked graph.
Heck yeah, that's a super cool catapult! https://www.youtube.com/watch?v=1XGACnLDEps I'd love to build one now.
Just before the rain hit us hard:

[![Green trees in front of dark clouds](https://lyse.isobeef.org/mittagssonne-2024-05-22/01-vorschau.jpg)](https://lyse.isobeef.org/mittagssonne-2024-05-22/01.jpg)
@prologic Depends on whether you consider your favorite secret service third-party or not. :-D
Riders^WColors in the sky: Sunset of the day
@movq Yeah, not so much stuff left that is made around the corner.
@movq I don't know. I thought that I had to accept beeing added to the contact list before somebody could message me, but apparently, that's not the case. Let's see how that unfolds.
@movq Ah ja, der Holgi. ;-)
Oh dear, I got plenty of spam – if not even worse – on one of my jabber IDs. One sender JID was on exploit.net or exploit.im or something like that (I already forgot).
@stigatle Oh cool, that looks nice! Great job. Would he be able to jump the fence when standing on his hut's roof? How does the door lock work? Also, that's some giant bone. :-) I bet he loves that one.

I couldn't help myself but notice that it appears your stairs and the left of the deck need some countersinks for the screws. 8-)
Thank you, @prologic. Once you leave the shitty towns, our scenery is very nice. Doesn't compare to other places, but I've seen also way worse. :-)
Hmm, didn't yarnd automatically inline image URLs back in the days? Looks like I have to resort back to markdown images again.
@iolfree I n d e e d ! W o r d s a r e p r o p e r l y s e p a r a t e d
Let's just go with that view: https://lyse.isobeef.org/wanderung-auf-den-wasserberg-und-das-fuchseck-2024-05-18/24.jpg
Two mates and I went on a 25km hike yesterday to the Wasserberg (lit. Water Mountain) and Fuchseck (lit. Fox Corner) on the edge of the Swabian Alb. They arrived by train and of course it was delayed by half an hour, "due to limited availability of tracks". That was a first one, I never heard that reason before. Another train had a breakdown in a train station and later my mates' train had to be rebooted, too. That restart alone took 10 minutes. O_o Software problem, it can't be helped.

It rained the whole day before, so a lot of foot paths had turned into small creeks. Also, the mud levels were much higher than usual. We also took one or the other shortcut which were even messier. And also reeaalllly steep (see 07 and 08). It didn't help that my guiding abilities also sucked a bit and I took the wrong turn twice. Oh well, we just explored new paths I've never been on. That's a win in my book. :-)

After a rest at the Wasserberghaus with a Spezi, we then decided to also visit the Fuchseck, since we're just around the corner. It took a bit longer that I remembered and after enyoing the view and eating homemade waffles with apple sauce, we then made our way home.

About 100 meters in front of the train station it began to rain. The thunderstorm caught up on us. We just made it in time, a couple of minutes later, the train was supposed to show up. I quickly walked home and was a bit soaked when I unlocked the front door.

It was great fun, it was a nice stroll for me, my mates were absolutely exhausted. Well, I admit, my feet hurt, too. :-)

Here's a nice view on the Three Emperor-Mountains in the distance. From left to right: Hohenstaufen, Rechberg and Stuifen, the left one is my backyard mountain:

https://lyse.isobeef.org/wanderung-auf-den-wasserberg-und-das-fuchseck-2024-05-18/42.jpg

More pics: https://lyse.isobeef.org/wanderung-auf-den-wasserberg-und-das-fuchseck-2024-05-18/