That's a very interesting thought and I agree: https://benhoyt.com/writings/dependencies/
It's blackbird time again! https://lyse.isobeef.org/amsel-2026-03-29/
Once again, there's rain, snow, hail, thunder, wind and sunshine today. I have the feeling that this spring we've had a significantly higher appearance of hail than in previous years combined. That can only mean one thing, the cloud seeders went on strike!!
The next thunderstorm is already brewing on the horizon. The rolling thunder is getting loader and the wind picks up, too.
No sign of April weather today, though. The setting sun was gorgeous: https://lyse.isobeef.org/abendhimmel-2026-03-27/
April is right around the corner. Calm, wind, sunshine, rain, snow, hail, thunder, we got it all yesterday. https://lyse.isobeef.org/abendhimmel-2026-03-26/
Hey all my dear twtxters! Again, please have a look at https://git.mills.io/yarnsocial/twtxt.dev/pulls/28 so that we can button the Twt Hash v2 Extension up soon. Love to get some feedback, comments, questions, doubts, critiques, improvements, etc.
I thought that YouTube finally destroyed all the feeds, because I didn't get any new entries in my newsreader for days. Now I realized that Newsboat somehow just froze. No idea what happened. This is the very first time ever in all those years. Haven't updated the version for literally years. I reckon I will compile the upcoming version then. This will require a new Rust toolchain, that's going to be great fun, I'm sure. Already looking forward to that…
Of course, the battery went flat when I saw the deer. During the change they escaped into the woods. Still a super lovely stroll. https://lyse.isobeef.org/waldspaziergang-2026-03-19/
The 12°C sunshine was rather windy all day long as witnessed by the ruffled 02. https://lyse.isobeef.org/waldspaziergang-2026-03-18/
To whoever is operating this "xt" client, there might be a misconfiguration. My feed is often, but not always, pulled twice within a few seconds:
2026-03-14T15:31:02+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T15:31:31+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T15:41:19+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T15:41:31+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T15:51:04+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T16:01:25+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T16:01:27+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T16:11:51+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T16:11:54+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T16:21:53+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T16:32:19+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T16:32:22+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T16:52:28+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
2026-03-14T16:52:31+01:00 "GET /twtxt.txt HTTP/1.1" 304 "xt/0.0.1"
Maybe this is caused by a development and a production setup, no idea. Since this client is sending the If-Modified-Since or If-None-Match request header, I'm good with that, though. Looking forward to discover a new feed hopefully soon. :-)
Nice cloud formations this evening. Obviously, they looked much cooler in person. https://lyse.isobeef.org/abendhimmel-2026-03-09/
After making three crosses (state and mayoral election) my mate and I went into the wildernes. Well, nature at least. There are heaps of people out there, too. The 13°C (and still raising) are very nice. I'm drowing in sweat, though.
I missed the 20°C on Friday, but I took profits of the 10°C this evening: https://lyse.isobeef.org/waldspaziergang-2026-03-01/
Awwwww, sooo beautiful! Handmade tiles for a tiled stove: https://www.youtube.com/watch?v=k8hBf5b99Jk
I've exhausted my stock of 5x30mm wooden dowels. Looking online for supplies yielded tons of merchants who are out of stock, ship only to businesses, offer only insane quantities (minimum of 10kg) or charge overprice for absolute joke amounts.
None of my local hardware stores has them, they're either also out of stock or generally don't carry them at all. Same with long 5mm diameter round sticks in general. What the heck?!
I just make a "dowel iron" tomorrow, a steel plate with a sharp edged 5mm hole. Since I've got heaps of 6x30mm dowels, I just hammer them through. They will be smooth and not corrugated, but that's totally fine with me.
Can anyone recommend a command-line SQL query formatter? Unfortunately, sqlparse is also unsuitable for me: https://github.com/andialbrecht/sqlparse/issues/688
I took advantage of the beautiful 14°C sunshine and decided to have a long lunch break: https://lyse.isobeef.org/waldspaziergang-2026-02-25/ When there was no wind, the thin jacket was actually too warm.
It's raining and raining and raining and raining. I had hoped my mate canceled the hike today. But he didn't. He showed up. So, off we went to the Staufeneck Castle Ruin after having a lunch first. The rain drizzling on the umbrella was very nice and I was very glad that he dragged me outside.
It was super wet, though. Entire creeks were coming down on some path sections. A slippery, muddy mess on others. Our boots were already soaked a few kilometers in the trip. The important part was that the feet were warm, though, despite being wet. We barely met anybody in this lousy weather. So we had basically everything for us alone. That's always great.
Visibility was poor the higher we got. At 13 a low hanging cloud was moving in, 14 is the result just three minutes later. We couldn't see the castle 300 meters away anymore. No chance. It was really funny, because the houses in town at two kilometers distance were still visible. Poorly, but you could clearly make out the town. Not the castle, there was just a white wall of cloud :-)
On the way back, we warmed up with tea I brought along. After I dropped off my mate at the train station, I bumped into a fellow scout, so my wet feet cooled off completely in these 15 minutes we talked. The rainjacket mostly held up with the protection of the umbrella, just the sleeves were down. My rain trousers, on the other hand, leaked a little bit a the lower ends. I was glad when I could strip all the wet stuff. I would do it again, though. :-) Now, I'm swapping the newspaper in my boots every half an hour to absorb all the moisture.
https://lyse.isobeef.org/wanderung-auf-die-burg-staufeneck-2026-02-21/
Oh, our leaning silo laughs at the Leaning Tower of Pisa. :-D I'm wondering when it collapses. I'm waiting for this to happen for years now.
There was an endless coming and going of sun, clouds and rain. Not to forget about the wind. I called it quits a bit earlier and went into the woods.
Towards the end I was completeley surrounded by rain curtains in all directions. This looked super cool. I thought I might make it home just in time without having to use my umbrella, but the rain clouds were way quicker than I anticipated. Just after the rain hit me, I met an acquaintance who just started his walk. The wind picked up hard and rain hammered down, mixed with snow. Holding the umbrella was a workout. Shortly after I returned, the rain stopped again.
I didn't notice the kestrel sitting on the tree when I took the last photo. That was a nice surprise when I sorted through the nearly 300 pics.
All gray the last few days, but there was one morning exception: https://lyse.isobeef.org/morgensonne-2026-02-12/
A mate just recommended this German talk why people don't wanna work at your company: https://media.ccc.de/v/froscon2025-3321-es_es_ka_em_warum_gute_leute_nicht_bei_euch_arbeiten_wollen It's really good. I fully agree with most parts.
The speaker referenced https://www.youtube.com/watch?v=2xmEgtRhw7o (Mårten Mickos: Believe in Something Bigger Than Yourself) which is also very interesting, if you make it through the first bit. He talks about his CEO role at MySQL AB.
For several days again, YouTube fucks up all the Atom feeds every European morning. A bunch of hours just 404s. :-(
We just wanted to play one or the other quick round of Rummikub after quitting time and suddenly it's now three hours later. :-)
Fuck me dead! I accidentally confused an HTML file for a YAML file and manually opened it in my browser. Unfortunately, I clicked on the OK button of the popped up dialog a bit too fast, it just caught me off guard. It asked which program to open the YAML file in. Of course Firefox thought that it could handle that and suggested itself by default. Conveniently, the "don't prompt me again and always use this selection from now on" checkbox was enabled.
And then the endless loop of death started. Turns out, this fucking browser can't do shit with YAML files and delegated to what had been just configured. Oh, would you look at that!? Firefox! Empty tabs after empty tabs appeared. Killing and restarting Firefox just loaded the last session with all the tabs and the loop continued.
Some bloody snakeoil on my work machine slows down link openening requests by two, three seconds. It's always absolutely anoying, but luckily, it actually limited the rate of new tabs popping up. I still could not close the many tabs fast enough that had accumulated before I noticed what was going on in the background.
Going to the settings to change them was always interrupted with a new tab opening in the foreground.
Finally, killing Firefox and renaming the file on disk before restarting Firefox did the trick and broke the loop. I was still holding down Ctrl+W for a minute or so to get rid of the useless tabs. I didn't want to loose the important tabs, so just ditching the session wasn't an option.
Hmmm, that's a pity. I never realized that before. The following Go code
var b bool
…
b |= otherBool
results in a compilation error:
invalid operation: operator | not defined on b (variable of type bool)
I cannot use || for assignments as in ||= according to https://go.dev/ref/spec#Assignment_statements. Instead, I have to write b = b || otherBool like a barbarian. Oh well, probably doesn't happen all that often, given that I only now run into this after all those many years.
It was so great going to the sauna again, we were looking forward to that the whole week. :-) It's been over a year, holy cow, time flies. We definitely have to pick up on that tradition again, that's for sure.
We attended two Aufguss sessions, the first and last one in our four hour visit. Unfortunately, we didn't make it to the other two, because the crazy people already occupied the entire sauna 15 minutes before the start. Yeah, no.
Now, the bellies are stuffed with kebabs. Yum! Let's see how often I wake up tonight to rehydrate.
Ich hab es jetzt endlich geschafft, diese alte Podcastdatei anzuhören, die ich auf meiner Platte fand. Omega-Tau 293 über Wasserstraßen und im Speziellen den Neckar. Total interessant. Ich bin bisher noch nie über diese Serie gestolpert und habe keine Ahnung, wie ich überhaupt zu der Datei kam. Leider ist der Podcast mittlerweile eingestellt, das TLS-Zertifikat der Website die Tage abgelaufen und die Folgenseite tot, aber die Audiodatei gibt's noch: https://traffic.libsyn.com/secure/omegataupodcast/omegatau-393-wasserstrassen.mp3
A few minutes of nice colors in the sky: https://lyse.isobeef.org/abendhimmel-2026-02-04/
Building a Roman crossbow completely by hand is soo fascinating and damn cool: https://youtube.com/watch?v=sSCwmXy_8Bo
Just showelled 20cm of snow for half an hour, fuck me! I'm totally shattered. But it's worth it. Looks so beautiful. And all the disbelief and terror in the eyes of the people. Well, that's what our winters were like three decades ago. I'm just glad that I can work from home.
What a beautiful, beautiful 0°C Sunday arvo and evening! The weather forecast delayed the snow by the minute. An hour or so after it finally started very, very lightly, I headed off for the woods to check out the lake again. Unfortunately, with the fresh snow layer, the crazy wild surface texture of the ice sheet wasn't visible anymore. But it brought some other nice views and photo opportunities.
I initially thought that I just go for a quick turn. However, with the snowfall a wee bit increasing I was hooked and kept going. Visibility was poor, but the snow blankets just looked too stunning. The road surfaces were quite slippery, so I often just walked alongside the pathways. On downhill slopes I had some good fun sliding down the road on my feet. With varying success. Luckily, I managed not to fall.
On the summit of the mountain the twigs had those absolutely magnificently looking windblown crystal coverings. Awwwwwww! They never get old. It was already getting dark, so the camera was tired and wanted to sleep. The snow program then made use of the flash and I'm quite pleased with how these shots turned out.
Two deer crossed the road in front of me and ran into the woods, that was sight for sore eyes. Although I felt bad that they had to flee from me in this white terrain. By the time I got home, the snow had accumulated around eight centimeters in height, even in town down in the valley. Walking on this fresh snow is just amazing. And I love the sound it makes. Today, the snow consistency must have been just right, because the crushing sound was really loud.
I cannot recall that I had frozen hair and beard before, but today, there was a thick ice buildup. In case I had, it was definitely never this much. Felt really cool.
Enough of this preliminary skirmishing, there ya go: https://lyse.isobeef.org/waldspaziergang-2026-01-25/
It's been slightly ice cold: https://lyse.isobeef.org/waldspaziergang-2026-01-23/
My mate and I went on a hike earlier. Yesterday, we had lovely 12°C. But today, it was down to at most 4°C. Oh well. At least the sun was out and and there was just a tiny bit of wind. We knew upfont that scarf, beanie and gloves were mandatory. Especially at the more windy sections like up top the hills. The view was absolutely terrible, but we made the best of it.
With the sun shining on us during our lunch break at a forest edge bench, we still enjoyed the lookout in 01. I brought some old carpet scraps to sit on and was happily surprised that they isolated even better than I had hoped for. Some hot tea helped us staying warm.
After five hours we returned just after sunset. I'm quite tired now, completely out of shape.
Here am I looking at the different tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace… :-D Yep, suddenly there went my X…
So far, it appears as if I can have either only Ctrl or Alt as modifiers. But not in combination. And Shift is just never ever set at all. Interesting.
I'm trying to implement configurable key bindings in tt. Boy, is parsing the key names into tcell.EventKeys a horrible thing. This type consists of three information:
- maybe a predefined compound key sequence, like Ctrl+A
- maybe some modifiers, such as Shift, Ctrl, etc.
- maybe a rune if neither modifiers are present nor a predefined compound key exists
It's hardcoded usage results in code like this:
func (t *TreeView[T]) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
switch event.Key() {
case tcell.KeyUp:
t.moveUp()
case tcell.KeyDown:
t.moveDown()
case tcell.KeyHome:
t.moveTop()
case tcell.KeyEnd:
t.moveBottom()
case tcell.KeyCtrlE:
t.moveScrollOffsetDown()
case tcell.KeyCtrlY:
t.moveScrollOffsetUp()
case tcell.KeyTab, tcell.KeyBacktab:
if t.finished != nil {
t.finished(event.Key())
}
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'k':
t.moveUp()
case 'j':
t.moveDown()
case 'g':
t.moveTop()
case 'G':
t.moveBottom()
}
}
}
})
}
This data structure is just awful to handle and especially initialize in my opinion. Some compound tcell.Keys are mapped to human-readable names in tcell.KeyNames. However, these names always use - to join modifiers, e.g. resulting in Ctrl-A, whereas tcell.EventKey.Name() produces +-delimited strings, e.g. Ctrl+A. Gnaarf, why this asymmetry!? O_o
I just checked k9s and they're extending tcell.KeyNames with their own tcell.Key definitions like crazy: https://github.com/derailed/k9s/blob/master/internal/ui/key.go Then, they convert an original tcell.EventKey to tcell.Key: https://github.com/derailed/k9s/blob/b53f3091ca2d9ab963913b0d5e59376aea3f3e51/internal/ui/app.go#L287 This must be used when actually handling keyboard input: https://github.com/derailed/k9s/blob/e55083ba271eed6fc4014674890f70c5ed6c70e0/internal/ui/tree.go#L101
This seems to be much nicer to use. However, I fear this will break eventually. And it's more fragile in general, because it's rather easy to forget the conversion or one can get confused whether a certain key at hand is now an original tcell.Key coming from the library or an "extended" one.
I will see if I can find some other programs that provide configurable tcell key bindings.
It drizzled all morning when we picked up the old christmas trees in town with the scouts. Right after lunch the snow storm suddenly hit and dumped three centimeters of snow in just 15 minutes. I cycled home in these crazy conditions, freezing rain hammered my face. As soon as I arrived, it stopped. It's now down to drizzling again.
All my soaked gear is now hung up to dry. The next 11 months, I'm going to find needles over needles in all kind of impossible places.
@movq I noticed that your feed's last modification timestamp was missing in my database. I cannot tell for certain, but I think it did work before. Turns out, your httpd now sends the Last-Modified with UTC instead of GMT. Current example:
Sat, 03 Jan 2026 06:50:20 UTC
I'm not a fan of this timestamp format at all, but according to the HTTP specification, HTTP-date must always use GMT for a timezone, nothing else: https://httpwg.org/specs/rfc9110.html#http.date
The only good thing about this absolute craziness is that I can restock my rocket sticks. I picked up twelve along the way. Unfortunately, it looks like 99.999% of ammunition is bombs instead of rockets. Some sections of my street look exactly like an arbitrary Pakistanian town that I've seen online.
There was surprisingly much snow in the woods. Also, all ponds have frozen over. I didn't expect that. Not at all. There were even illegal ice skating tracks in the natural reserve. We came across a large puddle and it was at least 10cm solid ice to the ground. Crazy!
Timeline Sandbox