# 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 194937
# self = https://watcher.sour.is?offset=194937
# prev = https://watcher.sour.is?offset=194837
[47°09′34″S, 126°43′19″W] Dosimeter fixed
The new iTerm icon is confusing me; for a second I always wonder what that app is when the Dock comes into view.
What does it do to us if we can no longer trust any information? What if your mail app changes the content of your mail without you knowing?https://maurice-renck.de/en/blog/2025/trust-issues
[47°09′36″S, 126°43′20″W] Dosimeter still failing
@lyse @prologic Can't we find a middle ground and support both?

The thread is defined by two parts:

1. The hash
2. The subject

The client/pod generate the *hash* and index it in it's database/cache, then it simply query the subject of other posts to find the related posts, right?

In my own client current implementation (using hashes), the only calculation is in the hash generation, the rest is a verbatim copy of the subject (minus the # character), if this is the common implemented approach then adding the location based one is somewhat simple.

s
function setPostIndex(post) {
    // Current hash approach
    const hash = createHash(post.url, post.timestamp, post.content);

    // New location approach
    const location = post.url + '#' + post.timestamp;

    // Unchanged (probably)
    const subject = post.subject;

    // Index them all
    addToIndex(hash, post);
    addToIndex(location, post);
    addToIndex(subject, post);
}

// Both should work if the index contains both versions
getThreadBySubject('#abcdef') => [post1, post2, post3]; // Hash
getThreadBySubject('https://example.com#2025-01-01T12:00:00') => [post1, post2, post3]; // Location


As I said before, the mention is already location based @<example https://example.com/twtxt.txt>, so I think we should keep that in consideration.

Of course this will lead to a bit of fragmentation (without merging the two) but I think this can make everyone happy.

Otherwise, the only other solution I can think of is a different approach where the value doesn't matter, allowing to use anything as a reference (hash, location, git commit) for greater flexibility and freedom of implementation (this probably need the use of a fixed "header" for each post, but it can be seen as a separate extension).
[47°09′29″S, 126°43′41″W] Dosimeter malfunction
@aelaraji welcome back dude! Long time no see!
🧮 USERS:1 FEEDS:2 TWTS:1472 ARCHIVED:90032 CACHE:2678 FOLLOWERS:22 FOLLOWING:14
@04866 what?? I don't know how to get myself around edbrowse, I almost hate it
[47°09′16″S, 126°43′54″W] Reading: 1.29 Sv
@movq 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.
@lyse 🍿🍿🍿😅
@movq 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 I know we won't ever convince each other of the other's favorite addressing scheme. :-D But I wanna address (haha) your concerns:

1. 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.

2. 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.

3. 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?

4. 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.

5. 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. :-)
[47°09′25″S, 126°43′48″W] Transfer aborted
@movq Happy equinox!

It looks amazing from the map, you probably can't tell even by looking from space.
Se tens conta LinkedIn e não queres que usem os teus dados e posts para alimentar as suas IAs, dá para desativar aqui: https://www.linkedin.com/mypreferences/m/settings/data-for-ai-improvement
Quem vem pra #PythonBrasil em #SãoPaulo?

Hoje abriram as inscrições para os tutoriais, grátis, vagas limitadas!

(Aproveite e avise aquele seu amigo gringo que ele pode comprar um ingresso de estudante doação para alguém que não poderia participar do evento completo com as palestras! :D)

https://pybr2025.eventbrite.com.br/

#Python
@kat Oh! A new place to spam dad jokes. 🥳
@prologic I can see the issues mentioned, but I think some can be fixed.

1. The current hash relies on a url field too, by specification, it will use the first # url = <URL> in the feed's metadata if present, that too can be different from the fetching source, if that field changes it would break the existing hashes too, a better solution would be to use a non-URL key like # feed_id = <UNIQUE_RANDOM_STRING> with the url as fallback.

2. We can prevent duplications if the reference uses that same url field too or the client "collapse" any reference of all the urls defined in the metadata.

