🧮 USERS:1 FEEDS:2 TWTS:1316 ARCHIVED:86446 CACHE:2799 FOLLOWERS:20 FOLLOWING:14
@andros@twtxt.andros.dev Haha 🤣 We’ve explored this idea in the past and we decided that it’s actually a good idea to have an “append-only” feed for various reasons. We’ve also explored the idea of using Range
requests, but opted instead to just archive/rotate our feeds periodically 😅 There really isn’t much point in having a feed in reverse chronological order, except (maybe?) so a human read view the new twts at the top of the file?! 🤣
Proposal: Change the order of twts in the feeds
https://git.mills.io/yarnsocial/twtxt.dev/issues/26
I drop the bomb and leave! 💣 🏃➡️
#twtxt
@bender@twtxt.net I use it. It’s not the feature I use the most in the fediverse, but I communicate this way with several friends. For example, it’s the main way I talk to the original creator of the twtxt-el repository, the way people greet me for the first time or the way they notify me of some bugs in the software I maintain. I can even tell you that it’s the main way I talk to some maintainers of the Emacs community. If there are any of you reading my words, speak up!
Why not have the same? There are things I want to say to @prologic@twtxt.net in private, why should I have to send him an email or private IRC? Or an public twt.
Of course, here’s a topic we’ve already talked about: what is twtxt for you? For me it will always be a social network, in microblogging format, but an asynchronous way of communicating. And having a tool to control visibility is basic 😄
I look forward to hearing from you @eapl.me@eapl.me !
See:
<textarea id="text" name="text" placeholder="Hi! 👋 Don't forget to post a Twt today!" rows="4" maxlength="576" required="true" aria-required="true"></textarea>
So, 576?
🧮 USERS:1 FEEDS:2 TWTS:1315 ARCHIVED:86386 CACHE:2781 FOLLOWERS:20 FOLLOWING:14
Hmmm there’s a bug somewhere in the way I’m ingesting archived feeds 🤔
sqlite> select * from twts where content like 'The web is such garbage these days%';
hash = 37sjhla
feed_url = https://twtxt.net/user/prologic/twtxt.txt/1
content = The web is such garbage these days 😔 Or is it the garbage search engines? 🤔
created = 2024-11-14T01:53:46Z
created_dt = 2024-11-14 01:53:46
subject = #37sjhla
mentions = []
tags = []
links = []
sqlite>
Btw @andros@twtxt.andros.dev ; The automated feed you put together for Hacker News… Does it at any point rewrite parts of the feed as it goes along? 🤔 I’ve had to unfollow it because I’ve found in practise it makes a twt, then seems to modify that same twt (observed by content manually) at least twice. This ends up becoming effectively an “Edit” and essentially duplicate (looking) posts 😢
🧮 USERS:1 FEEDS:2 TWTS:1314 ARCHIVED:86338 CACHE:2754 FOLLOWERS:20 FOLLOWING:14
AS136907 HWCLOUDS-AS-AP HUAWEI CLOUDS
@prologic@twtxt.net This shi_ is as fun as it is frustrating! 😆 the bot is poking at me from a different ASN now, Alibaba’s.
- Short term solution: I’ve geo-locked my Timeline instance since I’m the only one using it (and I only do so for reading twts when I’m away from terminal).
- Long term: I took a look at your Caddy WAF but couldn’t figure things out on my own; until then, I’ll be poking at Caddy-Defender, maybe throw in a Crowdsec for lols… #FUN
Some A hole has been trying to pull every single Twtxt feed that existed/still exists since forever. How do I know? Welp’ They’ve been querying my Timeline™ instance for all of it, every single twtxt file and twt Hash they can find. 😆🤦 It must have been going on for days and I have just noticed… + it’s all coming from the same ASN AS136907 HWCLOUDS-AS-AP HUAWEI CLOUDS
Thank you Huawei for the DDos you sons of Glitches!!!
🧮 USERS:1 FEEDS:2 TWTS:1311 ARCHIVED:86261 CACHE:2761 FOLLOWERS:18 FOLLOWING:14
@kat@yarn.girlonthemoon.xyz It’s more like a cache, it stores things like “timestamp of the most recent twt we’ve seen per feed” or “last modification date” (to be used with HTTP’s if-modified-since
header). You can nuke these files at any time, it might just result in more traffic (e.g., always getting a full response instead of just “HTTP 304 nope, didn’t change”).
@quark@ferengi.one Yes, I often write a couple of twts, don’t publish them, then sometimes notice a mistake and want to edit it. You’re right, as soon as stuff is published, threads are going to break/fork by edits.
🧮 USERS:1 FEEDS:2 TWTS:1310 ARCHIVED:86237 CACHE:2746 FOLLOWERS:18 FOLLOWING:14
@quark@ferengi.one No editing old Twts that are the root of a thread with replies in the ecosystem. Just results in a fork. Unless the client has an implementation that does not store Twts keyed by Hash.
jenny really isn’t well equipped to handle edits of my own twts.
For example, in 2021, this change got introduced:
https://www.uninformativ.de/git/jenny/commit/6b5b25a542c2dd46c002ec5a422137275febc5a1.html
This means that jenny will always ignore my own edits unless I also manually edit its internal “json database”. Annoying.
That change was requested by a user who had the habit of deleting twts or moving them to another mailbox or something. I think that person is long gone and I might revert that change. 🤔
Ha! I stand corrected, didn’t scrolled long enough. Indeed, it should be added (you will need an account on Mills’ Gitea), noted.
si4er3q
. See https://twtxt.dev/exts/twt-hash.html, a timezone offset of +00:00
or -00:00
must be replaced by Z
.
@eaplme@eapl.me you wrote:
“That PHP snippet could be merged into https://twtxt.dev/exts/twt-hash.html”
Why, though? AFAIK @andros@twtxt.andros.dev’s client is on Emacs, @lyse@lyse.isobeef.org’s is on Python (and Golang, for tt2
), @movq@www.uninformativ.de’s is on Python, and @prologic@twtxt.net’s is on Golang. All the client creator needs to know is in the documentation already, coding language agnostic.
si4er3q
. See https://twtxt.dev/exts/twt-hash.html, a timezone offset of +00:00
or -00:00
must be replaced by Z
.
just a note that we are doing that on PHP: https://github.com/eapl-gemugami/twtxt-php/blob/master/docs/03-hash-extension.md#php-72
That PHP snippet could be merged into https://twtxt.dev/exts/twt-hash.html
@david@collantes.us @andros@twtxt.andros.dev The correct hash would be si4er3q
. See https://twtxt.dev/exts/twt-hash.html, a timezone offset of +00:00
or -00:00
must be replaced by Z
.
(That said, there’s a bug in jenny as well. It only replaces +00:00
, not -00:00
. 🤡)
dm-only.txt
feeds. 😂
@bender@twtxt.net For example:
If you can see this twt in any feed…
xxxx-xx-xxTxx:xx:xxZ !<bender https://twtxt.net/user/bender/twtxt.txt> U2FsdGVkX1+QmwBNmk9Yu9jvazVRFPS2TGJRGle/BDDzFult6zCtxNhJrV0g+sx0EIKbjL2a9QpCT5C0Z2qWvw==
It is for you. Any other possibility must be ignore (hidden in your timeline).
If your client doesn’t have the posibility to decrypt the twt, hide all direct message. It is all :)
@andros@twtxt.andros.dev Curious where this root twt is?! 🤣 Apparently my pod doesn’t have it and I can’t find it anywhere. It’s suppose to be #l4doaxa
dm-only.txt
feeds. 😂
@bender@twtxt.net @aelaraji@aelaraji.com The client should ignore twts if it’s not compatible or not addressed to me. it’s a simple regex to add! It’s similar to Twt Hash Extension, should they be in another file? They are child messages, not flat twt. Not of course!
🧮 USERS:1 FEEDS:2 TWTS:1309 ARCHIVED:86213 CACHE:2761 FOLLOWERS:18 FOLLOWING:14
@xuu@txt.sour.is Seems to be fine here?
$ bat https://twtxt.net/twt/yfv5kfq | jq '.text'
"!<dm-echo https://dm-echo.andros.dev/twtxt.txt> U2FsdGVkX1+QmwBNmk9Yu9jvazVRFPS2TGJRGle/BDDzFult6zCtxNhJrV0g+sx0EIKbjL2a9QpCT5C0Z2qWvw=="
🧮 USERS:1 FEEDS:2 TWTS:1308 ARCHIVED:86197 CACHE:2763 FOLLOWERS:18 FOLLOWING:14
@bender@twtxt.net Sadly my earlier Twt back in ~2020 is now gone from at least this pod’s cache 🤣 – It might still exist in other pods though? 🤔 It does! https://txt.sour.is/twt/o6dsrga
Happy 1st Twtxt~iversary to me … I guess. It feels like it was 5 years since my first twt 😅
🧮 USERS:1 FEEDS:2 TWTS:1307 ARCHIVED:86184 CACHE:2751 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1306 ARCHIVED:86136 CACHE:2749 FOLLOWERS:18 FOLLOWING:14
I’m also thinking that some kind of tag might be needed to automatically hide twts from unknown extensions. For example our client doesn’t support DMs and always shows the !<nick url><encrypted_message>
syntax which is meaningless.
@bender@twtxt.net Yes! I deleted those repeated twts because it was poor execution by my client. They are currently not present in my feed.
Maybe it would be interesting to check if any twt has disappeared?
Oops, I think this pod (twtxt.net
) just sync ~1k missing root twts with god only knows which peers 🤦♂️ I forgot a couple of important key things:
- Only coverage with a subset of peers
- Only converge with trusted peers
Fuck me 🤣 Ooops. Sorry!
@andros@twtxt.andros.dev can you see the screenshot on my first twtxt? Here: https://twtxt.net/twt/mrccg4q
Good quote: «Corrects in private and congratulates in public».
Or…: «Corrects in direct message and congratulates in twt» 😜
🧮 USERS:1 FEEDS:2 TWTS:1305 ARCHIVED:86099 CACHE:2730 FOLLOWERS:18 FOLLOWING:14
I was trying to optimize the SQL query used for the Compact FrontPage (anonymous view for Discovery when the Admin/Operator chooses “one twt per feed”).
@thecanine@twtxt.net Did you see my revelation earlier today? 🤔
🧮 USERS:1 FEEDS:2 TWTS:1304 ARCHIVED:86085 CACHE:2724 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1303 ARCHIVED:86066 CACHE:2715 FOLLOWERS:18 FOLLOWING:14
Hmm, Yarnd is duplicating the rendering of /twt/5jlfuua
. That’s quite odd.
🧮 USERS:1 FEEDS:2 TWTS:1302 ARCHIVED:86046 CACHE:2703 FOLLOWERS:18 FOLLOWING:14
Anyway. this was a good use for search btw. I couldn’t find my Twt, so I just quickly searched for it, snap, bingo I found it in a snap! 🫰
@prologic@twtxt.net I’m not sure if that’s an intended behaviour but twtxt.net
’s home page doesn’t load more than 13 twts, no more pagination/infinite scrolling…
Page 1/1 of 13 Twts
🧮 USERS:1 FEEDS:2 TWTS:1301 ARCHIVED:86025 CACHE:2684 FOLLOWERS:18 FOLLOWING:14
Doesn’t look like it Hmmm
sqlite> select * from twts where content LIKE '%Linux installation%';
hash = znf6csa
feed_url = https://www.uninformativ.de/twtxt.txt
content = I wonder if my current Linux installation will actually make it to 20 years:
$ head -n 1 /var/log/pacman.log
[2011-07-07 11:19] installed filesystem (2011.04-1)
It’s not toooo far into the future.
It would be crazy … 20 years without reinstalling once … phew. 🥴
created = 2025-04-07T19:59:51Z
subject = (#znf6csa)
mentions = []
tags = []
links = []
@movq@www.uninformativ.de Apparently you wrote it :D The hash doesn’t lie? 🤣 https://twtxt.net/twt/znf6csa
@prologic@twtxt.net What happened here – did I edit my twt or is this hash wrong? 🥴
guys help how do i unmute a twt i accidentally hit the wrong button
🧮 USERS:1 FEEDS:2 TWTS:1300 ARCHIVED:85992 CACHE:2653 FOLLOWERS:18 FOLLOWING:14
Is it just me or is there a display bug for “Yarn”(s) that are duplicating the root twt? 🤔
🧮 USERS:1 FEEDS:2 TWTS:1299 ARCHIVED:85959 CACHE:2633 FOLLOWERS:18 FOLLOWING:14
I need to get Peering working again on this branch! That will drag in many Twts Twts I now no longer have 😭
🧮 USERS:1 FEEDS:2 TWTS:1298 ARCHIVED:85929 CACHE:2704 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1297 ARCHIVED:85886 CACHE:2686 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1296 ARCHIVED:85876 CACHE:2701 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1295 ARCHIVED:85862 CACHE:2698 FOLLOWERS:18 FOLLOWING:14
i can see your twts here: https://watcher.sour.is/?uri=https://eapl.me/tw.txt
@david@collantes.us.. i see this one but it says its dead. https://watcher.sour.is/?uri=https://ferengi.one/twtxt.txt
🧮 USERS:1 FEEDS:2 TWTS:1294 ARCHIVED:85849 CACHE:2703 FOLLOWERS:18 FOLLOWING:14
@andros@twtxt.andros.dev sha256 hash of twt in json. Look at converter script
🧮 USERS:1 FEEDS:2 TWTS:1293 ARCHIVED:85827 CACHE:2704 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1292 ARCHIVED:85795 CACHE:2718 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1291 ARCHIVED:85790 CACHE:2724 FOLLOWERS:18 FOLLOWING:14
thanks for sharing @xuu@txt.sour.is!
Checking for example https://watcher.sour.is/api/plain/twt or https://registry.twtxt.org/api/plain/tweets, I don’t know whether this syntax is being used by clients or by people. Is it integrated on Yarn in any way? Genuinely asking to know more about it.
If I might throw a quick thought to those working on the registries, it would be nice to have an endpoint with a valid twtxt output (perhaps cached or dumped to a static file) which a client could point to, helping to discover it’s content in a way which is compatible with the twtxt spec.
Taking the first twt I found in https://watcher.sour.is/api/plain/twt as an example:
reddit_world_news https://feeds.twtxt.net/Reddit_World_News/twtxt.txt 2025-03-28T00:29:25Z **China bans US logs. 3 billion dollar[...])
it would be something like
TIME <@NICK URL> TWT
2025-03-28T00:29:25Z <@reddit_world_news https://feeds.twtxt.net/Reddit_World_News/twtxt.txt> **China bans US logs. 3 billion dollar[...])
That way you could watch the latest twts with your client, something similar to what we find on Mastodon: https://mastodon.online/public/local
Some support from the clients to separate these ‘discovery’ content, from your following timeline might be required. 🤔
@eapl.me@eapl.me I am currently working on Implementing a registry that is also a crawler. It finds any feeds that are mentioned or in the follows header.
https://watcher.sour.is/api/plain/twt
https://watcher.sour.is/api/plain/users
I think @prologic@twtxt.net is also working on one.
somehow I forgot that existed.
Perhaps it was its mention of being a demo implementation here:
https://twtxt.readthedocs.io/en/latest/user/registry.html#registry
So I though it wasn’t really active.
Anyway, I think that’s a good idea.
Is there something similar available on Yarn? Sorry for for asking if that was mentioned recently.
I think that the clients may help you to submit your URL to these directories, and also to get a view of the twts in them.
🧮 USERS:1 FEEDS:2 TWTS:1290 ARCHIVED:85776 CACHE:2724 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1289 ARCHIVED:85766 CACHE:2716 FOLLOWERS:18 FOLLOWING:14
@eapl.me@eapl.me this “directory” is actually named registry. You can see users at https://registry.twtxt.org/api/plain/users and his twts at https://registry.twtxt.org/api/plain/tweets
thanks andros!
instead of adding the new twt at the end of the feed, do it at the beginning
The PHP client did that originally, although I didn’t see a real benefit if you use… a client.
It could help if you read the .txt file through a browser or something. Also, not many clients are prepared to cut the request, and you can’t rely on the file being organized that way, so finally we dropped that feature.
@bender@twtxt.net I taught the whole ecosystem 😁
@prologic@twtxt.net @eapl.me@eapl.me The question I was asked the most was: How do I discover people?
Someone came up with a fantastic idea, instead of adding the new twt at the end of the feed, do it at the beginning. So you can paginate by cutting the request every few lines.
🧮 USERS:1 FEEDS:2 TWTS:1288 ARCHIVED:85735 CACHE:2689 FOLLOWERS:18 FOLLOWING:14
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.
neat! my watcher is currently sitting at about 75 MB following over 1500 feeds. only about 200 are currently somewhat active.
-rw-r--r--. 1 xuu xuu 69M Mar 25 20:46 twt.db
-rw-r--r--. 1 xuu xuu 32K Mar 25 21:34 twt.db-shm
-rw-r--r--. 1 xuu xuu 5.6M Mar 25 21:34 twt.db-wal
sqlite> select state, count(*) n from feeds group by 1;
hot|7
warm|8
cold|183
frozen|743
permanantly-dead|857
🧮 USERS:1 FEEDS:2 TWTS:1287 ARCHIVED:85662 CACHE:2700 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1286 ARCHIVED:85645 CACHE:2703 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1285 ARCHIVED:85637 CACHE:2704 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1284 ARCHIVED:85614 CACHE:2703 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1283 ARCHIVED:85598 CACHE:2694 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1282 ARCHIVED:85584 CACHE:2693 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1281 ARCHIVED:85547 CACHE:2670 FOLLOWERS:18 FOLLOWING:14
I have applied your comments, and I tried to add you as an editor but couldn’t find your email address. Please request editing access if you wish.
Also, could you elaborate on how you envision migrating with a script? You mean that the client of the file owner could massively update URLs in old twts ?
🧮 USERS:1 FEEDS:2 TWTS:1280 ARCHIVED:85265 CACHE:2782 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1279 ARCHIVED:85261 CACHE:2781 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1278 ARCHIVED:85213 CACHE:2788 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1277 ARCHIVED:85199 CACHE:2783 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1276 ARCHIVED:85172 CACHE:2772 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1275 ARCHIVED:85157 CACHE:2789 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1274 ARCHIVED:85144 CACHE:2787 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1273 ARCHIVED:85134 CACHE:2796 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1272 ARCHIVED:85120 CACHE:2798 FOLLOWERS:18 FOLLOWING:14
@prologic@twtxt.net We can’t agree on this idea because that makes things even more complicated than it already is today. The beauty of twtxt is, you put one file on your server, done. One. Not five million. Granted, there might be archive feeds, so it might be already a bit more, but still faaaaaaar less than one file per message.
Also, you would need to host not your own hash files, but everybody else’s as well you follow. Otherwise, what is that supposed to achieve? If people are already following my feed, they know what hashes I have, so this is to no use of them (unless they want to look up a message from an archive feed and don’t process them). But the far more common scenario is that an unknown hash originates from a feed that they have not subscribed to.
Additionally, yarnd’s URL schema would then also break, because https://twtxt.net/twt/<hash>
now becomes https://twtxt.net/user/prologic/<hash>
, https://twtxt.net/user/bender/<hash>
and so on. To me, that looks like you would only get hashes if they belonged to this particular user. Of course, you could define rules that if there is a /user/
part in the path, then use a different URL, but this complicates things even more.
Sorry, I don’t like that idea.
One of the biggest gripes of the community with the way the threading model currently works with Twtxt v1.2 (https://twtxt.dev) is this notion of:
What is this hash?
What does it refer to?
Idea: Why can’t we all agree to implement a simple URI scheme where we host our Twtxt feeds?
That is, if you host your feed at https://example.com/twtxt.txt
– Why can’t or could you not also host various JSON files (let’s agree on the spec of course) at https://example.com/twt/<hash>
? 🤔
That way we solve this problem in a truly decentralised way, rather than every relying on yarnd
pods alone.
🧮 USERS:1 FEEDS:2 TWTS:1271 ARCHIVED:85113 CACHE:2793 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1270 ARCHIVED:85107 CACHE:2793 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1269 ARCHIVED:85097 CACHE:2793 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1268 ARCHIVED:85090 CACHE:2802 FOLLOWERS:18 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:1267 ARCHIVED:85061 CACHE:2808 FOLLOWERS:18 FOLLOWING:14
it seems to be confused with the subject right next to it.. it works better at the end of the twt string.
Yarn won’t display anything. but the parser does add it to the AST in a way that you can parse it out using twt.Attrs().Get("lang")
https://git.mills.io/yarnsocial/go-lextwt/src/branch/main/ast.go#L1270-L1272
https://git.mills.io/yarnsocial/go-types/src/branch/main/twt.go#L473-L478
lang=en @xuu@txt.sour.is gotcha!
From that PR #17 I think it was reverted? We could discuss about metadata later this month, as it seems that I’m the only person using it.
I’ve added a [lang=en]
to this twt to see current yarn behaviour.