# 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 195712
# self = https://watcher.sour.is?offset=195712
# prev = https://watcher.sour.is?offset=195612
I got the magpie again this morning: https://lyse.isobeef.org/elster-2025-10-05/ 02 is at takeoff.
Oh great, I got two order confirmation e-mails. No, I didn't click twice, same order number, two different Message-IDs.
🧮 USERS:1 FEEDS:2 TWTS:1484 ARCHIVED:90274 CACHE:2755 FOLLOWERS:22 FOLLOWING:14
hah we have the same nickname
Oh. Probably because I'm on the portal.mozz.us
Huh I got the same nick as someone else
@alexonit Thanks mate! Ah cool, now I'm curious, what did you make? :-)

You used the rubber hammer to fold the metal, not to set the rivets, right? :-? I glued cork on my wooden mallet some time ago. This worked quite good for bending. But rubber might be even better as it is a tad softer. I will try this next time, I think I have one deep down in a drawer somewhere.
@zvava No HEAD requests, but regular GETs with If-Modified-Since request headers if possible: https://git.mills.io/yarnsocial/yarn/src/branch/main/internal/fetcher.go#L270
@bender @alexonit funnily enough i came up with the idea for a banner field when i started working on bbycll too (though i still need to implement avatar uploads themselves first)
@prologic i'm guessing then a HEAD request is sent every 5m, and then the feed is fetched if the headers are different?

also what would be the cases where a feed would be fetched more than every five minutes? :o
Flamy skies are always great to look at: https://lyse.isobeef.org/abendhimmel-2025-10-04/
I experimented with a 2.4x7mm aluminium rivet I had on hand. As expected, it was quite a bit long. Using my pliers wrench, I was able to crush it down by quite some bit. I should have taken a photo right after the hand riveter for comparison. Now, it's much smoother and the chance of cutting my hand open is reduced by quite a bit. But breaking the burr with a few file strokes is still necessary. I should get 2.4x4mm rivets and try with them. I reckon they would be more suited for my 0.5mm sheet metal.

With the pliers wrench again, I was able to also crush down the chopped off 3mm copper nail and form a second head. That was surprisingly easy. Now, I need to figure out how to efficiently make a head on the remaining copper nail shaft, so that I can use this again.

Both are rock solid, there's absolutely no movement at all between the two sheet metal cutoffs.

https://lyse.isobeef.org/tmp/nietenexperiment/
@movq Too bad. :-/
@movq Yep, there's python3-tk and a bunch more packages with extensions.
It's raining and I'm sitting on the covered terrace drinking an elderflower tea.
@movq Nice! Are there still chicken on this field?
@movq I never programmed with Tkinter myself and it's been ages that I ran a program which used it. I always thought that it looks awful. But maybe there are nicer themes these days. I just wanted to give the demo python3 -m tkinter a try, but this module doesn't exist. I was always under the wrong impression that Tkinter is bundled with Python.
@movq I was never a fan of GTK, because coming from KDE, it didn't offer remotely as much of customizability. What are you switching to, Xfce?
@zvava 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. ;-)
@itsericwoodward @bender this is vaguely concerning...does yarn refresh feeds every minute or two? or is there some special "notify twtxt.net to refresh my feed" that i don't know about
@prologic woohoo! Take that, micro.crap! :-D
I love Hiroi Kikuri from anime Bocchi the Rock
Would anyone like help solving technical problems?
Sábados de manhã em outubro e novembro no #SescAvPaulista: Grupo de estudos em #Python

https://www.sescsp.org.br/programacao/grupo-de-estudos-em-python-primeiros-passos/