3. I agree that hashing based on content is good, but we still use the URL as part of the hashing, which is just a field in the feed, easily replicable by a bot, also noting that edits can also break the hash, for this issue an alternative solution (E.g. a private key not included in the feed) should be considered.

4. For offline reading the source would be downloaded already, the fetching of non followed feeds would fill the gap in the same way mentions does, maybe I'm missing some context on this one.

5. To prevent collisions there was a discussion on extending the hash (forgot if that was already fixed or not), but without a fallback that would break existing clients too, we should think of a parallel format that maintains current implementations unchanged, we are already backward compatible with the original that don't use threads at all, a mention style format for that could be even more user-friendly for those clients.

We should also keep in mind that the current mention format is already location based (@<example https://example.com/twtxt.txt>) so I'm not that worried about threads working the same way.

Hope to see some other thought about this matter. 🤓
[47°09′52″S, 126°43′00″W] Transponder still failing -- switching to analog communication
@thecanine Thanks!

Looking forward to it!✌️
Where do you live, c1b57?
Coming to France.
[47°09′32″S, 126°43′15″W] Transponder jammed
@alexonit @lyse i really don't understand why this was not the solution in the first place, given how simple twtxt is (mean to be), a reply should be as simple as #<https://example.com/twtxt.txt#2025-09-22T06:45Z> with the timestamp in an anchor link. the need for a mention is avoided like this as well since it's already linking to the replied-to feed!

🐀💭 i should just implement it into bbycll and force it into existence
[47°09′41″S, 126°43′51″W] Transponder malfunction
David Amos: #GraphTheory with #Python

https://www.youtube.com/watch?v=yXTDslxVfdM&list=PLLIPpKeh9v3ZFEHvNd5xqUrCkqLgXnekL
História maluca!

«Graciliano Ramos: Quem adulterou as memórias do escritor?

“Memórias do Cárcere” tinha diferença entre manuscritos do autor e edições publicadas em livro»

https://archive.ph/UuIQw

#GracilianoRamos #LiteraturaBrasileira
Dont dare to fight for peace, enlive it.
🧮 USERS:1 FEEDS:2 TWTS:1471 ARCHIVED:90021 CACHE:2680 FOLLOWERS:22 FOLLOWING:14
holy shit the future is here gopher is finally for the modern mar
anyway sup friends i hosted an IRC server
whyyyyy is my discover page only showing 7 twts!!!
Better late than never
#Portugal #Palestine #recognition Screenshot of https://en.m.wikipedia.org/w/index.php?title=International_recognition_of_Palestine&diff=prev&oldid=1312606019&diffonly=1 where we can see a change to an wikipedia page, adding Portugal to the list of countries that recognize Palestine
[47°09′26″S, 126°43′10″W] Transfer completed
[47°09′35″S, 126°43′05″W] Transfer 75% complete...
This looks interesting - hi from France
Há muitas críticas que se podem deixar ao novo canal televisivo "Conta Lá", mas uma coisa é boa: é aparentemente o único órgão de comunicação social que está a organizar um debate em *todos* os municípios, em preparação para as autárquicas:

https://www.youtube.com/live/XoQipHFMZVU
This thing about making software run on other people's computers can be pretty hard!

No wonder I think I've heard this is one of the things that distinguishes professional software development from [my preferred domain of] things such as "end-user programming" etc.

The problem is that when you start sharing code in the context of a FLOSS project you almost immediately get enmeshed in concerns about packaging and how other people will install stuff, when sometimes you just don't want to be a professional software developer! 😿

I'm always borrowing terms (learning ideas) from @lr like: *incidental complexity*. I hate *incidental complexity* or maybe I just fear *incidental complexity*. Can we escape *incidental complexity*? I guess not.
@itsericwoodward any news about this? I am, at the very least, curious!
Can we play D&D now?
Greetings from England
This looks so huggable, it feels like a plushie! 🥰

After seeing so many resolutions, I think you're only missing a *matrioska* version of it. 🪆
@lyse Yeah, the format is just an idea of how it could work.

The order of SOURCE > POST does make more sense indeed.
@prologic thanks, I already follow @important_dev_news too.

BTW, the feed on https://feeds.twtxt.net/ seem down? It says it's in maintenance.
[47°09′00″S, 126°43′10″W] Transfer 50% complete...
@alexonit 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.
God bless mr. Trump and USA
@prologic Me neither, if there's any important news others usually tell me anyway. 😌
[47°09′46″S, 126°43′27″W] Transfer 25% complete...
[47°09′55″S, 126°43′03″W] Bad satellite signal -- switching to analog communication
vacas pintadas de zebra e morcegos bêbados...

https://arstechnica.com/science/2025/09/meet-the-2025-ig-nobel-prize-winners/
Vacas pintadas de zebra e morcegos bêbados...

...também conta que os nenês curtem o leita materno quando a mãe comeu alho.

https://arstechnica.com/science/2025/09/meet-the-2025-ig-nobel-prize-winners/
Vacas pintadas de zebra e morcegos bêbados...

...também conta que os nenês curtem o leite materno quando a mãe comeu alho.

https://arstechnica.com/science/2025/09/meet-the-2025-ig-nobel-prize-winners/
🧮 USERS:1 FEEDS:2 TWTS:1470 ARCHIVED:90004 CACHE:2669 FOLLOWERS:22 FOLLOWING:14
https://lichess.org/training/431526724
Mate in 5 I think... :)
#chess #ChessPuzzle #lichess
@bender <3
[47°09′34″S, 126°43′36″W] --bad checksum--
Today is #SoftwareFreedomDay !
If you want to learn more about it, why not see this video with its founder?

