@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!

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. :-(
@movq@www.uninformativ.de Oh yeah, way better! :-) I didnât spot the bug, though.
I think I could work with the feature set. I typically donât need a lot. Until I do. :-D The message tree in tt is an example of that. But tt is also special that it needs something like this in the first place. Itâs unusual.
@bender@twtxt.net @movq@www.uninformativ.de Ta! Itâs the chemtrails that they cannot stomach. :-D
@movq@www.uninformativ.de Be careful, sounds like the latter to me. Get a good rest, though! And maybe slow down a tad once youâre back. But now, enjoy your private hacking. :-)
@movq@www.uninformativ.de That is really cool! Maybe it would look nicer if the selected entry highlighted the whole row, not just the individual cells in that row without the column spacers. :-? But maybe Iâm wrong. Everyone has their own taste.
And no, itâs not pointless at all. I find this really interesting. The videos and photos are perfect for me. Even if I had the source code, I would not use that toolkit, as Iâm not a fan of movable windows in TUIs. I want all my own programs to be fullscreen all the time. 8-) Having said that, itâs still an absolutely brilliant source of inspriation that will come in handy one day. So, keep posting. :-)
We just got some unicorn vomit again: https://lyse.isobeef.org/abendhimmel-2026-06-09/
Herzlichen GlĂŒckwunsch, @arne@uplegger.eu!
@itsericwoodward@itsericwoodward.com Turns out, this is a bug in my config to cache synchronization. Nickname changes in the configuration file are just not synced to the cache at startup if the feed URL already exists in the cache. I must have fixed this typo in my config ages ago, because I donât even recall having that spelling mistake to begin with. Yet, the cache was happily showing the erroneous nickname. Composing a reply automatically adds the mentions from the conversation participants. Everything originates from the cache, so, I successfully poissoned my replies.
@itsericwoodward@itsericwoodward.com Dang it, my apologies for butchering your nick, mate! :-( Unbelievable, that I did not notice this in all those months. But itâs great to trade mention errors. :-)
@itsericwoordward@itsericwoodward.com I just want to let you know that your mention completion seems to be broken. :-) The URL is duplicated with a comma in between. Actually, the protocols differ. I suspect that you extract all url metadata fields from the feed, not only the canonical one used for hashing (the first one) and join them. Iâm not completely sure, I would need to read up on the specs (itâs already past bed oâclock, though), but I guess that there is no explicit rule for picking the mention URL. Without having thought about it too much, I reckon the safest bet is to stick to the hashing URL when in doubt and the URL that was used to subscribe to the feed is not available for whatever reason. The URL from the subscription list is probably even better.
@movq@www.uninformativ.de Exactly! :-D
I just came across these two covers which stood out to me:
- https://www.youtube.com/watch?v=tVvhHydubR0 played a bit faster, and faster is almost always better
- https://www.youtube.com/watch?v=rpwGUx0Sz_4 a choireâs polyphony usually makes things automatically better
@movq@www.uninformativ.de Classic song! :-)
The targets are well spread across the forest, itâs impossible that they end up hitting others on accident. The only dangerous station is the one with the white swan. Since they shoot from the other side of the tad pole pond, they might actually hit people on the forest path (where I took the photo) when they miss the target and provided the shot is powerful enough. We were on our way before the archers started their loop trial.
@movq@www.uninformativ.de Great, now Iâve got the Shadow On The Wall earworm for some reason. :-D
@movq@www.uninformativ.de Oh, whoops, hahaha! :-D Yeah, I also noticed Markusâ Unicode work yesterday. Really cool.
@bender@twtxt.net @prologic@twtxt.net Hahaha, okay, Iâll leave them then. :-D
@movq@www.uninformativ.de Thatâs my experience, too.
@movq@www.uninformativ.de Great to be asked for feedback! I just noticed that the first wcwidth version was derived from Markus Kuhnâs C code. I came across him in my ISO 8601 and RFC 3339 endeavors the other day. https://www.cl.cam.ac.uk/~mgk25/iso-time.html What a surprise. :-)
@movq@www.uninformativ.de I see the Make rewrite popping up on the horizon. :-)
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/
favicon.ico and only around 7.5k hits on the image thumbnails. So I guess that, in reality, it might have gotten around 7k hits. The rest ⊠is probably bots.)
@movq@www.uninformativ.de Not bad. How many e-mails or other forms of feedback did you get?
@movq@www.uninformativ.de Ah, I see. Oh, so not even make, just a shell script. :-)
@movq@www.uninformativ.de Yes.
Maybe management should replace itself with AIâŠ
Years ago, I used Kate, no, not somebodyâs wife, but the KDE Advanced Text Editor, to export source code files and fragments into HTML with syntax highlighting. I think thatâs where I got the initial <b> idea from. There were also bucketloads of <span style='color:#644a9b;'> all over the place, even inside <b>. No CSS classes defined upfront, all colors inlined. The final rendering in the browser looked great, but the source code ugly as hell in my opinion. However, Iâm thankful for hinting me at <b>. I think this kicked off everything. :-)
@movq@www.uninformativ.de Itâs the âLyse types the entire HTML by handâ generator. Yes, no kidding. I write articles so rarely, that I can do that once in a while. Itâs fun to some degree, but also not.
After some time, I finally recorded some Vim macros to insert <b>âŠ</b>, <var>âŠ</var>, <span class=s>âŠ</span> etc. around the tokens. This helped a little bit. But I was still questioning my mental state doing it like that. I also had to fix a bunch of the end tags by hand, because the word movement wasnât enough or the end movement went too far. Quite the annoying process for sure.
But I think the HTML looks a wee bit nicer and is maybe even semantically a little bit better than having only <span>s everywhere. I find the <span class="whatever"> just soo awfully long. Of course, I never look at the code again, but knowing, that e.g. there is a <b> and it saves so many bytes in comparison, makes me happy. It is a more elegant solution in my opinion. Not by much, but better nonetheless. Itâs a matter of simplicity. Admittedly, even I canât avoid the <span>s alltogether. Oh well. On the other hand, Iâm sure that this does not make any difference whatsoever. I bet, nobody and nothing, like a screenreader, analyzes the HTML for that, where this would be truly useful.
Oh! Maybe text browsers, though. It just occurred to me while composing this reply. :-) Haha, I lost my bet quickly. w3m picks up at least the <b> for keywords and builtin types, <u> for filenames and <i> for comments. Yey. No different styles for <var> and <mark>, unfortunately. elinks only renders the bold. Itâs cool that I had the right intuition right from the beginning, despite being unable to pinpoint it. :-)
All the <span> hell with common syntax highlighters is a downer for me that keeps me from looking more into them. If I wrote more articles, I might rig something up with Pygments. At least thatâs somehow positively connotated in my brain. Not sure if it actually deserves it, but I dealt with that in some loose form (canât even remember) years and years ago. Apparently, it wasnât too terrible.
To prepare the table of contents, I used grep and sed with some manual intervention in the end. The entire process can be improved. Absolutely.
You wrote your own site generator, didnât you?
@movq@www.uninformativ.de Nice find!
@bender@twtxt.net Hahaha! :-D
I woke up well ahead of my alarm. But fear not, Iâm tired, too. :-)
@garbo@www.uninformativ.de What a story! :-D
@kiwu@twtxt.net I like your enthusiasm. Go, go, go! :-)
@bender@twtxt.net Hahaha! :-D
Holy moly, these thunderstorm clouds are blacker than black, wow! The rain smells so wonderful. Yummy!