#SescSP #SãoPaulo
🧮 USERS:1 FEEDS:2 TWTS:1483 ARCHIVED:90252 CACHE:2744 FOLLOWERS:22 FOLLOWING:14
God bless the people of America, that they may recognize, that Trump is a liar and deceiver. He works for the rich and not for the poor.
@movq exactly! 🤣
That Manton guy is so incredible dull, not even funny: https://www.manton.org/2025/10/03/apparently-there-was-some-drama.html
The World is in a terrible state right now. But I am home, my parents are well, my best friend is out of surgery and is doing OK. I am fine.
They look the same to the naked eye. Of course, I checked your raw feed, and saw only one.
@itsericwoodward hmmm, what was this, an edit, a deletion?

@movq can't you use generic drivers? I did that for an enterprise copier/printer/scanner we used to have at work, and it worked just fine!
Of course, all things optional is fine. Like, it will be ignored (just like banner would) for clients having no knowledge of it.
@zvava agreed. I think display_name will be redundant, and add to the "busy" factor. That is, the opposite of simplicity.
I know good people who work at Microsoft (like Guido van Rossum and Pamela Fox) but I don't trust MS a iota. Making Processing work on VS Code... I don't know if I like it. It leads people to a tool too much under MS control. I guess VS Code is too big to fail now?
I know about VS Codium... also, I'm struggling to move my stuff out of GitHub.
God Bless USA and mr. Trump
@alexonit i dont think display_name is worthwhile, since nick is functionally a display name
🧮 USERS:1 FEEDS:2 TWTS:1482 ARCHIVED:90241 CACHE:2743 FOLLOWERS:22 FOLLOWING:14
Hello everyone!
I love Lynx. The biggest gripe I have with it is that it doesn't display tables correctly. Links2 does, and it has bg downloads without a clunky handoff.
#py5 comes with some cool integrations with other #Python libraries, such as the ability to convert #Pillow images, #shapely and #trimesh objects.

But you can create and register your own conversion functions too!

https://py5coding.org/integrations/custom_integrations.html
Uuuhhh, that's rather interesting, I didn't know about that:

> Aachen has been officially certified as "Bad Aachen", but for alphabetical reasons usually declines to use the prefix
>
> — https://en.wikipedia.org/wiki/List_of_spa_towns_in_Germany#A

That made me chuckle.
Sieht ganz so aus, als hätte die gute @kat ihre Büchse mit in den Kurort Bad Gateway genommen.

Sorry, this pun only works in German, where "Bad" means spa and is used as prefix for spa towns.
@movq You should send 'em this sample. ;-)
@movq It completely escapes me, too. I will never understand it, but people are just wired very differently.

Relevant film: https://www.youtube.com/watch?v=YYNbSuMLZZg
@movq Yeah, the lighting needs to be right in order to make them really pop like this. I got lucky today. :-)
My photos are categorized as crafts porn for my workmates: https://lyse.isobeef.org/tmp/porn.png
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. :-)
Autumn and magpie around the corner: https://lyse.isobeef.org/elster-2025-10-02/
Okay, they are also offering 2.8x25mm copper nails. Which I actually do have a single one here. :-)

My hardware collection also includes a few brass-like looking screws that I could repurpose into rivets. But I reckon I have to upgrade my burner first. I'm not a metal worker by any means, so I could be totally wrong, but I imagine that some heat is necessary to loosen the work-hardening effect when beating on them. I will do some experiments on Saturday and report back.
@movq Not sure, if this observation is correct. I know so many techies who also use every latest shit and automate their homes which is scary as hell to me.
@alexonit I just checked my local hardware store next town and 4mm brass rod is the closest I find.
@lyse I think you should be able to find some even in general stores in the hardware section.
@movq So damn true.

I have a friend that might lock himself out of his home if there's a power outage while I keep removing apps and devices from my daily lives instead.

I recently switched from all the todo apps I used to sticky notes on my monitors and a pocket notebook for sketching and quick notes.
@thecanine So cool!

It reminds me of the monsters in Heart of Darkness on PSX (just replayed the other day).

