@movq@www.uninformativ.de Sometimes, views on quality code are 180° apart.
Here we are, it took me a bit longer: https://lyse.isobeef.org/code-readability/
I found my tripod and headed into the woods. There was a ton of glow. \o/ The fireflies were everywhere, super cool. It looked so amazing, especially with all the flying boys. There was one amazing spot in particular, I had 80-100 individuals in my view at once. Absolutely breathtaking. Unfortunately, the mozzies were also delighted about my visit.
I tried my best, but itâs impossible to capture anything on film with my equipment. The fireflies are just way too dim. In the end, I managed to get some very bright girls in the bush. Thatâs the best I could do, but still really bad. Sorry @bender@twtxt.net. :-(
https://lyse.isobeef.org/gluehwuermchen-2026-06-19/
And no idea what the heck is going on with the CSS there. Anyway. Garbage to trash, seems fitting. ;-)
@movq@www.uninformativ.de Yeah, the damn message to urge me into updating for no reason. It still works fine, why update then!? Leave me alone. If downloading fails, thereâs already a hint that updating might fix it. The introduction of this banner in https://github.com/yt-dlp/yt-dlp/pull/13937 doesnât give any reason for that change either.
Didnât find my tripod. :-( But I will track it down tomorrow. We saw easily one, two thousand fireflies. They were everywhere. Really awesome!
Oh come on! Why such a stupid anti-feature!?
WARNING: Your yt-dlp version (2026.03.17) is older than 90 days!
It is strongly recommended to always use the latest version. You cannot update when running from source code; Use git to pull the latest changes. To suppress this warning, add --no-update to your command/config.
@bender@twtxt.net I wish I could do that. Unfortunately, my camera is not good enough. Not even close. Itâs just all black. :â-( #000. Or maybe #060508 if youâre really lucky.
But I will take my tripod tonight and see what I can do.
@movq@www.uninformativ.de Hahaha. It could have been worse, though. Iâve heard stories from others that were many levels crazier than what I experienced. And Iâm glad that I was very, very lucky with almost all of my teachers throughout all of school. One of my maths teacher, who was also my computer science teacher then, is the reason I do what I do for a living. Itâs all his fault! ;-)
Ja, possibly a BaWĂŒ thing. The ministry of education and cultural affairs changes the rules, curriculums and details every one or two years, anyway.
Said teacher had to fight real hard that he was allowed to teach CS in class 12 and 13. As a real subject, that is, not just an extracurricular activity (âAGâ). At first, the ministry refused, because weâre just am âallgemeinbildendes Gmyiâ, not an âinformationstechnisches Gymiâ. Itâs insane, youâve got super motivated (and technically as well as humanly excellent) teachers and then forbid them to offer a class. What the hell!? (Fun fact on top, he had a doctor in CS and was also teaching at the university of applied sciences.)
Eventually, they granted permission to only have a two hours a week class (âzweistĂŒndig, wie Nebenfachâ). One or two years later â too late for me, unfortunately â they allowed four hours a week (âvierstĂŒndig, wie Hauptfachâ). But each pupil had to sign upfont that they will not take CS class in the Abi. That was still exclusive to ITGs only. Completely ridiculous.
I reckon, you can talk to any random teacher and they will endlessly tell you about very dubious decicions from the ministry. :-/
@bender@twtxt.net Hell yeah, weâve seen the first fireflies of the season! \o/ \o/ \o/ How cool! Maybe 50-70 in total. Gotta check every evening now. :-)
The sunset wasnât too bad when I left the house to pick up my mate: https://lyse.isobeef.org/abendhimmel-2026-06-17/
Itâs Venus over the moon. And Jupiter is further diagonally down between the clouds.
@movq@www.uninformativ.de That was before my time, I joined the party late. :-)
@movq@www.uninformativ.de Let us know how it went. :-)
@movq@www.uninformativ.de Thatâs right, way harder than centrally managed. They even didnât reach concensus over the main folder: âAlle Programme, âAlle Programme (x86)â, âAll Programsâ, âAll Programmesâ, etc. Anyway.
For class 11 (or maybe already in 10, I donât remember exactly) we could choose either between traditional maths class with a graphical calculator or âMathe mit CASâ. There were two teachers in my entire school who were able to teach the latter. It was also fairly new at the time I believe. Certainly unheard of for a âallgemeinbildendes Gymnasiumâ, maybe the technical ones were already offering it for some time, not sure. It was clear to me that I would take the maths with CAS class.
Each kid had to buy their own Cassiopeia A-Something. I donât know how much that thing was (definitely more expensive than a graphical calculator) and whether the school subsidized that in any form. But it was slow and underpowered as hell. We rarely used it in class nor for homework (most if not all had already a desktop at home). Typically, when we worked with the CAS, we sat down on the desktop computers. Our class took place in one of the two computer rooms. The desktops were placed on the three sides (left, right, back, facing the walls or windows) and the regular school desks were in the middle. Since there were more pupils than desktops, we always shared. Nowadays, we call it pair programming. ;-)
For the exams we had the âmandatory partâ (Pflichtteil) without any tools. Once we finished that and handed the papers to our teacher, we were then allowed to boot up our Cassiopeias and work with them for the second part. Before the exam started, everyone had to show the teacher that they reset their small computer to factory settings. This second part was called âWahlteilâ. But you had to do it in order to pass. So, I never understood the choice of this term. Maybe itâs because the first part is the exact same for everyone (graphical calculator and CAS class), but the second part was definitely different for the two classes. Each suited to their tools.
After one or two exams, it became clear that the Cassiopeia was far from ideal. So, we took the second part at the desktop computers from then on. Our teacher unplugged the network cables himself to avoid cheating. Each computer had an âHDD Sheriffâ running that reset the disk at startup. There was also an issue that the personal user accounts were affected by that. Sometimes all your data were lost. If you were lucky, they were still there. So, we saved our Maple project to local disk (if the computer didnât crash in between, that was no problem) and at least eventually before leaving the classroom, we then also saved it on the server. For that, the teacher quickly plugged in the cable, we saved, and then the cable was unplugged again immediately. Oh, and everybody used their USB sticks, too.
All in all, this Cassiopeia A-* was quite a useless purchase. :-D Iâm not sure if I still have it. At least I thought several times about giving it to the flea market. Donât know if I did or not.
In the light of current events, I will first consult my pillow and only then write an article about readable code.
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.
@movq@www.uninformativ.de Yes, yes, yes and yes.
The start screen looks exactly like a website not a desktop application.
I mean, I find Motif also fairly ugly. Granted, itâs a hell lot more discoverable than anything today. The old Windows UIs probably had the best balances. But itâs Windows, it doesnât have a place in my heart. So, I stick with good old KDE. ;-) Thatâs my nostalgia kicking in.
@movq@www.uninformativ.de Yes, this screenshot. However, not the Dutch but rather the German version, no wonder it looks so crazy!!1!11
Itâs been a hot minute or two since I last used KDE, so I donât remember exactly. I just vaguely recall that I found myself thinking multiple times that the KDE application categories were better matching or there were more or something like that. Most of my classmates were on Windows and had one giant long list of all sort of stuff in there. You even had to scroll in the menu. Sure, they installed all kind of garbage, which didnât exactly help. Where in KDE, they were actually grouped by Office, Internet, Graphics, Multimedia, Games, etc. In Windows, applications usually hid themselves in a sub folder named after the software vendor. At least in the later (?) days.
I only used Win 95, 98 and XP at home. For maths class with computer algebra system (Maple), we had a Cassiopeia with Win CE: https://en.wikipedia.org/wiki/Casio_Cassiopeia At school, there was probably also Win 2000, but I donât know anymore for sure.
These commit messages⊠https://github.com/vergonha/garden-tui
@movq@www.uninformativ.de 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!)
Letâs see which other browser-based clients I broke with that messageâŠ
@movq@www.uninformativ.de @bender@twtxt.net Thank you! Itâs some kind of a thistle I reckon. My mate is a bee hunter, Iâll link the next one that comes up.
@movq@www.uninformativ.de Phew! ;-)
@movq@www.uninformativ.de Yiha! Alternatively, you could embed the
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. :-(
After the last two days were dry and a tad warmer, I left the house a few minutes later to check again. It was similar to last time. One deer on the pasture that didnât run off, it was roughly 15-20 meters away, a bit further than the day before yesterday. Probably even the same individual. Many moths, zero fireflies and another two deer on the mown meadow when I left the forest. Those were closer to 50 and 100 meters away and evenutally escaped into the woods. The same street lamps were off, too.
The lovely smell of cut grass was in the air. Venus and Jupiter reflected brightly in the West. What a stroll, I call that a great success. :-)
@movq@www.uninformativ.de Iâm completely with you. I just do rivoâs approach with some of my own stuff that nobody ever sees. But the vast majority gets a real version. Probably not a changelog, but a version. And itâs very small stuff.
Die Meisterschaft der Speisewagenschieber in Stuttgart: https://www.youtube.com/watch?v=OfgwdBBWzCw
Eine groĂartige Vorstellung einer Unfalluntersuchung. :-D
There: https://github.com/rivo/tview/issues/442#issuecomment-641898039
@movq@www.uninformativ.de Yes. The author tries hard not to break existing code, but apparently he did this time. In his defense, itâs not an official release, I just updated to master. Which is exactly what I always did in the past as there are no real versions (I even think that in one ticket he wrote years ago that master is always stable). That has finally changed a year ago, though: https://github.com/rivo/tview/releases/tag/v0.42.0
@movq@www.uninformativ.de Brilliant! Oh, Iâm super happy to get it all wrong together with you. :-)
[Release notes] are meant for human beings, itâs a human-to-human interaction.
This is one of the most important messages. Absolute key, but misunderstood so often.
@movq@www.uninformativ.de Exactly!
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:
Fuck me! I tried to upgrade tview and the first thing I notice is a shitload of added dependency versions:
go.mod | 18 ++++-----
go.sum | 97 ++++++++++++++++++++++++++++++++++++++-----------
My code does not compile anymore as the view.FormItem interface was extended. Get/SetDisabled(âŠ) are quickly implemented, no worries.
But the tview.Primitive (what makes a widget) interface has now a bunch of PRIVATE methods. For focus handling. Would you believe that!? Thanks, I cannot satisfy this interface in my very custom widgets anymore. Okay then, I just embed *tview.Box. tt now successfully compiles, but does not react anymore on key presses and the message tree is not focused either.
Iâm not in the mood to debug this shit. :-( Lunch time.
@movq@www.uninformativ.de I just ran across another thing. At least I personally couldnât care less about CI infrastructure changes. Whether theyâre using github action a or b or c or version v or w, it is not of my interest. At all. (It might be useful to estimate the supply chain attack risk, though.) If the maintainers want to include them in the changelog â and there are probably people to whom this information is crucial â itâs probably best to document CI infrastructure changes in their own section.
@movq@www.uninformativ.de You may want to include another antipattern to avoid in your article:
- bump $same_dependency from 1.0.0 to 1.0.1
- bump $same_dependency from 1.0.1 to 1.0.2
- bump $same_dependency from 1.0.2 to 1.1.0
- bump $same_dependency from 1.1.0 to 1.2.0
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:
@movq@www.uninformativ.de Thank you very much! So, the concept is very similar. The root widget gets the input and can pass it to whatever child has the focus and so on.
My two main issues are the API design, that the input handler sometimes get an additional callback to notify the application about which element is focused, but sometimes not. And that focus switching sometimes just does not work as expected. Anyway.
As for rendering the selected button, I was also thinking about indicating it with some kind of border around it, square brackets seem to be a wonderful choice. :-)
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:
Another thing: With multicolored TUIs, I find it usually hard to immediately tell which button is selected if there are just two. Iâm asking people for any relevant information. :-)
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:
Getting the vim key bindings to work for focus switching in this modal dialog took me forever. Only cursors and (Shift+)Tab are supported out of the box. I absolutely understand that, itâs fine. I installed an input handler on the dialog, but the focus always stayed the same.
After two wasted hours, I was in despair to copy the tview.Modal into my own code base. Of course, I had to fix all the private tview field accesses first. But even installing the input handler directly on the buttons themselves did not work. Even though, the handler was definitely executed, the focus did not shift. Forcing redraws as a last resort also did not work.
Looking through all the messy chained input handling, I eventually stumbled across another place in the tview.Form, which is internally used by tview.Modal. This messed around with app focus receptions and input handlers. This gave me the idea to make the tview.Application refocus my modal dialog after I told the modal dialog which button to select. And would you look at that, this did the trick! I havenât completely figured out what is going on exactly, but I could get rid of my Modal clone again.
I always go through hell with focus handling in tview. Each and every time. It just does not feel natural to me. Complete brainfuck to wrap my head around. The Urwid API felt sooo much more refined, it never was an issue. It just works. In fact, I cannot think of any other TUI library that has remotely the same pain level when it comes to focusing widgets as tview.
Now Iâm curious how movwin deals with that. ;-)
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.
@movq@www.uninformativ.de Right, at work, nobody gives a fuck. At all. There are so many universes between my definition of quality and everybody elseâs.
Letâs stop here and enjoy the weekend or vacation. :-)
@movq@www.uninformativ.de Hahaha, great timing! :-D I love your article and agree with almost all your points.
On the AI changelog part, though, Iâd rather recommend to just not have a changelog at all.
Another important thing for me is the deprecation notice section. What do I need to look out for in the future? Should I start to migrate to another API soon? Even right now? Or does it have time?
While going through these terrible GitHub release pages, I also found these âNew Project Contributorsâ sections (yeah, for that, they found the time to make a section) annoying. Donât get me wrong, sure, credit where credit is due. But come on. Soooooo much space for an inefficiently formatted (and also unsorted) list. At least it was easy enough to skip over it.
And then, there are also these changelogs or rather notice documents in general that are infested with multicolored emojis all over the place. My brainâs spam filter kicks in and shoves everything to /dev/null immediately. Itâs especially a thing at work.
In my previous work project, we also used the Keep A Changelog Format. That was great. You wouldnât believe how often I resorted back to that document. At least twice a week, often several times a day. I was very glad that we put in this effort. Of course, writing the changelog took its time, but it was worth every minute and more. Reading a many months old item, it was immediately clear. I was our best customer in that regard.
Now, itâs just the same auto shitshow with MR titles in a rolling date-versioned release scheme. Itâs just our team who has to deal with that, though. I think Iâm the only one who is not a fan of it.
I just fixed it.
@movq@www.uninformativ.de Next town, they use FernwĂ€rme from the waste incineration plant to heat the hospital and probably also parts of the neighborhood. I donât know how good it works, but in the cold months thereâs always steam coming out of the manholes along the road through the woods. I very rarely am in this area, but whenever I am, the steam on the side of the road always amazes me.
@bender@twtxt.net Yeah, you absolutely must experience them yourself in person. :-)
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.
@bender@twtxt.net Those damn foreigners shall not enjoy our German music, how dare they! Something like that.
@movq@www.uninformativ.de Hmm, indeed, this sounds a bit weird. Is it FernwÀrme?
@movq@www.uninformativ.de What the heck! Construction work? Eventually, one has to resort to the good old bucket shower. Maybe raise the comfort level with a kettle.
Itâs raining all day long over here. You could just stand outside for a while.
I hope itâs back sooner than later!
@prologic@twtxt.net Too bad.
caddy-pow. So now going forward, you'll have to (sorry) have a HS-enabled browser to hit git.mills.io which will hopefully make most (if not all) bots just go the fuck away đ€Šââïž #Hostile #Web
@prologic@twtxt.net Ninjababypowpowpow, NINJA BABY POW POW POW! https://www.youtube.com/watch?v=1dK8NeTWN7w
The lyrics are also fitting quite well I have to say. :-) https://www.die-aerzte-archiv.de/bela-b/songtexte/song/ninjababypowpow.html
@movq@www.uninformativ.de Uh, uh, uh, yeah, nice! Perfect time to spend the holidays in Green- or Iceland. :-)
@movq@www.uninformativ.de Work to rule. And yeah, absolutely horrible time to look for something else. :-(