@thecanine@twtxt.net Oh no, the poor crocodile is struck by lightning!
There was a monster in the sky: https://lyse.isobeef.org/abendhimmel-2025-10-01/

@movq@www.uninformativ.de I wish I could truly say that. :-D
Thanks, @alexonit@twtxt.alessandrocutolo.it! Yeah, this classic rivet is a good, yet laborous alternative. I donāt mind the work, I just donāt have any copper at hand. I might give this some more thought, though.
@alexonit@twtxt.alessandrocutolo.it Hahaha, that made me laugh real good. :-D I find it always surprising what collects in a short amount of time.
(#abcdefghijkl https://example.com/tw.txt#:~:text=2025-10-01T10:28:00Z), because it can be simply hacked in to clients currently on hashv1 and provides an off-ramp to location-based addressing (though i still think the format should be changed to smth like #<abc... http://example.com/...> so it's cleaner once we finally drop hashes)
@zvava@twtxt.net Mixing both addressing schemes combines the worst of both worlds in my opinion. Please donāt do that.
url metadata field unequivocally treated as the canon feed url when calculating hashes, or are they ignored if they're not at least proper urls? do you just tolerate it if they're impersonating someone else's feed, or pointing to something that isn't even a feed at all?
@zvava@twtxt.net Yes, the specification defines the first url to be used for hashing. No matter if it points to a different feed or whatever. Just unsubscribe from malicious feeds and youāre done.
Since the first url is used for hashing, it must never change. Otherwise, it will break threading, as you already noticed. If your feed moves and you wanna keep the old messages in the same new feed, you still have to point to the old url location and keep that forever. But you can add more urls. As I said several times in the past, in hindsight, using the first url was a big mistake. It would have been much better, if the last encountered url were used for hashing onwards. This way, feed moves would be relatively straightforward. However, that ship has sailed. Luckily, feeds typically donāt relocate.
Haha, turns out, itās the perfect size to fit hankies: https://lyse.isobeef.org/tmp/blechschachtel/07.jpg
Thank you, @alexonit@twtxt.alessandrocutolo.it! Itās not sealed at all. If you were pouring in a liquid, it would run out on all four corners. Itās just folded over and carefully hammered shut as best as possible. 03 is a bit blurred, but you can see the tab from the right (the short side) tucking in on the left (the long side). The hem on top clamps it in place fairly decently.
I decided against blind rivets, because they leave ugly looking and sharp backsides, which can also interfer with the contents of the box. However, they would be an easy solution to make the corners more rigid and prevent any movement from the short sides.
Unfortunately, I canāt weld or solder, so thatās not an option. It would be the by far best solution. I wanna learn it one day, though.
Yes, Ken is a really great dude. Heās the reason I gave this a shot in the first place. :-)
@itsericwoodward@itsericwoodward.com No worries, all good, mate! We all have to start somewhere. Other software requests my feed several orders of magnitude more often.
I can confirm, the User-Agent header appears to be fixed. \o/
Two other things I noticed, though:
Thereās now an
OPTIONSrequest for my feed coming from something that claims to be Firefox, pointing to your feed URL in the query. No clue what this is about. In any case, itās rejected with a405 Method Not Allowed.Not that these few requests bother me at all, but you might wanna implement caching next with either the
If-Modified-SinceorIf-None-Matchrequest headers. This way, if the feed hasnāt changed, the web server can reply with a304 Not Modifiedand no body at all, saving unnecessary traffic. But again, this is really not an issue for me at all. I just wanted to make sure youāre aware of it, thatās all. It might be even already on your agenda. Or you might decide to never do anything about it, which is also fine for me. :-)
groff --version)?
@movq@www.uninformativ.de Itās an ancient 1.22.4. :-)
@movq@www.uninformativ.de I got an empty line through the table, similarly to one of the linked bug reports, just at a different location:
https://lyse.isobeef.org/tmp/screenshot-2025-09-27-13-56-13.png
@bender@twtxt.net @movq@www.uninformativ.de Thank you! Not sure what I end up putting in there, but Iām sure I will find some tools to go in. :-)
Yes, this was a flat piece of sheet metal. It went together like a cardboard box, just much slower and with timbers clamped down to get a straight folding line. I donāt have a sheet metal brake, so I just carefully hammered the piece bit by bit. Like in this video by the Sheet Metal Dude: https://www.youtube.com/watch?v=WYgEfWEMXk0
For a very first attempt, Iām extremely happy how this tray turned out: https://lyse.isobeef.org/tmp/blechschachtel/ The photos look rougher than in person. The 0.5mm aluminium sheet was 300x200mm to begin with. Now, the accidental outside dimensions are 210x110mm. It took me about an hour to make. Tomorrow, I gotta build a simple folder, so I donāt have to hammer it anymore, but can simply bend it a little at a time.
@movq@www.uninformativ.de You didnāt miss anything. Just time for more useful stuff. ;-)
@alexonit@twtxt.alessandrocutolo.it You might wanna have a look at this: https://lyse.isobeef.org/tmp/twthash.py
Exactly, @zvava@twtxt.net, I agree. (Although, in my client at least, I wouldnāt use hashes anywhere.)
Hey @itsericwoodward@itsericwoodward.com, I just wanna let you know that twtstrm/0.4.0 sends a broken User-Agent header. Instead of the URL, the nick is repeated.
@zvava@twtxt.net Hahaha, I love it! This illustrates the contradiction very well.
@alexonit@twtxt.alessandrocutolo.it Maybe I misunderstood, but you have to keep the timezone offsets in mind. Simple alphabetical sorting of the timestamp strings does not yield a truly chronological order. It might be close enough for you, though.
@movq@www.uninformativ.de Iāve got this magic spell in my config: -f bestvideo[height<=?1080]+bestaudio/best
@bender@twtxt.net @movq@www.uninformativ.de I had automatically yt-dlped https://www.youtube.com/watch?v=OZTSIYkuMlU
. Itās only worth for an experiment, no recommendation to watch.
Whooooaaaah, I just accidentally found out that VLC can play 360° videos and I am able to pan around! Crazy shit. I actually scrolled in order to adjust the volume like it usually works, but it zoomed in and out instead. Then I saw the title hinting at the 360° stuff. Even though this is not my cup of tea, itās nice that VLC supports it.
@movq@www.uninformativ.de Yeah, it took quite some time to load. But then it was briefly back. Now itās 503ing immediately all the time.
Removing the empty cache file and it works again. No idea about the PATH glitch, though. Very strange.
@movq@www.uninformativ.de Woah, cool!
(WTF, asciiworld-sat-track somehow broke, but I have not changed any of the scripts at all. O_o It doesnāt find the asciiworld-sat-calc anymore. How in the world!? When I use an absolute path, the .tle is empty and I get a parsing error. Gotta debug this.)
@prologic@twtxt.net I know we wonāt ever convince each other of the otherās favorite addressing scheme. :-D But I wanna address (haha) your concerns:
I donāt see any difference between the two schemes regarding link rot and migration. If the URL changes, both approaches are equally terrible as the feed URL is part of the hashed value and reference of some sort in the location-based scheme. It doesnāt matter.
The same is true for duplication and forks. Even today, the ācannonical URLā has to be chosen to build the hash. Thatās exactly the same with location-based addressing. Why would a mirror only duplicate stuff with location- but not content-based addressing? I really fail to see that. Also, who is using mirrors or relays anyway? I donāt know of any such software to be honest.
If there is a spam feed, I just unfollow it. Done. Not a concern for me at all. Not the slightest bit. And the byte verification is THE source of all broken threads when the conversation start is edited. Yes, this can be viewed as a feature, but how many times was it actually a feature and not more behaving as an anti-feature in terms of user experience?
I donāt get your argument. If the feed in question is offline, one can simply look in local caches and see if there is a message at that particular time, just like looking up a hash. Whereās the difference? Except that the lookup key is longer or compound or whatever depending on the cache format.
Even a new hashing algorithm requires work on clients etc. Itās not that you get some backwards-compatibility for free. It just cannot be backwards-compatible in my opinion, no matter which approach we take. Thatās why I believe some magic time for the switch causes the least amount of trouble. You leave the old world untouched and working.
If these are general concerns, Iām completely with you. But I donāt think that they only apply to location-based addressing. Thatās how I interpreted your message. I could be wrong. Happy to read your explanations. :-)
@alexonit@twtxt.alessandrocutolo.it Personally, I find the reversed order of URL first and then timestamp more natural to reference something. Granted, URL last would be kinda consistent with the mention format. However, the timestamp doesnāt act as a link text or display text like in a mention, so, itās some different in my opinion. But yeah.
@prologic@twtxt.net Yes, no doubt. Thereās always something somewhere.
@movq@www.uninformativ.de But itās so reliable and they have all the experts, they know what theyāre doing! And donāt forget, itās way cheaper! Just think of the 34 cents saved every year on paper, the business dude calculated!
Enjoy your weekend! (I hope, you just called it a day and donāt have to drive to the office or silly shenanigans like that.)
@movq@www.uninformativ.de Thatās transparency hardware support!
nicks? i remember reading somewhere whitespace should not be allowed, but i don't see it in the spec on twtxt.dev ā in fact, are there any other resources on twtxt extensions outside of twtxt.dev?
@zvava@twtxt.net In tt, I recognize umlauts in nicks, but they cannot include whitespace, @, !, #, (, ), [, ], <, >, " (but ' is okay). Whitespace also acts as a separator between nick and URL. @<Hello World http://example.com> ends up exactly like that and is not a mention.
nicks? i remember reading somewhere whitespace should not be allowed, but i don't see it in the spec on twtxt.dev ā in fact, are there any other resources on twtxt extensions outside of twtxt.dev?
@zvava@twtxt.net @movq@www.uninformativ.de Iām not entirely sure about the spaces, but maybe they were omitted to simplify parsing of mentions in the form of @<nick url>. If the next token after the @<nick does not look like a URL, itās not a mention but regular text. This is just wild guessing, though.
Looking at the regex and tests in the original twtxt reference implementation seems to confirm that theory in the sense as it relies on whitespace as the delimiter:
https://lyse.isobeef.org/tmp/screenshot-2025-09-17-21-30-25.png
Another thing about nicks is that the original twtxt reference implementation converts nicks to all lowercase:
https://lyse.isobeef.org/tmp/screenshot-2025-09-17-21-20-39.png
You probably know this already, the original twtxt file format specification can be found here: https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
As for extensions, I donāt know of anything outside of twtxt.dev that has actually been (partially) implemented. However, there is also the issue tracker of the official reference implementation. You might wanna dig through that. For example, there is an alternative suggestions of multiline messages: https://github.com/buckket/twtxt/issues/157
@zvava@twtxt.net There would be only one hash for a message. Some to be defined magic date selects which hash to use. If the message creation timestamp is before this epoch, hash it with v1, otherwise hammer it through v2. Eventually, support for v1 could be dropped as nobody interacts with the old stuff anymore. But Iād keep it around in my client, because why not.
If users choose a client which supports the extensions, they donāt have to mess around with v1 and v2 hashing, just like today.
As for the school of thought, personally, Iād prefer something else, too. Iām in camp location-based addressing, or whatever it is called. There more I think about it, a complete redesign of twtxt and its extensions would be necessary in my opinion. Retrofitting has its limits. Of course, this is much more work, though.
Iām happy to report, after the successful remix of System Of A Down with the Nooran Sisters from India in https://www.youtube.com/watch?v=mi106DZJhuQ
I stumbled across something almost equally great from Pakistan, Nusrat Fateh Ali Khan: https://www.youtube.com/watch?v=aZYG-9usGPI
Itās a banger! The girls are unmatched, though.
What a crazy color temperature this yellow orange was in person! Sick lighting this evening: https://lyse.isobeef.org/abendhimmel-2025-09-15/