https://www.youtube.com/shorts/ZnGOpT5NKxc
@movq No doubt, some things are just so much better the low-tech way. Waste paper, like an opened envelope, suits a shopping list perfectly fine. You've got a nice handwriting, I like it.
@movq \o/
@thecanine Oh no, the poor crocodile is struck by lightning!
I will soon stop wrinting in my twtxt.txt, so you should unsubscribe (to the Atom feed too). Yes, I have something in mind to replace it...
@pBaesse@pBaesse salve! Faria sentido acrescentar o GeoSampa e o OSM nos #dadoslivres? Tem um critério de inclusão pra avaliar? E bases como o Querido Diário?
🧮 USERS:1 FEEDS:2 TWTS:1481 ARCHIVED:90211 CACHE:2731 FOLLOWERS:22 FOLLOWING:14
Hello again everyone! A little update on my twtxt client.

I think it's finally shaping a bit better now, but... ☝️

As I'm trying to put all the parts together, I decided to build multiple parallel UIs, to ensure I don't accidentally create a structure that is more rigid than planned.

I already decided on a UI that I would want to use for myself, it would be inspired by moshidon, misskey and some other "social feeds" mock-ups I found on dribbble.

I also plan on building a raw HTML version (for anyone wanting to do a full DIY client).

I would love to get any suggestions of what you would like to see (and possibly use) as a client, by sharing a link, app/website name or even a sketch made by you on paper.

I think I'll pick a third and maybe a fourth design to build together with the two already mentioned.

For reference, the screens I think of providing are (some might be optional or conditionally/manually hidable):