@dff@dff https://videos.trom.tf/w/gVBnrHUypajuZkVKrafwz4
[47°09′15″S, 126°43′43″W] --white noise--
@prologic I know you were away, but were you under a rock?! 😅
Paul Walter has been posting amazing #GIS stuff on linkedin....

Like this: https://www.linkedin.com/posts/paulwaynewalter_urban-gis-people-great-free-self-paced-activity-7373022072685506560-z0S5

«Oh, also, here is a link to Transitland's map of open #GTFS data: https://www.transit.land/map#3.5/40.41/-104.84»
Paul Walter has been posting amazing #GIS stuff on linkedin....

Like this: https://www.linkedin.com/posts/paulwaynewalter_urban-gis-people-great-free-self-paced-activity-7373022072685506560-z0S5
«Welcome to the #AutomatingGIS processes course! Through interactive lessons and hands-on exercises, this course introduces you to #GeographicDataAnalysis using the #Python programming language. If you are new to Python, we recommend you first start with the Geo-Python course (geo-python.readthedocs.io) before diving into using it for GIS analyses in this course.

Geo-Python and Automating GIS Processes (‘#AutoGIS’) have been developed by the Department of Geosciences and Geography at the University of Helsinki, Finland. The course has been planned and organized by the #DigitalGeographyLab. The teaching materials are openly accessible for anyone interested in learning.»

https://autogis-site.readthedocs.io/en/latest/

(via Paul Walter no linkedin)

#GIS #geoPython #geopandas #shapely #osmnx #networkx
«Welcome to the #AutomatingGIS processes course! Through interactive lessons and hands-on exercises, this course introduces you to #GeographicDataAnalysis using the #Python programming language. If you are new to Python, we recommend you first start with the Geo-Python course (geo-python.readthedocs.io) before diving into using it for GIS analyses in this course.

Geo-Python and Automating GIS Processes (‘#AutoGIS’) have been developed by the Department of Geosciences and Geography at the University of Helsinki, Finland. The course has been planned and organized by the #DigitalGeographyLab. The teaching materials are openly accessible for anyone interested in learning.»

https://autogis-site.readthedocs.io/en/latest/

#GIS #geoPython #geopandas #shapely #osmnx #networkx
Consulta do senado sobre projeto de anistia do Mourão:

https://www12.senado.leg.br/ecidadania/visualizacaomateria?id=160575

Precisa logar com gov.br e tal, mas acho que vale a pena votar para mandar uma mensagem, a diferença andou diminuindo :-S
Attention, bientôt l'équinoxe : un évènement cosmique si puissant qu'il pourrait faire changer la saison!
idée peut-être pas si con du jour : ajouter des entrées sur mon twtxt à partir de mon téléphone en utilisant markor + syncthing pour la publication
[47°09′17″S, 126°43′24″W] Storm recedes -- back to normal work
@prologic Yes, no doubt. There's always something somewhere.
Did something bad happen in the world today? 🧐
[47°09′24″S, 126°43′47″W] Wind speed: 79kph -- batteries low
Doing a bit of 2018 Advent of Code now to relax. 🎄
@lyse Some stuff is actually more reliable, that’s true. It’s also waaaaaaaaaaay more expensive, though … :-)

I called it a day, yes. \o/
@movq 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.)
The worst thing you can do is make your infrastructure (switches, wifi, ...) depend on some cloud service. Because someone else is maintaining that service; you have no control over it. You 100% depend on that other person now. Very stupid idea.

