@movq@www.uninformativ.de I can confirm.
An intern practicing with turtle had an error when launching it the first time because it was missing tkinter which it use internally.
@zvava@twtxt.net yarnd fetches the feeds roughly every ten minutes:
grep twtxt.net www/logs/twtxt.log | cut -d ' ' -f1 | tail -n 20
2025-10-04T07:00:45+02:00
2025-10-04T07:10:26+02:00
2025-10-04T07:22:43+02:00
2025-10-04T07:30:45+02:00
2025-10-04T07:40:48+02:00
2025-10-04T07:52:59+02:00
2025-10-04T08:00:07+02:00
2025-10-04T08:13:33+02:00
2025-10-04T08:23:13+02:00
2025-10-04T08:31:22+02:00
2025-10-04T08:41:29+02:00
2025-10-04T08:53:25+02:00
2025-10-04T09:03:31+02:00
2025-10-04T09:11:42+02:00
2025-10-04T09:23:11+02:00
2025-10-04T09:29:49+02:00
2025-10-04T09:36:17+02:00
2025-10-04T09:46:33+02:00
2025-10-04T09:58:40+02:00
2025-10-04T10:06:54+02:00
I suspect that the timing was just right. Or wrong, depending on how youāre looking at it. ;-)
Itās time to say goodbye to the GTK world.
GTK2 was nice to work with, relatively lightweight, and there were many cool themes back then. GTK3 was already a bit clunky, but tolerable. GTK4 now pulls in all kinds of stuff that Iām not interested in, it has become quite heavy.
Farewell. š
All good things come to an end, I guess.
I have an Epson printer (AcuLaser C1100) and an Epson scanner (Perfection V10), both of which I bought about 20 years ago. The hardware still works perfectly fine.
Until recently, Epson still provided Linux drivers for them. That is pretty cool! I noticed today that they have relaunched their driver website ā and now I canāt find any Linux drivers for that hardware anymore. Just doesnāt list it (it does list some drivers for Windows 7, for example).
I mean, okay, weāre talking about 20 years here. That is a very long time, much more than I expected. But if it still works, why not keep using it?
Some years ago, I started archiving these drivers locally, because I anticipated that they might vanish at some point. So I can still use my hardware for now (even if I had to reinstall my PC for some reason). It might get hacky at some point in the future, though.
This once more underlines the importance of FOSS drivers for your hardware. I sadly didnāt pay attention to that 20 years ago.
The main feed got quite large again, so itās time for another rotation into archive feeds. I just noticed that I forgot to upload the archive feeds last time. Whoops. :-)
@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.
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.
is the first 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?
and if the first url metadata field changes, should it be logged with a time so we can still calculate hashes for old posts? or should it never be updated? (in the case of a pod, where the end user has no choice in how such events are treated) or do we redirect all the old hashes to the new ones (probably this, since it would be helpful for edits too)
Measure Twice, Cut Once
ā Read more
i desperately want to simply deploy a bbycll instance but i need to change the entire database schema for the Nth time, i havenāt been working on it much recently as this back and forth w the backend (which you donāt expect from a spec as simple as twtxt) is really demotivating, as well as life and stuff getting in the way
perhaps i just need a nice shower and four coffees, midnight is when i am most productive and the hour is approaching..
@prologic@twtxt.net I too, self-host various services on a VPS (and considering buying a mini PC to keep at home instead).
I use most of it as a hosting platform for personal use only and as a remote development environment (I do share a couple of tools with a friend though).
But given the costant risks of DDoS, hacking, bots, etc. I keep any of my public facing resources purely static and on separate hosting providers (without lock-ins of course).
Lately, I began using homebrew PWAs with CouchDB as a sync database, this way I get a fantastic local-first experience and also have total control of my data, that also sync in a locally hosted backup instance in real-time.
Also, I was already aware of Salty.im, but what Iām thinking is a more feature complete solution that even my family can use quickly, Delta.chat with the new chatmail provider (self-hostable) might be the solution for my needs.
But Iām still thinking if itās worth the trouble. I might just drop everything and only use safe channels to speak with them (free 24/7 family tech-support is easy to manage š).
Also, Iāll be waiting for the day youāll share with us your story, Iām pretty curious about it!
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. ;-)
@prologic@twtxt.net you doing this reminded me of mkws, and Adi. Good times, we have seeing so many people come and go. It is kind of sad, when I think about ājjlā, and Phil, and the many othersā¦
I am feeling āmushyā today. Ugh, ageing sucks.
@prologic@twtxt.net yup, thatās what I meant. The lack of it on the URL is fine, but on the post itself it is always a good idea. Time frames matter.
@prologic@twtxt.net I canāt upload a screenshot (tried, but Yarnd simple āateā my reply). See https://zsblog.mills.io/posts/hello-zs-blog.html. Is has no date/time on it.
@prologic@twtxt.net They have not rolled it out (yet), they are ājustā discussing it (for the n-th time).
@alexonit@twtxt.alessandrocutolo.it Yeah I think weāre overstating the UNIX principles a bit here 𤣠I get what youāre trying to say though @zvava@twtxt.net š If I could go back in time and do it all over again, I would have gotten the Hash length correct and I would have used SHA-256 instead. But someone way smarter than me designed the Twt Hash spec, we adopted it and well here we are today, it works⢠š
And I need to make something absolutely clear as well here. Twtxt was completely and utterly dead back in {Aug 2020](https://yarn.social/about.html) when I came across the spec and its simplicity and realised the lost opportunity. Since then weāve continued to grow a small but thriving community. The extensions weāve built over time have stood and lasted the test of time for the past ~5 years. We need not break things too badly, because what we have today and was designed years ago actually works quite well⢠(despite some flaws).
@zvava@twtxt.net Going to have to hard disagree here Iām sorry. a) no-one reads the raw/plain twtxt.txt files, the only time you do is to debug something, or have a stick beak at the comments which most clients will strip out and ignore and b) Iām sorry youāve completely lost me! Iām old enough to pre-date before Linux became popular, so Iām not sure what UNIX principles you think are being broken or violated by having a Twt Subject (Subject) whose contents is a cryptographic content-addressable hash of the āthingā⢠youāre replying to and forming a chain of other replies (a thread).
Iām sorry, but the simplest thing to do is to make the smallest number of changes to the Spec as possible and all agree on a āMagic Dateā for which our clients use the modified function(s).
@bender@twtxt.net Well honestly, this is just it. My strong position on this is quite simple:
Do the simplest thing that could work.
Itās one of the age old UNIX philosphies.
Therefore, the simplest thing⢠to do here is to just increase the hash length, mark a magic⢠date/time as @lyse@lyse.isobeef.org has indicated and call it a day. Weāll then be fine for a few hundred years, at which point thereāll be no-one left alive to give a shit⢠anyway š¤£
@prologic@twtxt.net considering other alternatives we have seeing (of which I have lost track already), yes. Why donāt you guys (client makers) take a step at a time and, for now, increase the hash length to deal with the collisions. Then location-based addressing can be added⦠or not, you know. š
@lyse@lyse.isobeef.org I canāt remember the last time I came across a 360° video. š¤
Thanks @bender@twtxt.net itās been a long time indeed but, I was here the whole time. Just silent. I just didnāt have much meaningful/worth twting about ⦠/ME flips a bird to life
@bender@twtxt.net Thanks for asking!
So, Iāve been working on 2 main twtxt-related projects.
The first is small Node / express application that serves up a twtxt file while allowing its owner to add twts to it (or edit it outright), and Iāve been testing it on my site since the night I made that post. Itās still very much an MVP, and Iāve been intermittently adding features, improving security, and streamlining the code, with an eye to release it after I get an MVP done of project #2 (the reader).
But thatās where Iāve been struggling. The idea seems simple enough - another Node / express app (this one with a Vite-powered front-end) that reads a public twtxt file, parses the āfollowā list, grabs (and parses) those twtxt files, and then creates a river of twts out of the result. The pieces work fine in seclusion (and with dummy data), but I keep running into weird issues when reading real-live twtxt files, so some twts come through, while others get lost in the ether. Iāll figure it out eventually, but for now, Iāve been spending far more time than I anticipated just trying to get it to work end-to-end.
On top of it, the 2 projects wound up turning into 4 (so far), as Iāve been spinning out little libraries to use across both apps (like https://jsr.io/@itsericwoodward/fluent-dom-esm, and a forthcoming twtxt helper library).
In the end, Iām hoping to have project 1 (the editor) into beta by the end of October, and project 2 (the reader) into beta sometime after that, but weāll see.
I hope this has satisfied your curiosity, but if youād like to know more, please reach out!
@bender@twtxt.net Thanks for asking!
So, Iāve been working on 2 main twtxt-related projects.
The first is small Node / express application that serves up a twtxt file while allowing its owner to add twts to it (or edit it outright), and Iāve been testing it on my site since the night I made that post. Itās still very much an MVP, and Iāve been intermittently adding features, improving security, and streamlining the code, with an eye to release it after I get an MVP done of project #2 (the reader).
But thatās where Iāve been struggling. The idea seems simple enough - another Node / express app (this one with a Vite-powered front-end) that reads a public twtxt file, parses the āfollowā list, grabs (and parses) those twtxt files, and then creates a river of twts out of the result. The pieces work fine in seclusion (and with dummy data), but I keep running into weird issues when reading real-live twtxt files, so some twts come through, while others get lost in the ether. Iāll figure it out eventually, but for now, Iāve been spending far more time than I anticipated just trying to get it to work end-to-end.
On top of it, the 2 projects wound up turning into 4 (so far), as Iāve been spinning out little libraries to use across both apps (like https://jsr.io/@itsericwoodward/fluent-dom-esm, and a forthcoming twtxt helper library).
In the end, Iām hoping to have project 1 (the editor) into beta by the end of October, and project 2 (the reader) into beta sometime after that, but weāll see.
I hope this has satisfied your curiosity, but if youād like to know more, please reach out!
@aelaraji@aelaraji.com welcome back dude! Long time no see!
@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.
@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. :-)
@prologic@twtxt.net ah, I was wondering! Hoping you are having a good time, mate! Christening the new RV? :-)
For what I can gather, kind of a waste of time, not a good solution. I might be missing bits, or may havenāt grasp the entire āstoryā.
@zvava@twtxt.net For the time being, just show both.
@kat@yarn.girlonthemoon.xyz nope, not normal. Something birdy (because why to use fishy all the time?!) is going on.
@zvava@twtxt.net it is amazing how much you have accomplished in such a short time. Take time to sleep, though! :-)
we are now parsing and recursively fetching remote feeds somewhat successfully, gotta work on the media proxy and markdown way more, so so many fucky edgecasesā¦.my friendās feed with like four posts parsed correctly so i tried this accountās feed and well now im not going to bed on time
edit: remaking demo video
we are now parsing and recursively fetching remote feeds somewhat successfully, gotta work on the media proxy and markdown way more, so so many fucky edgecasesā¦.my friendās feed with like four posts parsed correctly so i tried this accountās feed and well now im not going to bed on time
It was nice to start a walk in the woods with sunshine. The last times it was all soupy. It was quite windy, autumn is certainly here. Soon, the leaves will begin to turn. https://lyse.isobeef.org/waldspaziergang-2025-09-11/

