This time, I brought my cam along. We checked out a piece of ex-forest they’ve cut down. It looks terrible now. :-( At least the spruce resin smell was nice. https://lyse.isobeef.org/waldspaziergang-2025-03-27/
@eapl.me@eapl.me According to an update of the article, others have suggested the same.
Your explanation seems fitting. I just don’t get why people don’t use feed readers anymore. Anyway.
@xuu@txt.sour.is Yeah, it will be delayed. Oh well. That’s just the way it is. :-)
@movq@www.uninformativ.de Hahaha, that filename! :-D 100 times better than I could ever play.
@xuu@txt.sour.is If the unread counter becomes negative, wouldn’t that mean I have that many more read messages? :-D
@bender@twtxt.net You’re spot on, it’s important to not introduce classical bugs!
@movq@www.uninformativ.de Oh dear. :-( Have they fixed it?
@prologic@twtxt.net @movq@www.uninformativ.de I had a t-shirt with this one or the other decade ago. :-)
“Unread messages: -1”: Well, classic off by one error. I gotta have to hunt that down.
@movq@www.uninformativ.de That’s not very retrocomputing!
@eapl.me@eapl.me Interesting! Two points stood right out to me:
Why the hell are e-mail newsletters considered a valid option in the first place? Just offer an Atom feed and be done with it! Especially for a blog of this very type. This doesn’t even involve a third party service. Although, in addition he also links to Feedburner, what the fuck!? No e-mail address or the like is needed and subject to being disclosed.
When these spam mailers want to prevent resubscribing, then for fuck’s sake, why don’t they use a hash of the e-mail address (I saw that in yarnd) for that purpose? Storing the e-mail address in clear text after unsubscribing is illegal in my book.
@movq@www.uninformativ.de I see, fair point, yeah.
about:compat
in Firefox.
@movq@www.uninformativ.de Yikes! I didn’t know about about:compat
. Crazy!
@xuu@txt.sour.is Wow, that’s a giant graveyard. In my new database I have 16,428 messages as of now. Archive feed support is not yet available, so it’s just the sum of all the 36 main feeds.
There are 82.108 read statuses, but only 24.421 messages in the cache. In contrast to the cache with the messages, the read statuses are never cleaned up when a feed was unsubscribed from. And the read statuses also contain old style hashes, before we settled on the what we have today. Still a huge difference. Hmm.
tt
reimplementation that I already followed with the old Python tt
. Previously, I just had a few feeds for testing purposes in my new config. While transfering, I "dropped" heaps of feeds that appeared to be inactive.
Thanks, @movq@www.uninformativ.de!
My backing SQLite database with indices is 8.7 MiB in size right now.
The twtxt
cache is 7.6 MiB, it uses Python’s pickle
module. And next to it there is a 16.0 MiB second database with all the read statuses for the old tt
. Wow, super inefficient, it shouldn’t contain anything else, it’s a giant, pickled {"$hash": {"read": True/False}, …}
. What the heck, why is it so big?! O_o
@movq@www.uninformativ.de You could also just use a tiling window manager. :-) As a bonus, it doesn’t waste dead space, the window utilizes the entire screen. To also get rid of panels and stuff, put the window in fullscreen mode.
tt
reimplementation that I already followed with the old Python tt
. Previously, I just had a few feeds for testing purposes in my new config. While transfering, I "dropped" heaps of feeds that appeared to be inactive.
If I didn’t mess this up, 61 feeds reduced down to 36.
I now subscribed to most feeds in my Go tt
reimplementation that I already followed with the old Python tt
. Previously, I just had a few feeds for testing purposes in my new config. While transfering, I “dropped” heaps of feeds that appeared to be inactive.
This might motivate me to actually “finish” the new client, so that it could become my daily driver. No need to use the old software stack any longer. Let’s see how bad this goes.
@movq@www.uninformativ.de Yeah, most of the graphical applications are actually KDE programs:
- KMail – e-mail client
- Okular – PDF viewer
- Gwenview – image viewer
- Dolphin – file browser
- KWallet – password manager (I want to check out
pass
one day. The most annoying thing is that when I copy a password, it says that the password has been modified and asks me whether I want to save the changes. I never do, because the password is still the same. I don’t get it.)
- KPatience – card game
- Kdenlive – video editor
- Kleopatra – certificate manager
Qt:
- VLC – video player
- Psi – Jabber client (I happily used Kopete in the past, but that is not supported anymore or so. I don’t remember.)
- sqlitebrowser – SQLite browser
Gtk:
- Firefox – web browser
- Quod Libet – music player (I should look for a better alternative. Can’t remember why I had to move away from Amarok, was it dead? There was a fork Clementine or so, but I had to drop that for some unknown reason, too.)
- Audacity – audio editor
- GIMP – image editor
These are the things that are open right now or that I could think of. Most other stuff I actually do in the terminal.
In the past™, I used the Python KDE4 bindings. That was really nice. I could pass most stuff directly in the constructor and didn’t have to call gazillions of setters improving the experience significantly. If I ever wanted to do GUI programming again, I’d definitely go that route. There are also great Qt bindings for Python if one wanted to avoid the KDE stuff on top. The vast majority I do for myself, though, is either CLI or maybe TUI. A few web shit things, but no GUIs anymore. :-)
Oh, it’s called “unsubscribe”.
@movq@www.uninformativ.de Oh, right, a type would be good to have! :-D
@movq@www.uninformativ.de Where can I join your club? Although, most software I use is decentish in that regard.
I just noted today that JetBrains improv^Wcompletely fucked up their new commit dialog. There’s no diff anymore where I would also be able to select which changes to stage. I guess from now on I’m going to exclusively commit from only the shell. No bloody git integration anymore. >:-( This is so useless now, unbelievable.
@kat@yarn.girlonthemoon.xyz Pointers can be a bit tricky. I know it took me also quite some time to wrap my head around them. Let my try to explain. It’s a pretty simple, yet very powerful concept with many facets to it.
A pointer is an indirection. At a lower level, when you have some chunk of memory, you can have some actual values sitting in there, ready for direct use. A pointer, on the other hand, points to some other location where to look for the values one’s actually after. Following that pointer is also called dereferencing the pointer.
I can’t come up with a good real-world example, so this poor comparison has to do. It’s a bit like you have a book (the real value that is being pointed to) and an ISBN referencing that book (the pointer). So, instead of sending you all these many pages from that book, I could give you just a small tag containing the ISBN. With that small piece of information, you’re able to locate the book. Probably a copy of that book and that’s where this analogy falls apart.
In contrast to that flawed comparision, it’s actually the other way around. Many different pointers can point to the same value. But there are many books (values) and just one ISBN (pointer).
The pointer’s target might actually be another pointer. You typically then would follow both of them. There are no limits on how long your pointer chains can become.
One important property of pointers is that they can also point into nothingness, signalling a dead end. This is typically called a null pointer. Following such a null pointer calls for big trouble, it typically crashes your program. Hence, you must never follow any null pointer.
Pointers are important for example in linked lists, trees or graphs. Let’s look at a doubly linked list. One entry could be a triple consisting of (actual value, pointer to next entry, pointer to previous entry).
_______________________
/ ________\_______________
↓ ↓ | \
+---+---+---+ +---+---+-|-+ +---+---+-|-+
| 7 | n | x | | 23| n | p | | 42| x | p |
+---+-|-+---+ +---+-|-+---+ +---+---+---+
| ↑ | ↑
\_______/ \_______/
The “x” indicates a null pointer. So, the first element of the doubly linked list with value 7 does not have any reference to a previous element. The same is true for the next element pointer in the last element with value 42.
In the middle element with value 23, both pointers to the next (labeled “n”) and previous (labeled “p”) elements are pointing to the respective elements.
You can also see that the middle element is pointed to by two pointers. By the “next” pointer in the first element and the “previous” pointer in the last element.
That’s it for now. There are heaps ;-) more things to tell about pointers. But it might help you a tiny bit.
@andros@twtxt.andros.dev @prologic@twtxt.net Exactly. The screenshots of the last few days show it in action. But I do not consider it ready for the world yet. @doesnm@doesnm.p.psf.lt appears to have a high pain tolerance, though. :-)
@andros@twtxt.andros.dev You use your real name as login name, too?
@prologic@twtxt.net I see this with the scouts. Luckily, not at work. But at work, I’m surrounded by techies.
@movq@www.uninformativ.de Oh my goodness! I’m so glad that I don’t have to deal with that in my family. But yeah, I guess you’re onto something with your theory. This article is also quite horrific. O_o
@movq@www.uninformativ.de Wooaah, that is cool! \o/
Hahaha, a bird is singing really load and it sounds almost exactly like a car alarm. Well, it’s probably the other way around, the car alarm was modeled after the birdcall. :-)
@eapl.me@eapl.me I looked at the first few puzzles and they are pretty cool so far! I haven’t actually implemented any of them, but I’m fairly certain about how I’d solve them properly. I went through some linked reference articles yesterday, they’re also really good. I will recommend this to some workmates. :-)
It’s extremely surprising to me that younger non-technical people just type in their full name (properly cased first and last name with a space in between) for a technical username in account registration or login forms. I’ve seen that happening several times in the past few years. The field name is “Benutzername” in German, literally “username”. Even adding a placeholder text to signal that they could simply use their nickname in lowercase did not change anything at all. Well, one person used at least an e-mail address.
This wasn’t the case six, seven years ago, everybody had some “real” username. Even non-techies. It looks like some “common knowledge” is getting lost. Strange. Very weird. It trips me every time I see it.
Have you experienced something similar?
@doesnm@doesnm.p.psf.lt Heck yeah! Worky, worky! \o/
Ctrl+Left
to jump a word left, I get 1;5D
in my tt2 message text. My TERM
is set to rxvt-unicode-256color
. In tt
, it works just fine. When I change to TERM=xterm-256color
, it also works in tt2
. I have to read up on that. Maybe even try to capture these sequences and rewrite them.
@movq@www.uninformativ.de Hahaha, that name is certainly fitting! :-D
Yeah, I should revert that and try to figure out which programs misbehaved. But that’s something for future Lyse. 8-) Right now, I just redefine TERM
in my Makefile when the USER
happens to be me.
Ctrl+Left
to jump a word left, I get 1;5D
in my tt2 message text. My TERM
is set to rxvt-unicode-256color
. In tt
, it works just fine. When I change to TERM=xterm-256color
, it also works in tt2
. I have to read up on that. Maybe even try to capture these sequences and rewrite them.
Well, some time ago I put this in my ~/.Xdefaults:
URxvt.keysym.Control-Up: \033[1;5A
URxvt.keysym.Control-Down: \033[1;5B
URxvt.keysym.Control-Left: \033[1;5D
URxvt.keysym.Control-Right: \033[1;5C
Probably to behave more like XTerm and fix a few other issues I had with other programs. But, it turns out, tcell expects the original sequence: https://github.com/gdamore/tcell/blob/main/terminfo/r/rxvt/term.go#L487
Hmm.
Hmmm, when I Ctrl+Left
to jump a word left, I get 1;5D
in my tt2 message text. My TERM
is set to rxvt-unicode-256color
. In tt
, it works just fine. When I change to TERM=xterm-256color
, it also works in tt2
. I have to read up on that. Maybe even try to capture these sequences and rewrite them.
@david@collantes.us Tada, the reply context is now also shown above. It’s slowly coming together and reaching a state where I can actually use this as my daily driver I think. :-)
@david@collantes.us Thanks, yes, absolutely! ;-)
I now notice that I should also show the original message(s) to which I reply. That was super useful in the original tt
. But one after the other. The mentions are now automatically filled in. \o/
Perfect!
I now also implemented basic replying by hitting a
as in answering. What’s missing is automatically adding mentions in the message text template. That’s gonna be a bit more tricky, though.
tt
.) Now, this is the second attempt in tt2
.
Righto, now with added basic subject support. Hopefully!
(Back in tt
.) Well, it kinda worked. At least appending to the file. But my cache database got screwed up. I do not yet support replies, so the subject and and root hash columns have not been set at all, resulting in a message that is just not shown at all. I gotta do something about that next. The good thing is, though, after simply fixing the two columns the message appeared on screen.
(The previous message was written with tt
.) Now, this is the second attempt in tt2
.
Let’s see!
Dang it, first attempt failed:
Somehow, my local feed cannot be opened to append to. I reckon, I have to resolve the tilde first:
@kat@yarn.girlonthemoon.xyz Allegedly, there’s at least a CLI for that, yarnc
. I neither used nor looked at it, though.
@movq@www.uninformativ.de Oh for sure, I fully agree!
@eapl.me@eapl.me Cool!
Proposal 3 (https://git.mills.io/yarnsocial/twtxt.dev/issues/18#issuecomment-19215) has the “advantage”, that you do not have to “mention” the original author if the thread slightly diverges. It seems to be a thing here that conversations are typically very flat instead of trees. Hence, and despite being a tree hugger, I voted for 3 being my favorite one, then 2, 1 and finally 4.
All proposals still need more work to clarify the details and edge cases in my opinion before they can be implemented.
@kat@yarn.girlonthemoon.xyz It’s there, but yarnd’s markdown library probably thinks that it’s some broken HTML and swallows it, not sure.
@thecanine@twtxt.net Yeah, nobody will ever find that setting.
@movq@www.uninformativ.de ]:-> Ah, just that one line scrolls horizontally, not the entire screen.
@thecanine@twtxt.net It suits your site very well, but I find this font hard to read. In any case, keep on pixeling.
@movq@www.uninformativ.de Haha! Yeah, I really don’t know if that’s the best translation.