@movq@www.uninformativ.de Luckily, I had a grep -v git at the end, so my repo is still in working order. Phew. I wish find had grep-like --exclude-dir and --exclude options (or the include variants) instead of its own weird options that I never can remember and combine properly.
@movq@www.uninformativ.de Nice Jacobās ladder. ;-) I had to look up this term, I also found Zig Zag. What do you folks call this in your languages? In German, itās Hexentreppe (lit. Witchās Staircase).
@zvava@twtxt.net It is just completely impossible to make v2 backwards-compatible with v1.
Well, breaking threads on edits is considered a feature by some people. I reckon the only approach to reasonably deal with that property is to carefully review messages before publishing them, thus delaying feed updates. Any typos etc., that have been discovered afterwards, are just left alone. Thatās what I and some others do. I only risk editing if the feed has been published very few seconds earlier. More than 20 seconds and I just ignore it. Works alright for the most part.
I corrupted my SQLite test database with sed -i s/⦠$(find ā¦). Clearly, I found too many files. Thatās the signal to go to bed.
@zvava@twtxt.net For the time being, just show both.
Great. Yet another messed up plain text e-mail part. The URL was actually HTML-escaped. Took me five attempts to figure this out, because of course it had to be several kilometers long. In fact, the e-mail stated: āPlease do not be surprised that the link is particularly long. It contains your personal configuration.ā
A normal person is completely lost (thatās why I got involved). Visting the broken URL opens a popup dialog suggesting to deactivate script blockers. Which I had already done upfront as a matter of prudence.
Fun bonus on top: The JWT in the link has identical iat (issued at) and exp (expiry) claims. The expiry is definitely not checked, itās well in the past.
Medical software just has to be horrible. Itās a law.
Thanks, @thecanine@twtxt.net. Itās completely horizontal, I donāt see any diagonals. Anyway, itās great art, happy drawing!
Hahaha, @bender@twtxt.net, youāre just the best with the words! :-D I love it.
@thecanine@twtxt.net Yeah, what @bender@twtxt.net said. That tail is sick. Is this dog crying, though? The vertically elongated eye looks a bit like a tear running down.
@bender@twtxt.net Absolutely. My computer science teacher was really great and in a lot of aspects very similar. Especially combining the theoretical and practical parts. Heās also the main reason I ended up where I am today. Iām very grateful to him. Mr. Burger, however, takes this on a whole new level.
We just had some lovely colors again: https://lyse.isobeef.org/abendhimmel-2025-09-12/

Woooooaaaahh, thatās bloody amazing! I wish Iād had a teacher like that.
English version: https://youtu.be/wi_q6IythMk
German version: https://youtu.be/2Lv1MMlFDBs
@kat@yarn.girlonthemoon.xyz The duck was in a darker spot, so my camera wasnāt all that happy with the lighting. Upon further inspection, youāre right, now that you pointed it out, I can see it too! The feathers do look like an oil painting. ;-)