Now guess what manufacturers are pushing for ...

Now guess who couldn't complete a task at work this Saturday morning, because a certain cloud service was down ...

IT is fucked. Throw it all away and start over.
[47°09′34″S, 126°43′01″W] Wind speed: N/A -- Cannot comunicate
@lyse Yep! Super fast and efficient! 😃
@kiwu awwww! 😢
i h8 it here(my home)
long month
#Python #cbers4a #satelite #SensoriamentoRemoto

https://cbers4asat.readthedocs.io/pt-br/latest/

cc @elmoneto@elmoneto (você viu isso? eu não manjo nada mas já fiquei animado...)
@prologic welcome back! 🥳🥳🥳
🧮 USERS:1 FEEDS:2 TWTS:1469 ARCHIVED:89989 CACHE:2669 FOLLOWERS:22 FOLLOWING:14
Hello 👋 I'm back!
https://galusik.fr/fridayrockmetal/2025-09-19-frm.m3u Tonight #FridayRockMetal playlist
As I am working on the new website of my band, I quite often look around for inspiration. It seems like the average band website comes with some sort of photo or pattern in the background with text put on it to prevent visitors from reading anything on there …
@movq That's transparency hardware support!
[47°09′36″S, 126°43′16″W] Wind speed: 75kph -- batteries low
While working on the Discoverability for my twtxt client (it runs client-side) I found out that Chrome doesn't allow to set a custom user agent. 🙃

I thought it was a general thing for browsers, but it that was actually allowed in a newer specification, yet it's still not implemented in Chrome, it does work in Firefox though.
Severe but funny burn-ins on my TFT again:

https://movq.de/v/9df0437d27/MVI_8891.MOV.mp4

Now everything looks like it has that silly slogan as a background image:

https://movq.de/v/9df0437d27/smol.jpg
[47°09′21″S, 126°43′27″W] Working impossible due to heavy rain
@zvava 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.
https://villares-shop.fourthwall.com (International)
https://umapenca.com/villares (BR)

#Python #CreativeCoding #Processing #py5 #TShirt #GenerativeArt #SupportArtists white T-shirt with abstract geometric pattern made of recursively placed unfilled black stroke hexagons and lines
I would like to wish everyone, including all haters and losers (of which, sadly, there are many) a truly happy and enjoyable weekend!
Only plebeians and shabbos goyim care about politics, however. Naturally, the Jews *would* want you to sperg out about Trump in a hipster-protocol chat.
[47°09′40″S, 126°43′26″W] Working impossible due to blizzard
Fuck Trump!