- Global / personal timeline screen
- Profile screen (with timeline)
- Thread screen
- Notifications screen or popup (both valid)
- DM list & chat screens (still planning, might come later)
- Settings screen (it'll probably be a hard coded form, but better mention it)
- Publish / edit post screen or popup (still analysing some use cases, as some "engines" might not have direct publishing support)

I also plan on adding two optional metadata fields:

- display_name: To show a human readable alternative for a nick, it fallback to nick if not defined
- banner: Using the same format as avatar but the image expected is wider, inspired by other socials around

I also plan on supporting any metadata provided, including a dynamically parsable regex rule format for those extra fields, this should allow anyone to build new clients that don't limit themselves to just the social aspect of twtxt, hoping to see unique ways of using twtxt! 🤞
@bender The first format use the subject extension while the other is a new format that is inspired by mentions format, the first one should be compatible but I'm not sure, if it's used verbatim by the client it would work, but if we consider the new proposal for it to have an optional part it wont work on clients without changes.
@movq While using the a frament is pretty nice, I think we can have a twtxt only format if the formatting seems to be a problem.
@lyse I think will be bad if handled incorrectly.

The client must reference both properly or it would miss posts, including both this way is a bit pointless if you can't use the hash or url separately.

Being a highly likely a breaking change anyway I think @zvava proposal looks much better.
Try gopher://1436.ninja/1/Port70News . It works with http and https, if you have no btowser.
@lyse i would like to ditch hash addressing but as was pointed out it would be a pain in the ass to get clients currently working off of hashv1 to suddenly switch to location-based addressing instead of just hashv2 with the option to eventually phase it out — unless we can rally together all active client developers to decide on a location-based addressing specification (i still think my original suggestion of #<https://example.com/tw.txt#yyyy-mm-ddThh:mm:ssZ> is foolproof)
@bender technically it's still the same, but the brackets are different, and the # symbol is on the outside of the brackets, but it makes more sense with @<...> being mentions
@movq huh, firefox actually does seem to tolerate the dashes in the fragment. also, i did propose simply using an anchor link first, but prologic was not a fan of this :p
There was a monster in the sky: https://lyse.isobeef.org/abendhimmel-2025-10-01/

Lizard or shark or something
@thecanine content warning please! I had to go home and change, if you catch my drift. LOL. Well done!
@movq I wish I could truly say that. :-D
@aelaraji, I mean to follow up here on the brief exchange we had on irc.mills.io, but I forgot. Never too late, so here it goes:


18:16 <aelaraji> quark 🙏 much appreciated but it won't be necessary, since there isn't much to miss out on in most of  where I hang out, so I could just disconnect and spare everyone else the noise 
18:17 *** aelaraji (aelaraji@776014f5a3edd32f1ed19658b7b85c8c655945b0feacaedd92fe60e61a3c0ae2) has quit (/ME goes "yeeeeet..!")
18:18 <quark> No noise for me. 
18:18 <quark> It’s all good. 
18:18 <quark> What would IRC be without on/offs?
18:19 <quark> Preeeety boring!
18:19 <quark> Ah, he was gone. 
18:19 <quark> Well, I will twtxt this to him.  LOL. 
Thanks, @alexonit! 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 Hahaha, that made me laugh real good. :-D I find it always surprising what collects in a short amount of time.
Lynx is the GOAT, if only it linkified text though
@zvava Mixing both addressing schemes combines the worst of both worlds in my opinion. Please don't do that.
@zvava 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.
@zvava the second format (the one you think should be changed to), is it backwards compatible to what's currently in place? I believe the first one would be.
I must not buy another mechanical keyboard. I must not buy another mechanical keyboard. I must not… https://www.keychron.com/products/keychron-k8-he-wireless-magnetic-switch-custom-keyboard
@alexonit prologic has me sold on the idea of hashv2 being served alongside a text fragment, eg. (#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 That was my greatest concern with how it is currently handled, I'm afraid to break threads even by fixing a typo.

Handling it via the pod might work but I think it's not the best approach, external feeds and clients don't usually use a pod api but their own implementation, so any workaround won't work there.

That's why my proposals addressed those issues:

- the idea of using a "key" instead of the url (with the url as a fallback), the key could even be a public key so it can be used verifieable in crypto functions
- using the timestamp to prevent content changes to break threads (plus being simpler to implement)
- using an explicit thread reference with an alternative subject format (like [#THREAD_ID] Hello world and replies with (#REPLY_ID) Ahoy) so the content can change without affecting the thread reference, and anyone can use their own schemes freely
@rnlog bbycll, whenever it is ready, in the meantime you're already on a pretty good one :3
@zvava I just have plastic plants at home too.
I wrote a bit about #mastodon #starterpacks. Starterpacks got popular when Bluesky introduced them, and there is a similar solution for Mastodon too:https://sociab.li/blog/2025/mastodon-starterpacks-follow-and-create-them/
@zvava Don't say that.

The eye candy is always good to have.
@zvava I'm not sure, I could just set up a cors-anywhere via docker in a minute and it would work the same.

Still, I could write one with just a dozen lines of Go or Node.js, I might consider writing one after the client is working decently.
Amazing game, Love the Peer-to-peer with other players and be able to communicate with them.
So smart, would be great to sneak in as an easter egg in a app.
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)
🧮 USERS:1 FEEDS:2 TWTS:1480 ARCHIVED:90198 CACHE:2728 FOLLOWERS:22 FOLLOWING:14
frontend developer who keeps getting sidetracked doing frontend things instead of fixing the backend :p
what losers
liverpool have lost 2 games in a row
Seems doubtful...
@alexonit terrariums are so cool but i couldn't even keep grass from the back yard in a jar alive
im just a poor frontend developer qwq
@alexonit yeah, i didn't even consider this as an option lol, though if it works it works! will you be writing a compatible proxy for self-hosting separate from the custom backend you were thinking of? :o
I always wanted to build a terrarium, but after cleaning my keyboard today, I think I already have one...
@lyse I can suggest you a trick to do a "cold" welding.

Using a copper wire or a similarly malleable material, pass it through a drilled hole, hammer it on one end until flat, then do the same on the other side.

It does the same job of a rivet but it's flatter and look nicer on both sides, it's of course weaker but still strong enough for small objects.

It's sometimes used to reduce risk of deformities due to heat in hand-crafted jewelry and to reduce costs of small tools.