@movq@www.uninformativ.de @prologic@twtxt.net @itsericwoodward@itsericwoodward.com Let me join the Enterprise Ruined It For Me Club. :-D
@david@daiwei.me Yeah, with the long and thus taller list entries, things are getting off hands. Ah, when focused, you wouldnât differentiate between read or unread.
tt. I run into this bug almost daily for weeks now.
@prologic@twtxt.net A screenshot wonât help in this case, as you donât see anything. :-D It starts off just fine with a conversation tree like that:
Unknown conversation root
ââ´Read reply
ââ´Read subreply
Everything works. After reloading the feeds, a new message becomes part of the conversation, so the conversation e.g. looks:
Unknown conversation root
ââ´Read reply
ââ´Read subreply
ââ´Unread subreply
However, the bug is that the whole conversation is not shown at all. None of the three (or four with the root) messages appear in the message tree view. My recursive SQL determining the messages to display is clearly broken.
Tops 25°C is a very welcome change. Tomorrow just 21°C (but right before I went to bed they forecasted two degrees less today).
@david@daiwei.me Itâs truly mind-boggling. All the hand full of episodes Iâve seen so far on this channel are amazing. Totally worth tuning in. I have to catch up a lot. :-)
SpitzenmäĂige Doku Ăźber @movq@www.uninformativ.des kleinen Hausflugplatz: https://www.youtube.com/watch?v=F72t2fpiWPo
Thatâs such a cool The Rest Is Science episode: What Are The Odds Youâll Become A Fossil? https://www.youtube.com/watch?v=cYvDaDb_mbw
I should really fix this damn bug where new replies to read replies to unknown conversation roots are not showing up in tt. I run into this bug almost daily for weeks now.
@movq@www.uninformativ.de Ich war nie im Ubuntuusersforum unterwegs. Aber zu Delphizeiten damals im âPlanet Quellcodesâ-Forum aktiv, das es längst nicht mehr gibt. Ich schätze, die Hochzeiten der Foren sind einfach rum. Heutzutage ist einmal sehr viel mehr Wissen andersweitig zugänglich und dann sind vermutlich die allermeisten Leute auch einfach auf Soziale-Medien-Plattformen unterwegs. Oder werden die eigenen Projekte auf dem eigenen Blog und dergleichen vorgestellt.
Dann gabâs auch (zumindest gefĂźhlt) eine Zeit, in der man einfach keine sinnvollen Antworten mehr in Foren bekam. So kam das mir jedenfalls vor. Ist schon eine ganze Weile her, aber ich kann mich noch dunkel erinnern, dass ich bei Forensuchtreffern häufig auf Reaktionen Ă la âsuch doch selberâ stieĂ. Oder einfach zuhauf komplett falsche Antworten vorgeschlagen wurden. Ich hab mir dann angewĂśhnt, Forenbeiträge komplett zu ignorieren.
Einige Foren haben auch noch damit angefangen, anonyme Zugriffe zu unterbinden oder zumindest einzuschränken. Das half im Rßckblick natßrlich auch nicht, dieses Medium attraktiv zu machen.
@aelaraji@aelaraji.com Thatâs totally fine if you work at the beach. :-)
@david@daiwei.me Right now, ttâs theme is baked into the binary. I have to edit the ui/styles.go and recompile. Luckily, this almost takes no time. But my todo list already includes a bullet point to make this customizable via the configuration file. :-)
@david@daiwei.me Ha, I just noticed that I changed Newsboatâs defaults. Right from the factory, new items are just bold, while read ones arenât. No different colors, white on black. Focused items are bold yellow on blue. No matter the read status. I think thatâs why I started to play with the config to differentiate them. Itâs been so long ago that I didnât know anymore I even messed with that.
And yes, youâre right, the red on black is borderline readable. Also, my white on green focus is rather silly. But Iâm sooo used to it, I donât realize how bad the contrast is. To be fair, I donât spend a lot of time in the lists. Aha, there are new articles, Enter to hit the artice view, read it, press n to immediately jump to the next unread article, rince and repeat, finally Iâm back in the article list view.
Default theme, read focused:
Default theme, unread focused:
Lyseâs schlimmbesserung, read focused:
Lyseâs schlimmbesserung, unread focused:
@dce@hashnix.club I should maybe look into it some day.
@david@daiwei.me I had to look these up, horror isnât my genre at all. :-D No idea what the cool kids use today, but I still have zsh as my interactive shell. For shell scripts, though, I try to stick to POSIX and only resort to bash if really needed or it would be too cumbersome.
@david@daiwei.me Not sure if you only mean the code segments or in general. In theory, a general darker text color for read messages would probably work. The thing is that regular white on black is quite standard. In Newsboat, new articles are red (I opted for yellow here) and read ones white. I found that useful and kinda copied it for tt.
@prologic@twtxt.net @movq@www.uninformativ.de Same with tt, hash v2 has to be used right from the epoch onward. (And now replying to a message with a timestamp before the epoch still results in a v1 hash.)
We got some rain. Not a whole lot, but itâs actually cooler now and the temperatures outside are below the ones inside.
Cool, @dce@hashnix.club. Youâre the first one I come across who actually writes Korn shell scripts. :-)
tt. Focusing them just alternates the fore- and background colors. With the old color scheme, I disliked that inline code and code blocks were basically just the opposite of normal text. Hence, unread code was white and read code yellow. I found this often confusing, especially with larger code blocks. Sure, there are the timestamp and author columns that still show the usual white (read) and yellow (unread) background for selected messages, but still.
As an alternative, I also gave a much simpler teal on gray with reversed colors on focus a shot. Hmm, not so sure either. :-?
Unread messages:
Read messages:
@movq@www.uninformativ.de The nice thing about properties is that you can compute and cache things on the fly at first attempt and also ensure validation for writing. But like you said, since itâs not obvious that reading or writing might do some more things, itâs strongly advised to avoid doing expensive stuff disguised as properties.
I reckon the vast majority of property use cases is to provide read-only access. At least that was my impression when I was doing a lot more in Python.
Personally, I think that this just reads a lot nicer:
oink.my_property
oink.my_property = 42
Than:
oink.get_my_property()
oink.set_my_property(42)
Btw, any field access is implemented using method calls. I might be wrong, but I believe thereâs always __getattr__ and __setattr__ involved. 8-)
Unread messages are yellow, while read messages are white in tt. Focusing them just alternates the fore- and background colors. With the old color scheme, I disliked that inline code and code blocks were basically just the opposite of normal text. Hence, unread code was white and read code yellow. I found this often confusing, especially with larger code blocks. Sure, there are the timestamp and author columns that still show the usual white (read) and yellow (unread) background for selected messages, but still.
This is how it was before with unread messages:
Before with read messages:
So, I just reworked the code styles. Not sure if I like that or if it is actually an improvement. Unread code is teal on gray when not in focus and becomes blue on orange when focused. I thought the dark gray code background on a black regular background is still nice and subtle. The same similarity in colors for focused messages meant to go with an orange code background on a yellow regular background. The teal was too light, so went with a blue foreground color:
When read and unfocused, the new color scheme calls for the same code style teal on dark gray. However, with white as the main background for selected messages, I went with a light gray code background and a blue code foreground. Again, the contrast with white and teal wasnât good enough. Vice versa, blue on dark gray is also not all that readable:
It looks like a parrot. Letâs see if I begin to like it.
@movq@www.uninformativ.de My grief with Java is that itâs sooo verbose. Sure, all the enterprise garbage makes it a hell lot more terrible, but even regular Java feels always so lengthy. And back in the days when I was using it daily, I missed so many convenient things in the stdlib after having experienced Pythonâs âbatteries includedâ. Not sure if or how recent Java versions caught up.
@david@daiwei.me Oh, really? I thought Iâve posted compose view screenshots before. Anyway. Glad you like it as much as I do. :-)
The update interval has always been one second. I just didnât remember and thus tried to time it by watching the preview update while typing. It felt like roughly under two seconds, but apparently my inner clock was off. After taking the screenshot and then examining it more closely, I noticed that the interval is stated right in the UI. :-D So, I just amended my message and didnât bother taking a new screenshot. I figured I just leave it alone and see who spots the change, if at all. And, of course, you found the easter egg. Congrats, mate! 8-)
@movq@www.uninformativ.de Looks like subject parsing is broken.
@david@daiwei.me Ramen! Bon appetit.
@balloon-fu-sen@tw.fus.f5.si Not bad, quite a groovy sound.
@zvava@twtxt.net hunter2
tt has a "draft" mode right? You didn't publish, then edit over and over did you? đ
@prologic@twtxt.net Not sure if this really counts as a draft mode or this is what you had in mind. I just was in the editor for ages and didnât close it. tt provides an integrated preview for the rendered message in there. It automatically updates every second.
Hereâs a screenshot of the compose view with the conversation context on the top to which to reply to, the editor in the middle and the almost-live preview at the bottom, I hope itâs big enough:
But itâs not like I hit the âAdd messageâ button in the compose view (the one currently selected on the screenshot), see the message in the conversation tree and then come back into the compose view to continue editing. Thereâs no edit functionality in tt. Once the message is appended to my twtxt.txt file on disk, all I can do is edit it with vim. The U+2028 line breaks are really annoying to deal with (Iâm sure I could do something about that if I spent the time), so I try to avoid that at all costs.
Once new messages have been added to my local file, I then manually upload the file to my server in a separate terminal. Thereâs no upload command integrated into tt. Right from my very first message in the beginning, Iâve always done it exactly like that. Iâm used to this and it really doesnât bother me. But I can see that others might not be fans of that at all. I might add an upload mechanism to tt at some point in the future.
@david@daiwei.me Very nice!
Dear weather gods, can we please also have a decent amount of rain and not just a few drops that only make the humidity even worse?
@dce@hashnix.club I like the teal colors in the file manager.
@david@daiwei.me You mean, you mean⌠like mowing down a whole rain forest in a thunderstormâs brutal heat? :-?
Show us todayâs rain. :-)
Now, thatâs cool shit, I have to say! Discovering so many hidden sounds⌠With Fotric Acoustic Imager: https://youtu.be/CKJT_ECOsK4
@david@daiwei.me Hahaahaaahaaaaa, that was funny as heck, mate! I had to laugh really hard! :â-D
@david@daiwei.me Hahaha, for sure. (But my observation wasnât meant as a complaint.)
@david@daiwei.me :-D
Wow, 79 new messages over night, similar numbers in the past days. Looks like weâre surfing a high-traffic wave again. :-)
gg instead of g to go to the top in tt. Much better! :-) Other multi-key combinations are also easily possible now.
@prologic@twtxt.net @david@daiwei.me Thanks! Hahaha, rest assured, it was not right from the beginning at all. I had to fix it over and over again.
Uuhh, nice, @eldersnake@we.loveprivacy.club is back!
@prologic@twtxt.net Perhaps somebody tried to register âyarn_secret_serviceâ. 8-)
@prologic@twtxt.net Whereâs the before picture!? :-D
@movq@www.uninformativ.de Yes, this is absolutely a no-go!
A long time ago when the first telemetry shitstorm happened, I added export GOTELEMETRY=off in my ~/.zshrc. But it doesnât seem to be picked up at all (I actually call this sabotage!):
$ go env GOTELEMETRY
local
$ go env -w GOTELEMETRY=off
go: GOTELEMETRY cannot be modified
$ go telemetry off
$ go env GOTELEMETRY
off
@prologic@twtxt.net @david@daiwei.me I just want to bring up the following: From a data protection point of view, edits and deletions are important. But thatâs about it, I will not join discussions on that topic. :-)
@prologic@twtxt.net You also have to tell us the username!
Hell yeah, @kat@yarn.girlonthemoon.xyz is back! \o/
Hurray, I can now press gg instead of g to go to the top in tt. Much better! :-) Other multi-key combinations are also easily possible now.
I should probably write a real article about this at some point, but here we go. The only downside with my new key binding system is that it breaks tviewâs established pattern. Youâve got an InputHandler(), that is implemented using WrapInputHandler(âŚ). It typically then directly implements the switching logic depending on the key press. Something like this:
func (w *Widget) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// WrapInputHandler allows for intercepting key events with SetInputCapture(âŚ)
// from the outside for customization. This handles the default key bindings.
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
switch event.Key() {
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'k':
w.scrollUp()
return // we already handled the event, stop processing
case 'j':
w.scrollDown()
return
}
}
}
// We didn't handle the key event. Maybe the parent
// widget knows what to do with it.
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
})
}
From the outside, you can intercept and either stop or continue the widgetâs original key handling with a potentially rewritten key event using SetInputCapture(âŚ):
w := NewWidget()
// customized or additional key bindings
w.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
switch event.Key() {
case tcell.KeyUp:
// Rewrite the event, so the "cursor up" key is an alias
// for the vim key binding "k", that is handled by the
// wrapped input handler above. (I know, I know, this is a
// completely unrealistic example, why would anyone use
// cursor keys when there are vim key bindings available?!)
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'q':
app.Stop()
// we already handled the event, do not pass it
// to the wrapped input handler above
return nil
case 'r':
toggleMessageReadStatus()
return nil
}
}
}
// we didn't handle the event, pass it to the wrapped
// input handler above
return event
}
Since they all expect a single key, Iâve noticed that using multiple dedicated KeyBindings of mine on these different levels kinda breaks multi-key handling with common prefixes. The outer-most KeyBinding captures the prefix, but it canât transfer it to the inner one if not handled by the outer one. At least not without some more (potentially ugly) changes. So, I now have to work with just a single KeyBindings object for the entire widget chain (if it consists of multiple other widgets or the regular input handler and input capture are in the game). The outside needs to register all its key bind customizations or extensions at the same level that the original widget handles its default ones. Doable by exposing the widgetâs KeyBindings instance, but not pretty. You always have to keep this in mind.
With the KeyBindings, it will look like that:
type Widget struct {
parent tview.Primitive
// make it available to children or the outside either by
// direct field access or by providing a getter method
KeyBindings *bind.KeyBindings
}
func NewWidget() *Widget {
w := &Widget{KeyBindings: &bind.KeyBindings{}}
w.KeyBindings. // default key bindings
Bind0(bind.KeySequence('k', w.scrollUp).
Bind0(bind.KeySequence('j', w.scrollDown)
return w
}
func (w *Widget) InputHandler() InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// also note the missing support for focus transfer at the moment
event = w.KeyBindings.Capture(event)
if event == nil {
return
}
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
}
}
And then from the outside, or in a child widget:
w := NewWidget()
w.KeyBindings. // additional or customized key bindings
Bind1(bind.KeySequence(tcell.KeyUp), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind0(bind.KeySequence('r'), toggleMessageReadStatus)
When directly working with tview primitives that are not part of custom widget implementations, the following works well so far:
textView := tview.NewTextView().
SetWordWrap(true).
SetText("âŚ")
SetScrollable(true)
textView.SetInputCapture((&bind.KeyBindings{}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind1(bind.KeySequence('g', 'g'), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyHome, 0, tcell.ModNone)
}).
Capture)
I need to sleep on this some more.
Also, writing very long messages like this one is really not all that fun in ttâs editor. I should absolutely provide a way to shell out to vim.
(Took me about one and a half hours to compose, holy crap. But not only because of not using vim. Although, that might have saved me a quarter hour or so for sure. Proof-reading this message also uncovered quite a few bugs in my real documentation. So, thatâs a big win!) Good night!
@david@daiwei.me Not so keen on the mowing part. :-)
@prologic@twtxt.net Thatâs a good way to keep spammers out:
Your browser did not pass the anti-spam check! Please make sure JavaScript is enabled and try again.
It was turned on.
@david@daiwei.me Haha, great response!
@movq@www.uninformativ.de Hottest room is still at 24°C. But that will change in this week, no doubt. :-(
@david@daiwei.me I donât want to start the discussion again, but edits wouldnât be an issue if we had agreed on a better addressing scheme. Maybe edit more as a quiet riot. :-P
@david@daiwei.me Oh boy, that looks super yummy! :-) I want to have rain here, too!
@david@daiwei.me Exactly. Spaces are fixed, tabs always break the layout when the tab sizes are different.
@david@daiwei.me Hahaahaaahaaaahaaaaa, so good! :â-D
Nice product, I should probably buy it:
+00:00 vs Z should be treated as equivalent UTC đ¤Śââď¸ I'll take a look at the timestamp parsing in Yarnd đ§
@prologic@twtxt.net For what itâs worth, the twt hash extension is specifically modeled after yarndâs implementation with all the quirks coming from Goâs stdlib: https://twtxt.dev/exts/twt-hash.html#timestamp-format
âAll timezones representing UTC must be formatted using the designated Zulu indicator Z rather than the numeric offsets +00:00 or -00:00. If the timestamp does not explicitly include any timezone information, it must be assumed to be in UTC.â
<tab> (white space) between the timestamps and posts look a bit shorter than the ones from jenny? just noticed that and thought maybe it's someting you'd want to know.
@aelaraji@aelaraji.com @david@daiwei.me @prologic@twtxt.net It depends on the tab size, but often, a tab aligns the following character to next column that is a multiple of eight.
1 8 |16 |24 |32
2026-07-12T08:11:34+02:00 Here goes the text
2026-07-12T06:11:34Z Here goes the text
@david@daiwei.me Oh no, what a giant waste of time. :-(
@arne@uplegger.eu Diese Karten sind ja echt winzig. :-)
Aber da fällt mir ein, ich sollte mir auch mal wieder ein Taschenmesser zulegen. Hab ich es doch ßber all die Jahre geschafft, alle schlussendlich zu verlieren.
@david@daiwei.me Ta, I continued my fun with studying the tcell and cbind code bases for key bindings. My plan is to eventually not only support custom key bindings in the tt configuration file, but also to enable multi-key sequences, such as gg to jump to the top of a list/tree. Or use other vim-like navigation movements like 7j or 25gg etc.
And it turns out there are only a hand full oft tcell/cbind version combinations that work together. Only if all stars align, thereâs chance of success. I will probably end up pulling cbind in to simplify my life. There are situations where tcell.EventKeyâs triple of key, modifiers and rune are not all that intuitive to me. Letâs see.
@prologic@twtxt.net Well, 15 shows the site. On the left, I had a roll mat on a tarp. I borrowed some âNVA tarpsâ from the scouts for this trip. The scouts got them from the National Peopleâs Army, the German Democratic Republicâs armed forces after Germany was reunited. Theyâre 1.75m x 1.75m in size and weigh 1.3kg, quite heavy, but super awesome. One tarp on the bottom, another one to cover up the clothes, shoes and sleeping bag in order to protect against the thaw. Finally, a mosquito net over all that, hung from a rope between two trees.
My mate just used a hammock with a mozzie net on the right hand side. The third tarp served as the luxurious bedside carpet. :-)
We sat on my second tarp to chill and enjoy the sunset and surroundings. It was nice to notice birds etc. die down. It took a really long time for the last light to fade away. Since we have a very high risk of forest fires, we of course couldnât have a camp fire. But after all the exhaustion, I didnât even miss it for one second.
Since we had dinner at home before leaving, all we brought were two lye rolls, two grain rolls, two brezels, some sausage and chocolate biscuits for breakfast. From the 2.5l of water, I ended up using 2l. Itâs always good to have a little extra, despite the unnecessary weight. We had brekkie a few kilometers further on a bench in the shade. The first bench was already in direct sun.
Our camp site was maybe 30m to the side and a few meters down of a summit path hidden behind some trees and bushes. We were quite lucky, the other side of the hill got quite a bit of a breeze at night. We could hear the leaved treetops making much more noise behind us.
@movq@www.uninformativ.de Yes, these kind of dogs should really be strictly forbidden!
Itâs not illegal if you own the forest or ask the owner. :-)
@david@daiwei.me Yeah, no clue. But my mate said the dog is disqualified from such adventures in the future. :-)
The temps were supposed to hit 14°C just before sunrise. Since we didnât bring a thermometer, I canât tell for sure. I was rather hot in my sleeping bag, so I had to pull out my arms every now and then. My mateâs sleeping bag was a little lighter and, unfortunately, the zipper jammed up. Since it didnât close all the way, it felt quite a bit cold I was told in the morning. When we got up at 6ish (we said, we donât care about time at all), it was probably already 16°C if not more. I brought a jumper, but a t-shirt was already nice enough to wear. The jumper just served as my pillow. The mercury raised by the minute then.
Yeah, I circled the spot with a biro to keep an eye on it. Until now, thereâs absolutely nothing to see. Looks like I got lucky.
We slept in the forest. It was really great except of my mateâs fucking terror dog who was barking and snarling the entire night to each and every sound. I had maybe half an hour of sleep in total. Despite that, it was pleasantly warm. Well, the night, that is. The heat was brutal during the days. Literally streams of sweat were running down on us on the way there in the evening and back in the morning.
Surprisingly, there werenât any mozzies around at night, I would have lost all safe bets. On the way there, my mate convinced me to take a shortcut through the taller and taller growing grass. Itâs been some time that somebody traveled on this track, so we had to search around a bit for the overgrown path where we could cross the mostly dried up creek. In the beginning I said that this will be a bad idea. Lo and behold, I discovered a tick on my inner upper leg the next morning. Luckily, I got it out with my tick hook on the first attempt.
@bender@twtxt.net Immediately reminded me of the German childrenâs song âLaurentia, liebe Laurentia meinâ: https://www.youtube.com/watch?v=3Q0aky9FvLc
Have a nice weekend!
@prologic@twtxt.net Iâm glad you like it. :-)
@bender@twtxt.net I bet thatâs true!
@bender@twtxt.net Nice job! Without the comparison of the after photo, the grass doesnât look all that tall before. :-D But there sure was one or the other centimeter chopped off.
@movq@www.uninformativ.de What a desaster.
@bender@twtxt.net Thanks! I wanted that to never end as well. :-)
@movq@www.uninformativ.de Even way lower than that.
@prologic@twtxt.net @bender@twtxt.net @movq@www.uninformativ.de @aelaraji@aelaraji.com Success!
@david@daiwei.me Some entries can be probably simplified with just *bot*. :-) (But I donât use Caddy, so no idea about case (in)sensitivity.
That reminds me, I should do something similar with my Nginx.
@aelaraji@aelaraji.com I do use XMPP. But only the text chat part. ;-)
@movq@www.uninformativ.de Hier hab ich zum GlĂźck Ăźberhaupt gar nichts davon mitbekommen.
Very hot above 30°C, but luckily also incredibly cloudy and a lot of wind. Thatâs what we got today. My mate and I went on a quick stroll this evening and got a surprise killer sunset: https://lyse.isobeef.org/abendhimmel-2026-07-07/
@bender@twtxt.net Iâm glad to announce that Lyseâs Free Nose Cleaning Service is now internationally available.
@movq@www.uninformativ.de Congrats! :-)
@movq@www.uninformativ.de There is nothing like that on Linux, because you donât need it. Everything just works!
@prologic@twtxt.net Very nice! Which boat is yours? :-)
@arne@uplegger.eu Whoah! âSchaffung eines Aufenthaltsraumes fĂźr Nichtraucher!â Irre, dass es einen solchen vor dem 1. Mai 1975 nicht gab. Kann man sich heute Ăźberhaupt nicht vorstellen.
Cool, schĂśnes Heftchen hast Du da gesetzt. :-) Die Lochkartenanzahlen sind auch der absolute Wahnsinn.
@itsericwoodward@itsericwoodward.com @bender@twtxt.net Oh, I missed that. Whoopsy daisy!
@kiwu@twtxt.net Hanging on by a thread is plenty good enough for many spiders, so it should be sufficient for you, too!!1!
@bender@twtxt.net I, too, should take a nap now.
Set/GetDisabled(âŚ) and PasteHandler(), tt starts up fine and seems to work without issues.
@movq@www.uninformativ.de @bender@twtxt.net Indeed! No idea why this isnât the default in the first place.
@itsericwoodward@itsericwoodward.com Twtxthashgeddon, hahahaha, brilliant. :-D
Set/GetDisabled(âŚ) and PasteHandler(), tt starts up fine and seems to work without issues.
After updating to tview 0.42.0, I also sadly noticed, that the tview.Modal now clears the background and doesnât simply draw over the already present widget. So, I decided to write my own Dialog widget. This endeavor lead me down the path to actually bring back a custom Button implementation, too. When the button is focused, it surrounds the button text with [ and ]. When not in focus, the brackets are removed. Much better than before (https://twtxt.net/conv/qx3vz4a):
I also use the same buttons in the compose view, too.
Great news, thank you! I can confirm, it looks good so far. After your change, the crawler requests every hour and five minutes: :-)
2026-07-04T14:03:09+02:00 200
2026-07-04T15:08:07+02:00 304
2026-07-04T16:13:08+02:00 304
2026-07-04T17:18:07+02:00 304
2026-07-04T18:23:07+02:00 304
2026-07-04T19:28:07+02:00 304
@bender@twtxt.net Thanks, mate!
On the back of the bench, the badge says: âGestiftet Verein berg hohenstaufen GĂśppingen 2013â. I read that as the Mt. Hohenstaufen club donated the bench itself:
On the front of the bench, the badge says: âGestiftet von Hildegard Schuster, Gesellschafterin der Schwarz-Gruppe, Firma Wacklerâ. The bronze lady was donated by a shareholder of the Schwarz group, specifically the local Wackler trucking and logistics company. Clip of 27 in original resolution:
The book itself reads: âZur Erinnerung an Ralph Kobzaâ Itâs in memory of the sales manager of the art foundry next town that created also this statue. My mate took this photo:
@prologic@twtxt.net Thatâs cool to hear!
Looking at my access logs, something seems to be off, though:
2026-07-04T04:11:26+02:00 200
2026-07-04T05:16:09+02:00 304
2026-07-04T06:33:34+02:00 304
2026-07-04T06:37:46+02:00 304 # just four minutes since last crawl
2026-07-04T06:41:55+02:00 304 # another four minutes
2026-07-04T07:11:33+02:00 304
2026-07-04T07:11:40+02:00 200 # no conditional request just seven seconds later
2026-07-04T07:43:25+02:00 304
2026-07-04T07:43:33+02:00 200 # just eight seconds since last crawl
2026-07-04T09:18:06+02:00 304
2026-07-04T09:22:53+02:00 304 # just four minutes since last crawl
2026-07-04T09:27:03+02:00 304 # another four minutes
@movq@www.uninformativ.de It sure feels like the focus is heavily shifted to the average Joe and the power users are left standing.
@movq@www.uninformativ.de Welcome to the wild west!
@movq@www.uninformativ.de I agree and am very happy about how it went for me back then. Having said that, I still admire @kat@yarn.girlonthemoon.xyzâs persistence and strong will to get into it. I feel that a lot of young folks give up way too quickly.
My mate and I hiked up the backyard mountain. We got 25°C and quite some wind, so it was actually not too terrible. The wind could have blown harder or the temps a little lower, but oh well.
I saw the squirrelâs bushy tail stick up on the forest floor in the sunlight and immediately thought of this cute little feller. Since it didnât move at all, even when we came closer, I got irritated and reconsidered that it might actually be some kind of dried up farn. But then we also were able to see its body. Unfortunately, the squirrel ran up the tree too quickly, so all the shots are kinda crap.
At one flower spot, there were sooo many butterflies, wasps, flies, bugs and other insects. The botanic was completely crowded.
The workers were transferring logs from one log truck to the other in a parking lot. Iâve never seen this happening before. When we passed the same place on the way home, they had moved logs into a sea container. That was surprising. This semi wasnât there on the way there. One log was probably too long and sticking out the container, so they probably had to wait for somebody to return with a chainsaw. Crazy that theyâre shipping logs from here probably overseas. Why else would they put them in a sea container?
After our first break, a blackbird was really posing for us with his worm in the dark shade.
Today was my first time I ever saw a hummingbird hawk-moth (Taubenschwänzchen) for real. My mate photographed them many, many times before, but I never came across one myself. So, that was really special.
The forest service installed an outdoor table with two benches next to the timber lion, that was cool to see. We sat down for a few minutes and enjoyed both the view into the Fils valley and ant on the tabletop, but the sun was beating down too heavily on us, so we had to move on.
All in all, it was a very nice few hours long hike. Enjoy! https://lyse.isobeef.org/waldspaziergang-2026-07-03/
@movq@www.uninformativ.de https://movq.de/blog/postings/2026-07-03/0/POSTING-en.html Oh yeah, the toolbar handles. You could actually move the toolbars around and sometimes even customize them. I have no evidence, but to me it feels like a lot of programs donât allow that anymore nowadays.
@arne@uplegger.eu @movq@www.uninformativ.de Oh! Von wann ist denn das? Und ja, Innenaufnahmen wären richtig fein. :-)
@movq@www.uninformativ.de It was an easy and quick fix, though. :-)
@arne@uplegger.eu Ah, ein Jahresband. Man darf dann auf Beiträge dazu im Blog demnächst gespannt sein. :-)
@arne@uplegger.eu Ist die Zahl 2000 ein Verweis auf das Erscheinungsjahr oder einfach nur eine fortlaufende Nummerierung der Zeitungsausgabe und bei Erreichen der zweitausendsten Ausgabe dann als Bonus beigelegen? Frohes SchmĂśkern!
@movq@www.uninformativ.de Ah nice, I didnât know about pytestâs parameterization feature.
@movq@www.uninformativ.de @prologic@twtxt.net It werks!
@movq@www.uninformativ.de Thanks! The sunset just beats everything.