Oops, maybe I should have posted a reminder. š„“
@dce@hashnix.club By the time you posted your twt, the red phase was already over. š Stellarium has a pretty good simulation of the whole thing.
Three weather services with three different forecasts. We got a little bit rained on, so at least some of them were not completely wrong. The timing was off by an hour, though. And nobody expected the Spanish inqui^W^Wthunder either. It was a nice walk.
Oh cool, as I type this, lighning and thunder very close by now. At most a kilometer away. Glad Iām home and not in the woods anymore. And heavy rain kicks in, too.
@lyse@lyse.isobeef.org (Haha, every time I read the word āGophersā, I have to stop and remind myself that this is about Golang. š¤Ŗ)
@lyse@lyse.isobeef.org I usually only have my GPS tracker with me. That trip yesterday was probably a one-time thing. š It was fun, but Iād rather not carry so much stuff around. š„“
@dce@hashnix.club Glad you liked it. š
@movq@www.uninformativ.de Oh, nice read!
If Iām in the woods, Iād like to not waste my time with computers and focus on the beauty of nature. ;-) So, Iām not gonna participate in that event. But Iād read your articles on that subject anytime. :-)
Looks like itās this time of the year again where we get beautiful sunsets more often: https://lyse.isobeef.org/abendhimmel-2025-09-01/
@prologic@twtxt.net havenāt had too much time to really try it out yet ^^ā iām um too busy staring at code i wrote while sleep deprived and wondering why i did the things i did, while sleep deprived \@.@
Ni Hao; bÄ«ng qĆlĆn!
Iām just dropping in, to emphasize my love for ice cream and the Chinese crawler bots, allocating their time and resources, towards scraping my humble website.

