# I am the Watcher. I am your guide through this vast new twtiverse.
#
# Usage:
# https://watcher.sour.is/api/plain/users View list of users and latest twt date.
# https://watcher.sour.is/api/plain/twt View all twts.
# https://watcher.sour.is/api/plain/mentions?uri=:uri View all mentions for uri.
# https://watcher.sour.is/api/plain/conv/:hash View all twts for a conversation subject.
#
# Options:
# uri Filter to show a specific users twts.
# offset Start index for quey.
# limit Count of items to return (going back in time).
#
# twt range = 1 7053
# self = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=6352
# next = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=6452
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=6252
@prologic Spring cleanup! That's one way to encourage people to self-host their feeds. :-D
Since I'm only interested in the url
metadata field for hashing, I do not keep any comments or metadata for that matter, just the messages themselves. The last time I fetched was probably some time yesterday evening (UTC+2). I cannot tell exactly, because the recorded last fetch timestamp has been overridden with today's by now.
I dumped my new SQLite cache into: https://lyse.isobeef.org/tmp/backup.tar.gz This time maybe even correctly, if you're lucky. I'm not entirely sure. It took me a few attempts (date and time were separated by space instead of T
at first, I normalized offsets +00:00
to Z
as yarnd does and converted newlines back to U+2028
). At least now the simple cross check with the Twtxt Feed Validator does not yield any problems.
@prologic Spring cleanup! That's one way to encourage people to self-host their feeds. :-D
Since I'm only interested in the url
metadata field for hashing, I do not keep any comments or metadata for that matter, just the messages themselves. The last time I fetched was probably some time yesterday evening (UTC+2). I cannot tell exactly, because the recorded last fetch timestamp has been overridden with today's by now.
I dumped my new SQLite cache into: https://lyse.isobeef.org/tmp/backup.tar.gz This time maybe even correctly, if you're lucky. I'm not entirely sure. It took me a few attempts (date and time were separated by space instead of T
at first, I normalized offsets +00:00
to Z
as yarnd does and converted newlines back to U+2028
). At least now the simple cross check with the Twtxt Feed Validator does not yield any problems.
And now, let's finish it off with Besigheim's old town. Only when we left, the sun peaked through the clouds. That was a bit unfortunate, but what can you do? It has some nice buildings. https://lyse.isobeef.org/besigheim-2025-03-30/
Besigheim
And now, let's finish it off with Besigheim's old town. Only when we left, the sun peaked through the clouds. That was a bit unfortunate, but what can you do? It has some nice buildings. https://lyse.isobeef.org/besigheim-2025-03-30/
Besigheim
Today, we had a cleanup day with the scouts. I estimate that we ended up with about half a metric ton of rubbish. Despite the heat it was really great fun.
All the garbage delivered to the municipal building yard
Today, we had a cleanup day with the scouts. I estimate that we ended up with about half a metric ton of rubbish. Despite the heat it was really great fun.
All the garbage delivered to the municipal building yard
@prologic In all my two Go projects I use modernc.org/sqlite
and can't complain. Works great for me.
@prologic In all my two Go projects I use modernc.org/sqlite
and can't complain. Works great for me.
The photo series covering old stuff continues. This time, Gundelsheim. Actually, mostly the castle hotel Horneck, I hardly took any photos from the town itself. I really should have, though. Let me just blame… aehm… yeah, the rain! It's totally the rain's fault!! When it started to drizzle, I actually took the first photos, so it's a total lie. https://lyse.isobeef.org/schlosshotel-horneck-in-gundelsheim-2025-03-30/
Magnolia tree and a tower
The photo series covering old stuff continues. This time, Gundelsheim. Actually, mostly the castle hotel Horneck, I hardly took any photos from the town itself. I really should have, though. Let me just blame… aehm… yeah, the rain! It's totally the rain's fault!! When it started to drizzle, I actually took the first photos, so it's a total lie. https://lyse.isobeef.org/schlosshotel-horneck-in-gundelsheim-2025-03-30/
Magnolia tree and a tower
@arne I'm very glad I only rarely have to deal with .docx & Co. And when I have to, 99% is in read mode only. Even though, I don't think that Markdown is the best choice, I use it on a daily basis. Some things, like links, in reStructuredText are better in my opinion.
Jira just resists to switch to Markdown and forces us to use its silly markup language.
For real typesetting, LaTeX is the way to go. But I very, very rarely do that.
@arne I'm very glad I only rarely have to deal with .docx & Co. And when I have to, 99% is in read mode only. Even though, I don't think that Markdown is the best choice, I use it on a daily basis. Some things, like links, in reStructuredText are better in my opinion.
Jira just resists to switch to Markdown and forces us to use its silly markup language.
For real typesetting, LaTeX is the way to go. But I very, very rarely do that.
Hirschhorn also offers a nice old town. The castle with all its many buildings up the mountain is very beautiful. This is my absolutely favorite one, it just looks soo great:
Bloody cool building in the Hirschhorn castle
Walking back down the narrow stairs with all the crooked, well-worn steps of different heights and lengths was quite challenging.
https://lyse.isobeef.org/hirschhorn-2025-03-30/
Hirschhorn also offers a nice old town. The castle with all its many buildings up the mountain is very beautiful. This is my absolutely favorite one, it just looks soo great:
Bloody cool building in the Hirschhorn castle
Walking back down the narrow stairs with all the crooked, well-worn steps of different heights and lengths was quite challenging.
https://lyse.isobeef.org/hirschhorn-2025-03-30/
@movq Awwwwww! <3 Thank you, that is now in my collection. :-) The other ones aren't bad either, very nice!
@movq Awwwwww! <3 Thank you, that is now in my collection. :-) The other ones aren't bad either, very nice!
@thecanine My apologies, mate! :-( As @david pointed out, this was definitely not my intent at all.
For the easter egg hunt, I first looked for a hidden image map link on the pixel dog in the right lower corner itself. Maybe one giant pixel just links to somewhere else, I figured. But I couldn't find any and then quickly moved on. Hence, I naturally viewed the HTML source. Because where else would be a good hiding place for easter eggs, right?
Next, I noticed the <font>
tags. I thought I had read quite some time ago that they are not an HTML5 thing, but wasn't entirely sure about it. So, I asked the W3C HTML validator. Sure enough. I thought I let you know about the violations. If somebody had found a mistake on my site, I'd love to hear about it, so I could fix it. I'm sorry that my chosen form of report didn't resonate with you all that well. I reckoned you'll also find it a bit funny, but I was clearly very wrong on that.
I actually followed the dog cow link to the video, so I ended up on the easter egg. However, I didn't recognize it as such. ¯\_(ツ)_/¯ Oh well.
Regarding my message about the browser quirks: I read your answer that you were arguing against the HTML validator findings. Of course, everybody can do with their sites whatever they likes._
@thecanine My apologies, mate! :-( As @david pointed out, this was definitely not my intent at all.
For the easter egg hunt, I first looked for a hidden image map link on the pixel dog in the right lower corner itself. Maybe one giant pixel just links to somewhere else, I figured. But I couldn't find any and then quickly moved on. Hence, I naturally viewed the HTML source. Because where else would be a good hiding place for easter eggs, right?
Next, I noticed the <font>
tags. I thought I had read quite some time ago that they are not an HTML5 thing, but wasn't entirely sure about it. So, I asked the W3C HTML validator. Sure enough. I thought I let you know about the violations. If somebody had found a mistake on my site, I'd love to hear about it, so I could fix it. I'm sorry that my chosen form of report didn't resonate with you all that well. I reckoned you'll also find it a bit funny, but I was clearly very wrong on that.
I actually followed the dog cow link to the video, so I ended up on the easter egg. However, I didn't recognize it as such. ¯\_(ツ)_/¯ Oh well.
Regarding my message about the browser quirks: I read your answer that you were arguing against the HTML validator findings. Of course, everybody can do with their sites whatever they likes._
@movq Sorry for being completely offtopic, but that's a really cute bird! :-)
@movq Sorry for being completely offtopic, but that's a really cute bird! :-)
A hike to the highest mountain in the Odenwald, the Katzenbuckel, lit. cat hillock. It was very windy and the sun very rarely showed its face, so it was quite chilly. Nice scenery, nevertheless. Surprisingly, this ski-jumping hill is still in operation. I've never expected this in a hundred years, judging by its state. https://lyse.isobeef.org/katzenbuckel-2025-03-29/
Entrance to a ski-jumping hill in a rather questionable state
A hike to the highest mountain in the Odenwald, the Katzenbuckel, lit. cat hillock. It was very windy and the sun very rarely showed its face, so it was quite chilly. Nice scenery, nevertheless. Surprisingly, this ski-jumping hill is still in operation. I've never expected this in a hundred years, judging by its state. https://lyse.isobeef.org/katzenbuckel-2025-03-29/
Entrance to a ski-jumping hill in a rather questionable state
@movq @xuu That sounds like kat! :-)
Is there some Makefile shenanigans going on maybe? $V
and $C
being swallowed by the Makefile. I fell in that trap again the other day.
@movq @xuu That sounds like kat! :-)
Is there some Makefile shenanigans going on maybe? $V
and $C
being swallowed by the Makefile. I fell in that trap again the other day.
@movq Oh yeah, take some pictures when you do. :-)
@movq Oh yeah, take some pictures when you do. :-)
@bender @eapl.me @xuu @movq Glad you all agree. :-D My SOAP knowledge is extremely rusty, I luckily had not to deal with that crap anymore for quite some years now. I even couldn't remember the XML declaration and had to look it up. ;-)
@bender @eapl.me @xuu @movq Glad you all agree. :-D My SOAP knowledge is extremely rusty, I luckily had not to deal with that crap anymore for quite some years now. I even couldn't remember the XML declaration and had to look it up. ;-)
@movq Yeah, I'm also disappointed each and every time.
@movq Yeah, I'm also disappointed each and every time.
@thecanine And this is exactly why there are quirks modes in browsers…
I'm actually glad I don't have to deal with all this web shit and work with compilers that hit me in the face when I do something illegal. :-)
@thecanine And this is exactly why there are quirks modes in browsers…
I'm actually glad I don't have to deal with all this web shit and work with compilers that hit me in the face when I do something illegal. :-)
@arne Oh no, you are in front of the line!!
@arne Oh no, you are in front of the line!!
@thecanine I found it! This looks like colored easter eggs when squinting.
@thecanine I found it! This looks like colored easter eggs when squinting.
@kat They all just wanted to be friends with a cool gal like you. ;-) It's sad that putting things openly on the internet just waits to be raided by script kiddies, bots or spammers eventually.
@kat They all just wanted to be friends with a cool gal like you. ;-) It's sad that putting things openly on the internet just waits to be raided by script kiddies, bots or spammers eventually.
@movq Yeah, like nearly all of them. There is the so called Bannwald, where it typically is not allowed to log, but there's only one in my entire county and I haven't even visted it. I should change that. https://de.wikipedia.org/wiki/Bannwald
@movq Yeah, like nearly all of them. There is the so called Bannwald, where it typically is not allowed to log, but there's only one in my entire county and I haven't even visted it. I should change that. https://de.wikipedia.org/wiki/Bannwald
@movq Haha, that's cool! :-D
@movq Haha, that's cool! :-D
@movq That's really great! I can't tell the difference to the original. :-)
@movq That's really great! I can't tell the difference to the original. :-)
@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.
@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 Yeah, it will be delayed. Oh well. That's just the way it is. :-)
@xuu Yeah, it will be delayed. Oh well. That's just the way it is. :-)
@movq Hahaha, that filename! :-D 100 times better than I could ever play.
@movq Hahaha, that filename! :-D 100 times better than I could ever play.
@xuu If the unread counter becomes negative, wouldn't that mean I have that many more read messages? :-D
@bender You're spot on, it's important to not introduce classical bugs!
@xuu If the unread counter becomes negative, wouldn't that mean I have that many more read messages? :-D
@bender You're spot on, it's important to not introduce classical bugs!
@movq Oh dear. :-( Have they fixed it?
@movq Oh dear. :-( Have they fixed it?
@prologic @movq I had a t-shirt with this one or the other decade ago. :-)
@prologic @movq 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.
"Unread messages: -1": Well, classic off by one error. I gotta have to hunt that down.
@movq That's not very retrocomputing!
@movq That's not very retrocomputing!
@eapl.me Interesting! Two points stood right out to me:
1. 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.
2. 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.
@eapl.me Interesting! Two points stood right out to me:
1. 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.
2. 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 I see, fair point, yeah.
@movq I see, fair point, yeah.
@movq Yikes! I didn't know about about:compat
. Crazy!
@movq Yikes! I didn't know about about:compat
. Crazy!
@xuu 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.
@xuu 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.
@david Ah shit, sorry, you're right! :-D
@david Ah shit, sorry, you're right! :-D
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.
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.
Thanks, @movq!
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
Thanks, @movq!
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 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.
@movq 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.
If I didn't mess this up, 61 feeds reduced down to 36.
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.
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 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. :-)*
@movq 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. :-)*