I didn't try it, but this looks like something for real sysadmins: https://github.com/dimonomid/nerdlog The UI looks very usable and the README is also promising.
These commit messages… https://github.com/vergonha/garden-tui
@movq Regarding https://movq.de/blog/postings/2026-06-16/0/POSTING-en.html:
In my opinion, the KDE 3.5 menu was organized way better than the Windows Start menu. Granted, a typical KDE installation had much more applications to offer, too. So, there was more need to get it right. And it probably was also later in time.
Isn't Notepad++ and Python cheating!? :-D
Crazy story on the clock's seconds. I never heard of that before. Neat.
Yeah, UI these days is horrible. (That's why my own TUIs suck, too!)
The dairy farm has a new milk vending machine. The prices increased by 20%. One liter is now 1.20€ instead of 1.00€. But I don't complain.
In a few meters of shrubs there were easily 50 butterflies. That was crazy, I've never seen this many in one spot. I should have taken a video.
The grain field in the beginning was looking so great. Crazy colorful and very yummy looking. I would have loved to take a bite. Or at least lie down right in the middle.
That was another great time in the outdoors. The 21°C were killing us, though. We were always glad when we reached a shady spot with a little breeze. I'm not gonna survive the 35°C later this week. :-(
Die Meisterschaft der Speisewagenschieber in Stuttgart: https://www.youtube.com/watch?v=OfgwdBBWzCw Eine großartige Vorstellung einer Unfalluntersuchung. :-D
Every now and then, I think that I have carefully proof-read my message enough times and hit the "Add message" button in tt. But then, in the message tree, I spot another missed typo. My process is then to go to my twtxt.txt and fix it by hand. However, I still have to clean up tt's cache. This is rather tidious:
- Recall the
sqlitebrowser ~/.local/share/twtxt/tt2.sqlitefrom my shell history. - Switch to the "Browse data" tab.
- Go to the
messagestable and wait a second or two until it's loaded. - Sort by the
created_atcolumn twice, so that I get descending order. - Select the first message, which is typically the one in question.
- Find the "Remove currently selected row" button in the tool bar.
- Commit the changes.
- Close sqlitebrowser.
So, I finally implemented the removal of messages from the cache in tt. I can now hit d and confirm the removal. Bam! Should have done that ages ago!
https://lyse.isobeef.org/tmp/tt-confirm-message-removal.png
Next up is the search, I think.
Oh boy, I absolutely hate this stupid trend of not writing changelogs anymore! Why the fuck would one seriously consider it to be a viable option to just let some shitty bot spew all merge requests on a goddamn GitHub release?! First of all, these merge request titles suck balls. The order of the changes in this "changelog" is completely random (well, probably merge time, which is as useless as the dick on the Pope). They are not grouped by anything at all. Additions, changes, removals, deprecations, etc. randomly mixed up in one giant list. And then "Add feature X", seventeen kilometers further down "Revert 'Add feature X'". Fuck you! Don't include this shit in the first place!
Fits absolutely perfect in the pattern of rapid decline.
I must rip out all dependencies as soon as possible whose maintainers just don't give a shit.
I went to check on the fireflies this season. But I didn't see any. Instead lots of moths. At first, I thought it might have been still too light, but it was already dark enough for me to miss and destroy a snail shell. Bummer. Maybe it was too wet tonight. Although, it's probably just another or two weeks until my glowing friends will finally show up.
In the beginning, I passed two beautiful deer on the edge of the forest. They were just ten meters away, but didn't run off, really cool. :-) I kept on walking. Before I eventually left the woodland, a frog or toad crossed my path. It was very dark by then, though, so all I could see was a black blob.
Back in town, the street lamps on the first third were all turned off for some reason. I was already glad that I will reach home without getting blinded this time, but unfortunately, the other lamps were all operational.
We just got some unicorn vomit again: https://lyse.isobeef.org/abendhimmel-2026-06-09/
We came across lots of animals in our woodland. There's a medieval market this weekend in the neighboring town and they use these targets for the bowmen.
I might have to clean windows tomorrow. https://lyse.isobeef.org/voegel-2026-06-05/
Holy moly, these thunderstorm clouds are blacker than black, wow! The rain smells so wonderful. Yummy!
I was wondering why all the twt hashes in my replies today were still so short. I was ahead of the times. The Twt Hash v2 Epoch only begins next month.
Oh, nice. In my endeavors of time in C++, I came across cal 9 1752. https://www.redhat.com/en/blog/brief-history-mktime
Oh boy, it was bloody humid this morning. Just around 20°C when we left, but climbing rapidly. The flow of air when walking was okay, but as soon as we stopped, streams of sweat were pouring down on us. Luckily, it was cloudy, but the lack of wind was bad. Now, the sun is out, 29°C will be reached in an hour and I'm glad that the house is still cool. It will be a different story in a few weeks or months. Not looking forward to that at ll.
On the bright side, we saw the first tadpoles of the year and an also first, but sadly dead slow worm that probably some bird dropped on a bench next to the fountain. The fly was stuck to its feast and also cactus. The municipality fixed the railing nicely and we came across a giant patch of great looking fire bugs on the summit.
All in all, a successful stroll through the woods but for the humid heat.
These nicely lit jet trails are the work of the sunset: https://lyse.isobeef.org/abendhimmel-2026-05-22/
One and a half weeks ago, our sunset delivered strong colors: https://lyse.isobeef.org/abendhimmel-2026-05-21/ Apologies for the damn fuzz in the optics.
I rode my bicyle to the scout flea market setup a few weeks ago when I had to stop to admire the morning sun lighting up the fields. https://lyse.isobeef.org/morgensonne-2026-05-08/ Of course, these photos don't do justice at all.
You didn't change your Atom feed by any chance yesterday or today, @movq? Not only do I have a metric shitton of "new" old items in my YouTube feeds, but also a bunch of your old articles are shown as new.
I fear that this is a Newsboat bug. I rebuilt it yesterday from master.
I should have changed the key binding from Print to Shift+Print a long time ago to launch import and upload the screenshot to my server. I was constantly hitting that stupid key on accident when I actually wanted to press [AltGr].
If I only could map a key binding to slap these damn ThinkPad T15 keyboard layout designers at Lenovo remotely in the face. Seriously, who in their right mind puts Print (in German Druck) between AltGr and Ctrl at the bottom row to begin with?! Exactly. Nobody. What a horrible location.
Interesting read on the ECONNRESET saga, @movq. Thanks for the writeup! <3
I just wanted to look up 9V block battery prices online and these automatically generated descriptions are getting dumber by the minute:
Datum der Erzeugung: Verfallsdatum minus 7 Jahre
(Date of manufacturing: expiration date minus 7 years)
Or look at this one:
Die leistungsstarke 9 V-Block E Batterie, auch 6LR61 genannt, eignet sich besonders gut für Taschenlampen, Radio oder Kinderspielzeug, die einen gleichbleibenden Strombedarf haben. Ihre max. Spannung beträgt 1,5 V.
(The high performance 9 V block E battery, also known as 6LR61, is particularly suitable for torches, radio or child's toys, which have a steady power demand. Its max. voltage is 1.5 V.)
The battery is best suited for… devices where it fits. No shit, Sherlock! Has anyboy ever come across 9V block torches? O_o I haven't.
Our storage box is not reachable for hours, the support response is unhelpful to say the least. Let's see how long it takes them to actually fix this. Until then, no photo galleries etc. available.
All sorts of .de domains don't resolve right now. But not all, movq.de for example still works. All on our server and basically all major other sites are cactus. Maybe some DENIC problem? I'm too tired to investigate, but I'm looking forward to tomorrow to read some report on that. :-) Good night.
This greenfinch isn't all that green: https://lyse.isobeef.org/gruenfink-2026-05-02/01.jpg
Two mates and I went hiking yesterday. The sun was beating down on us, but luckily, it was also rather windy which helped to cool off. Unfortunately, we also encountered bucketloads of drunk hikers with hardcarts loaded full of beer who had to very loudly please everbody with their shitty taste of music. What a stupid tradition on 1st May public holiday over here. Other than that, it was a great hike.
I was pleasantly surprised that my trains were dead on time, so both super short times to switch connections worked out perfectly on both the way there and back. I did not expect this to happen at all and already braced myself for an additional half hour waiting time. Especially with the stupid Stuttgart Beer Festival right now. Even more drunk idiots everywhere and of course also in the trains. On the return journey, I learned about all sorts of family relations etc. in various Allgäu villages. Oh boy. At least nobody vomited, that's a bonus.
Also, I sweated more on the first return Sauna-Bahn than on the entire hike combined. It was awfully hot in there.
Anyway, all in all it was a great time in the outdoors with my mates: https://lyse.isobeef.org/monrepos-favoritepark-hungerberg-ruine-hoheneck-2026-05-01/
And a trip to my backyard mountain again. It was very windy, so the 16°C felt even cooler than that. But it will be back in the twenties tomorrow when I visit a mate for a hike, oof.
It's just so beautiful out here. https://lyse.isobeef.org/waldspaziergang-2026-04-29/
Fuck me dead, our sky burned down once again! https://lyse.isobeef.org/abendhimmel-2026-04-28/
You can hear Azabache somewhere in these trees, but the video only shows a raven. I think. There are also pidgeons over there, but it looks more raveny to me.
Really nothing spectacular at all today, but yet we still got some red for less than five minutes: https://lyse.isobeef.org/abendhimmel-2026-04-27/ Azabache was hiding somewhere in the trees, I could hear him very well, but not lay my eye on him. The leaves are already covering him up perfectly now.
Azabache was back today: https://lyse.isobeef.org/amsel-2026-04-26/
I have to research what bird is 02. https://lyse.isobeef.org/voegel-2026-04-20/
In order to guard against accumulation of waste data, it is advisable to leave the memory card at home.
I left at full sunshine and completely forgot to bring my bicycle's headlamp. The taillight is always on the bike, but the front one gets charged in the house after every trip. Luckily, I found a torch and roll of duct tape in my hiking backpack. It finally paid off that I always carry all this silly gear around.
A few weeks ago, I actually thought about removing the torch, because it's been a hot minute when I last used it. Fortunately, I did not. :-)
With all these new ways of digital publishing, I'm wondering for years why music artists still release entire albums. I would have imagined that most bands simply publish a new song whenever it's good to go. But no, at least in my bubble, everybody still collects a bunch of new songs before throwing them as a collection into the crowd. I never used any of these streaming services, though, so maybe I'm just completely uninformed.
PSA: Check your ladders everybody! https://youtu.be/0wqodPGId-8
Somebody really has got their session handling licked. I'm surfing in a webshop and opening another article to check on the details only to receive the error message: "An error occurred during the ordering procedure with PayPal. Please try again later or use the normal ordering process."
My mate and I hiked some 16-18 kilometers to the Wasserberg. The 22°C sun was beating down hard on us. There were quite a bunch of clouds all around, but none of them casted the tiniest shade on us. Only in the second half we got a little bit luckier in that regard. Still, we were soaked before we even left town. Hardly any breeze.
Unfortunately, I left my camera at home and found it hidden behind the cettle in the kitchen after searching the entire house for some 15 odd minutes. However, a greenfinch paid me a visit this morning and I got it on camera. The sunset was crazy colored, too:
The weathermen just cannot be right with their 20°C today, it must have been more. It was awfully hot, the light breeze was not enough and even absent most of the time. In the shade, it was alright. Other than that, the walk to the dairy farm and back was really beautiful. Very lovely scenery.
Somebody spilled their paintbox at sunset. Unfortunately, I missed to reinsert the SD card into my camera, so I could not take more photos of Azabache and his new mate. They quickly disappeared. He even landed right next to my window, so that would have been a killer shot.
We cleaned up the forest today with the scouts at absolute dream weather. Blue sky, no clouds, 19°C sunshine. In the morning it was still quite chilly and windy, though. We didn't find anything spectacular, maybe a rubber dinghy, three car tires and a broken ratchet strap are the most outstanding things to me apart from all the general rubbish, cigarettes, glass, wet wipes, etc. Still, a very fun activity. In the end we had bockwurst, grilled cheese and lye buns on the camp fire.
I then went for a quick stroll with my mate. It's crazy how quickly the clouds moved in, 30-45 minutes tops. There will be rain in an hour. And the coming days only reach half the temps. I'm glad I took advantage of the great spring day. Haven't seen Azabache yet and with the rain on deck, the odds are against him and me.
Eehhh, what the hell is going on here!?
SELECT
printf("0x%x", (1 << 63) - 2),
printf("0x%x", (1 << 63) - 1),
printf("0x%x", 1 << 63 ),
printf("0x%x", (1 << 63) + 1),
printf("0x%x", (1 << 63) + 2)
SQLite yields:
0x8000000000000000 (instead of 0x7ffffffffffffffe)
0x8000000000000000 (instead of 0x7fffffffffffffff)
0x8000000000000000 (correct)
0x8000000000000001 (correct)
0x8000000000000002 (correct)
Huh!? O_o Am I stupid? What am I missing here? Or is this actually a bug? :-?
With 62 bits, everything is spot on:
0x3ffffffffffffffe
0x3fffffffffffffff
0x4000000000000000
0x4000000000000001
0x4000000000000002
And 64 bits rather unsurprisingly also yield:
0xfffffffffffffffe
0xffffffffffffffff
0x0
0x1
0x2 Via https://github.com/newsboat/newsboat/issues/3220#issuecomment-4198066671 I came across this nice selection on why not to use AI: https://github.com/Vxrpenter/AIMania/blob/main/WHY.md#why
This then lead me to the slopware list: https://codeberg.org/small-hack/open-slopware
Holy shit, there's even more than I thought. :-O In addition to Vim, the following affects me more or less daily (but hopefully not my ancient versions): curl, VLC, ImageMagick, rsync, Python, systemd and even the Linux Kernel itself. Oh fuck me dead. :'-(
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