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?
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. ;-)
[](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.
[](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.
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'm now really looking forward to a night hike soon.

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:

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.
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.

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).
[](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!

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
* https://twtxt.net/user/prologic/twtxt.txt
* https://twtxt.net/user/bender/twtxt.txt
* https://twtxt.net/user/shreyan/twtxt.txt*

Hell no, I don't want to trade weathers. :-D Our humidity was around 60%.
https://lyse.isobeef.org/waldspaziergang-2024-06-07/

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.

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.
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.
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.

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.
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.
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.
All the black stuff on the shore of the pool are tad poles. Technically, there are hundreds of them on the flooded forest road. :-)

https://lyse.isobeef.org/waldspaziergang-2024-05-31/
DROP
and CREATE COLUMN
of existing tables. Wow! Alrighty then, removing the migration, here we go.
# 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.
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.

https://lyse.isobeef.org/amsel-2024-05-29/
I should have taken a video of that gorgeous bird.


@bender @aelaraji All this antivirus shit just enlarges the attack surface even more.
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.
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.
[](https://lyse.isobeef.org/mittagssonne-2024-05-22/01.jpg)

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-)

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/