@lyse@lyse.isobeef.org In what way was KDE 3’s menu organized? KDE 1 is the only KDE version I ever used. 😅 We’re talking about this one, right?
Isn’t Notepad++ and Python cheating!? :-D
Well, Python was certainly already a thing back then, but Notepad++ is from 2003, right. I think I used https://www.wintotal.de/download/proton/ at the time? Maybe? I don’t know. 😅
@lyse@lyse.isobeef.org That, uh … yeah, that would work as well. 😅🤦♀️
☠️ Doing the taxes today. ☠️
It’s one of those topics that might cause outrage because I’m getting it all wrong.
So far, nobody noticed. It didn’t get posted on HackerNews or Lobsters this time, and it only got 46 hits so far (as opposed to ~50-100k hits when it does end up on those sites). 🤣
@lyse@lyse.isobeef.org Oh, 02.jpg is great. Camera just a little lower next time to put more emphasize on the … whatever that is in the foreground. 😅
Oh god, finally: The thumbnail generator for my blog now renders a typical “play” icon for videos.

Saves me the need to write “this is a video” every time. 😬
@lyse@lyse.isobeef.org Interesting approach. 🤔
The master branch should never be in a broken state (apart from bugs I don’t know about). Any intermediate state during the development of a larger feature will happen in a different branch.
I mean, yeah, but … I don’t know, I like having “traditional releases” as a second safety net when I write programs. I like to let things mature for a while and then I cut a new release. So it’s, like, “we have a bunch of new features and fixes here, and to the best of my knowledge this works fine now”. But maybe I’m just paranoid. 🤔
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:
@lyse@lyse.isobeef.org Is it this one? https://github.com/rivo/tview It’s almost 10 years old but hasn’t seen a 1.0.0 release yet? 🤔
Updated draft: http://movq.de/blog/drafts/changelog/POSTING-en.html
I’ll probably publish this later today. Or maybe not at all. It’s one of those topics that might cause outrage because I’m getting it all wrong. 🤪
Haha, GitHub. I “unlocked” the “achievement” called “Quickdraw”:

It’s for closing an issue very soon after it was opened.
Only problem: I was the one who opened it and it was a mistake, so I quickly closed it again. 🤦♀️ https://github.com/bundlewrap/bundlewrap/issues/892
@lyse@lyse.isobeef.org Oh god, yeah. In other words: Devs need to think about who their target audience is. 😐
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:
With multicolored TUIs, I find it usually hard to immediately tell which button is selected if there are just two.
Indeed, I wouldn’t be able to tell in that example, either. movwin works around that by (mostly) assuming that there is no support for colors at all, so there should always be a way to tell which widget has focus, even without colors. That’s why it puts brackets around a button’s label when focused:
The fewer colors you use, the better, I guess. 🤔
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:
Now I’m curious how movwin deals with that. ;-)
Focus handling? I hardly remember, lol. 😅 Did that 6 months ago and haven’t touched it since. Let’s see.
The core main loop gets keyboard/mouse events from curses. At this level, the main loop only knows about exactly one widget, so it passes the event to that widget (whatever that is, doesn’t matter – they all inherit from the Widget base class, it could be a Window, a WindowManager, or an Edit box directly).
The outermost widget is usually a WindowManager. It implements a few hotkeys of its own, like switching to another window. If none of those hotkeys match, it passes the event to the currently focused window.
Same story here: Window implements some hotkeys (like opening the menu bar). If none of those match, then … the magic happens.
Each Window acts as a focus manager. It can descend into its child widget hierarchy and collect all child widgets in a depth-first search. They are collected into a flat list. Each Window then has an attribute _focus_position, which is an index into that list. Pressing Tab or Shift+Tab increases or decreases that index and that allows you to select the next/previous focusable widget in the current window.
Eventually, Window passes the input event to the currently focused widget.
Usually on initialization, the application can ask a Window object to focus a certain widget. The file selection dialog does that, for example, because the “natural” focus order would be to focus the Edit box at the top of the window first – but that’s not what the user wants, the Table showing the list of files should be focused.
If no widget ever feels responsible for handling a certain input event, then there’s a global unhandled_input callback that the application can provide (same as in urwid).
I think that’s it.
Hm, that’s more complicated than I remembered, but apparently it works fine, because I completely forgot about this. 😅 All I did in the last few months was make new classes that inherit from Widget, like the new Table class or Edit or HexEdit or whatever, and if they want to get input events, then they must implement the methods input_key() or input_mouse().
Does this answer your question? 😅 (I admit that I didn’t exactly understand your scenario, so I just went ahead and rambled about my implementation. 😅)
@prologic@twtxt.net Hmmmmmmmm … 🤔
@lyse@lyse.isobeef.org Thanks!
On the AI changelog part, though, I’d rather recommend to just not have a changelog at all.
I’m afraid that ship has sailed. You can rest assured that someone who uses AI/LLMs for their code (which is almost everybody at this point) will most certainly also use it for changelogs.
I actually considered not mentioning AI output at all, because this just opens a huge can of worms … 😞
While going through these terrible GitHub release pages, I also found these “New Project Contributors” sections
Yeah, they play on a nerd’s pride.
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’ve found that this whole situation is much worse at work than it is in the Free Software world. At work, it’s literally work and hardly anybody actually cares. We still don’t have all people convinced that writing good commit messages or using good branch names is worth the time. It’s … oh god, no, I’m going to stop here, this is bad for my mental health. 😅
Suffice it to say, all release notes at work are now AI-generated. Nobody gives a fuck.
@lyse@lyse.isobeef.org Now that you mention it, there is some steam from manholes in the winter. 🤔 This is all energy that gets lost … I don’t know how much of it, but it’s lost. 🤷♀️
@lyse@lyse.isobeef.org This is the draft so far, let me know what you think: https://movq.de/blog/drafts/changelog/POSTING-en.html
@lyse@lyse.isobeef.org … I am literally writing a blog post about changelogs at this very moment … 😂 I am certainly adding the “‘add X’ and then later ‘remove X’” to my list of DON’Ts. 😅
@thecanine@twtxt.net Nice! 🤯
@lyse@lyse.isobeef.org Fernwärme it is. %)
@lyse@lyse.isobeef.org I don’t know what it is. It’s this damn central heating here (distributed over the entire village), where, if something breaks at their end, hundreds of households are affected. 🙄
(I don’t get why anyone would build a central heating system in the first place. Isn’t this super inefficient?)
People think that “more words means more effort” – that used to be true, and it’s the opposite now.
Anyone can make 200 words. The real flex is turning those 200 words into 6.
Regarding software, I wonder when/if programmers will get this memo.
No hot water today. Again.
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 Huh, somehow I was assuming that Anubis was already lightweight (never took a closer look, though). What’s the issue with it? 😅
(And of course there’s a bug because I’m an idiot. 🤪)
There you go, it really does look better: https://movq.de/v/69d82e39f4/vid-1781183062.mp4
Heads up (literally): There’s going to be a solar eclipse in August: https://en.wikipedia.org/wiki/Solar_eclipse_of_August_12,_2026 Mostly partial, unless you happen to live in Greenland/Iceland/Spain.
And maybe slow down a tad once you’re back.
Not sure if that’s possible in this company. 🤔 (This is the worst time to look for a new job, though. Alles im Umbruch.)
@lyse@lyse.isobeef.org Yeah, it probably would look better. I might fix that. It’s just laziness, the implementation was easier this way. 😅
Glad you find it interesting! And honestly, I agree, nobody but me would use this anyway. There are more mature and featureful toolkits out there.
@lyse@lyse.isobeef.org Aaaaahhhhhhhh! That explains it! 😅
As I said, I’m on vacation, and for about a week now, I did basically nothing but sleep. Day or night.
I can’t tell if this actually is a vacation or just therapy for burnout. 🤔
@bender@twtxt.net Yeah, no, not gonna happen. 😅
@lyse@lyse.isobeef.org Those poor unicorns. Why do they have to puke all the time? 😢🦄
(I know it’s kind of pointless to post all this stuff if the source code isn’t available, but meh, whatever. 🤪)
First draft of a file selection popup / widget:
https://movq.de/v/0955149868/vid-1781094010.mp4
Also makes use of the new Table widget.
@arne@uplegger.eu Heh, nice. 🥳
Actually, I’m stupid: I’m using the normal rsync on OpenBSD as well.
And regarding OpenRsync’s general usability:
https://marc.info/?l=openbsd-misc&m=178090751524547&w=2
Right now openrsync is limited in functionality and is primarily present
for rpki-client. The limited functionality makes it unusable for generic
use and so any diff or change like the above will not be considered since it
is simply not ready.First problem to solve is to remove the mmap usage in openrsync. After
that modern protocol versions need to be added. Once that is in place one
can start a discussion about using openrsync as a default on OpenBSD.
Love this remix:
@lyse@lyse.isobeef.org Shadow on the wall!!1! 📣😅
It was an easy patch, so menus have drop shadows now:

Not that big a difference in the dark theme, though.
@lyse@lyse.isobeef.org Not a fan of Mittelaltermärkte, but that sounds like an interesting idea. I wonder if they end up shooting each other on accident. 😅
@lyse@lyse.isobeef.org Oh, no, he was the one providing the feedback. 😅
mgk appears to be everywhere. His Unicode box drawing demo has been part of my unicode-test script for a long time: https://movq.de/git/bin-pub/file/unicode-test.html#l23
@itsericwoodward@itsericwoodward.com Yeah. That DORA quote is probably spot on. It’s exactly what I’m seeing here.
@prologic@twtxt.net Hm, yeah, probably. I don’t think that’s how many FLOSS projects are/were run, though, so they’ll have to find new ways to build those relationships. 😅 I mean, isn’t it usually a new person sending patches to a project, over and over, and at some point they’ve shown enough skill so they’re “promoted” to a full maintainer position? 🤔
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.)
@lyse@lyse.isobeef.org Two emails. 😅 One person asking for the source code, and the author of wcwidth (the library I’m using) contacted me to provide some input. 👌
@lyse@lyse.isobeef.org Switching to Make might be a good idea, though, because the whole thing is purely sequential at the moment … It takes close to 20 seconds (including the w3c verification which runs the Java checker). It’s not unusable, but it could be better. 😅
@arne@uplegger.eu Hat nicht so lange gehalten. 🤪 
(This settled at about 25k hits on the HTML page now. But only about 11k hits in total on 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.)
@prologic@twtxt.net As have I. 🤔 I mean, since I left GitHub, I got basically 0 pull requests anyway.
Even during my time using GitHub, I noticed that “drive-by PRs” are rarely a good idea. People don’t really know/understand the code or the design principles/goals, so I often turned down PRs. Or I accepted them and was grumpy afterwards. 😅
What does work is having a team of maintainers/devs. The only question is: How do you build such a team if you don’t accept PRs? That’s going to be the interesting part.
Now that is an interesting move:
https://ladybird.org/posts/changing-how-we-develop-ladybird/
Maybe this is how all Free Software will look like in the future. It might not be the worst idea … ? 🤔