To show my gratitude, Iāve even added a random little dog generator to https://thecanine.ueuo.com/sparkle.html so that everyone can pick up their own custom dogFT, on their journey through my site.
Now thatās interesting. Some of these bots start crawling at URLs like this:
That is obviously completely wrong. But I can explain it. Some years ago, I screwed up my nginx rewrite rules, and thatās how these broken URLs came to be.
It all redirects to /git now, which is why that endpoint sees so much traffic lately.
But what does that mean? Why do they start there? I can only speculate that this company bought an old database of web links and they use that to start crawling. And it was probably a cheap one, because these redirects have been fixed for quite a long time now.
@prologic@twtxt.net Iām doing that now as well, but I donāt think this is a good solution. This is going to hurt āself-hostingā in the long run: I cannot afford true self-hosting where I actually do host everything here at home ā instead, I must use a cloud provider / VPS for that. It is only a matter of time until my provider starts doing AI shit as well (or rather, the customers do it) and then what? I get blocked, e.g. I canāt send email to (some) people anymore. This is already bad and itās going to get worse.
@dce@hashnix.club Yeah, Iāve read about that approach. Sounds clever. Truth is, Iām too tired. š¢ I donāt want to spend too much of my time fighting assholes.
Iāve now started blocking entire cloud hosters. Sorry, not sorry.
@prologic@twtxt.net Yeah, Iāve blocked some large subnets now (most likely overblocking a lot of stuff) and it has died down.
Iām not looking forward to doing this on a regular basis. This is supposed to be a fun hobby ā and it was, for many years. Maybe that time is just over.
We use all the Microsoft programs at work - Teams and Outlook especially.
After all kinds of technical problems with Teams, that sometimes go unresolved for over a year, Microsoft shifted their priorities away from fixing things and towards adding an annoying AI Copilot button, that just takes up space and all it does, is loads the website in Teams, so I disabled it. Soon they just add it back, but in a different row of icons, therefore itās now a different button, you have to disable (I think they added yet another one, to the Teams, on my work phone and I had to disabled that too). Not too long after, the desktop one just enabled itself, because of āan errorā and I can disable it, but doing so activates a popup, that begs you to turn it back on, every once in a while. You canāt disable the popup and can only click āYesā or āNot nowā on it. I still keep it disabled, out of principle, but yesterday I noticed yet another Copilot button, this time in the top right corner of my Outlook and this one cannot be disabled, on the business version of Outlook and even on the personal one, itās only possible to do it through hidden privacy settings, by prohibiting the program from connecting to Microsoft servers, for extra āfeaturesā.
Thereās people complaining about it online, so itās clear nobody really wants it, but at this point Microsofts position is that you will have at least one useless AI button on your screen, at any given time, and you will be happy. And yes, their AI sucks and if I absolutely have to use AI for something, thereās already 2 better options, we have access to, at work.