# 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 234723
# self = https://watcher.sour.is?offset=232493
# next = https://watcher.sour.is?offset=232593
# prev = https://watcher.sour.is?offset=232393
Mais um dia, mais uma sondagem:

PS 30.8%
AD 25.8%
CH 17.3%
IL 7.3%
BE 4.3%
L 2.5%
CDU 2.4%
PAN 0.8%

https://www.dn.pt/pol%C3%ADtica/sondagem-ps-ultrapassa-ad-e-maioria-v%C3%AA-montenegro-sem-condi%C3%A7%C3%B5es
Mais um dia, mais uma sondagem:

PS 30.8%
AD 25.8%
CH 17.3%
IL 7.3%
BE 4.3%
L 2.5%
CDU 2.4%
PAN 0.8%

https://www.dn.pt/pol%C3%ADtica/sondagem-ps-ultrapassa-ad-e-maioria-v%C3%AA-montenegro-sem-condi%C3%A7%C3%B5es
nRF52 ok
this esp32 issue is tracked under CVE-2025-27840... Looks like I should try alternative chips for meshtastic!
whoa! esp32 = 29 undocumented commands, collectively characterized as a backdoor, that could be used for memory manipulation, MAC address spoofing and packet injection=
meshtastic looks promising, i'm starting to explore esp32 platforms and it doesn't look that dificult to setup.
@doesnm Actually that's a fantastic idea 🙌
@eapl.me@eapl.me 🤗😍
@eapl.me@eapl.me No worries 🤗 My emotionally state are my own to sort out 🤣
@kat Welcome back! 🙌
@kat Actually that's' a known bug I haven't worked out yet hmmm 🧐
@kat Arw you running make build or go build?
[47°09′10″S, 126°43′25″W] Raw reading: 0x67CFED82, offset +/-4
Hello, Alice!
[47°09′13″S, 126°43′47″W] Weather forecast alert -- storm from SW
👋 Hello @death, welcome to yarn, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
👋 Hello @death, welcome to yarn, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
i rebuilt the yarnd binary several times and yet the version print is still omitting the first letter lol? wtf
i rebuilt the yarnd binary several times and yet the version print is still omitting the first letter lol? wtf
oh god i have a horrible headache i know it'll only go away if i sleep but i don't wanna sleep yet T_T
oh god i have a horrible headache i know it'll only go away if i sleep but i don't wanna sleep yet T_T
👋 Hello @radiantgarden, welcome to yarn, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
👋 Hello @radiantgarden, welcome to yarn, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
👋 Hello @hydaelyn, welcome to yarn, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
👋 Hello @hydaelyn, welcome to yarn, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
idfk where the error came from it just broke one day, maybe from one of my many server crashes which are becoming frequent and UGH i have to fix that too but i have a headache right now so one thing at a time. the error was 'unexpected end of JSON input' or something, for a while i thought oh permission error but turns out i can't read the error that clearly indicated something syntax related (i did double check my env file though)
idfk where the error came from it just broke one day, maybe from one of my many server crashes which are becoming frequent and UGH i have to fix that too but i have a headache right now so one thing at a time. the error was 'unexpected end of JSON input' or something, for a while i thought oh permission error but turns out i can't read the error that clearly indicated something syntax related (i did double check my env file though)
@kat it was like.... meta.json was corrupt or well it was empty actually whatever idk. ended up moving that elsewhere temporarily, rebuilding the binary, restarting server... and it worked?!?!? shit was confusing
@kat it was like.... meta.json was corrupt or well it was empty actually whatever idk. ended up moving that elsewhere temporarily, rebuilding the binary, restarting server... and it worked?!?!? shit was confusing
HI EVERYONE MY INSTANCE DIED FOR A WHILE AND MY LIFE TURNED TO SHIT SO I COULDN'T FIX IT BUT I JUST DID YAYYYYYYYY
HI EVERYONE MY INSTANCE DIED FOR A WHILE AND MY LIFE TURNED TO SHIT SO I COULDN'T FIX IT BUT I JUST DID YAYYYYYYYY
Tradutores Lisboetas dá nisto. !["afirmou ela - que a Sr.ª Dawson (¹) não quisesse" _ (¹) No original inglês está Miss Dawson, o que em português se deveria traduzir-se por menina Dawson; porém, para nós, portugueses, comsiderar menina uma criatura de 73 anos seria um pouco forte. Por isso se lhe chama senhora. (N. T.)](https://media.ciberlandia.pt/ciberlandia-media/media_attachments/files/114/141/216/255/215/859/original/805d3f5dca8efa6a.jpg)_
Tradutores Lisboetas dá nisto. !["afirmou ela - que a Sr.ª Dawson (¹) não quisesse" _ (¹) No original inglês está Miss Dawson, o que em português se deveria traduzir-se por menina Dawson; porém, para nós, portugueses, comsiderar menina uma criatura de 73 anos seria um pouco forte. Por isso se lhe chama senhora. (N. T.)](https://media.ciberlandia.pt/ciberlandia-media/media_attachments/files/114/141/216/255/215/859/original/805d3f5dca8efa6a.jpg)_
🧮 USERS:1 FEEDS:2 TWTS:1272 ARCHIVED:85120 CACHE:2798 FOLLOWERS:18 FOLLOWING:14
#sondagem #ptpol

AD 33.5%
PS 28.8%
CH 13.5%
IL 6.7%
CDU 3.0%
BE 2.9%
L 2.7%
PAN 1.7%

A confirmar-se esta tendência, a AD *sobe* mesmo tendo um Primeiro-Ministro que não quer dar explicações aos Portugueses sobre a sua actuação, o que diz muito sobre a saúde da democracia em Portugal.

https://www.jn.pt/3981355099/sondagem-legislativas-ad-parte-a-frente-do-ps-mas-esta-em-perda-chega-em-queda-livre/
#sondagem #ptpol

AD 33.5%
PS 28.8%
CH 13.5%
IL 6.7%
CDU 3.0%
BE 2.9%
L 2.7%
PAN 1.7%

A confirmar-se esta tendência, a AD *sobe* mesmo tendo um Primeiro-Ministro que não quer dar explicações aos Portugueses sobre a sua actuação, o que diz muito sobre a saúde da democracia em Portugal.

https://www.jn.pt/3981355099/sondagem-legislativas-ad-parte-a-frente-do-ps-mas-esta-em-perda-chega-em-queda-livre/
It is super cool to be listed as a "contributor" for having chimed in (constructively) on a project's issue :D

https://github.com/nathanrooy/taxicab/releases/tag/v0.1.1

#taxicab is a library that improves on #OSMnx route-finding function, giving more useful results, specially on short routes.

#geopython #python
BCN mood :)
@prologic oops, I'm sorry to see disagreement leading to draining emotions.

It remind me a bit of the Conclave movie where every part wanted to defend their vision and there is only a winner. If one wins the other loses. Like the political side of many leaders and volunteers representing a broad community. I don't think that's the case here. Most of us (in not all) should 'win'.

I can only add that isn't nice to listen that 'my idea and effort' is not what the rest of the people expect. I personally have a kind of issue with public rejection, but I also like to argue, discuss and even fight a bit. "A gem cannot be polished without friction, nor a man perfected without trials," they say.
This exercise and belonging to this community also brings me good feelings of smart people trying to solve a human and technical problem, which is insanely difficult to get 'right'.

I genuinely hope we can understand each other, and even with our different and respectful thoughts on the same thing, we might reach an agreement on what's the best for most people.

Good vibes to everyone!
#testing @ Hi Bob, nice to meet you!
#testing @ Hi Bob, nice to meet you!
#testing @ Hi Bob, nice to meet you!
#testing @ Hi Bob, nice to meet you!
[47°09′34″S, 126°43′13″W] Transfer aborted
@lyse deeply honored to be used as an example, when illustrating things that will break! :-D <3
[47°09′48″S, 126°43′32″W] Transfer 75% complete...
ahoy
Which #Python + #py5 teaching resource should I translate into English next?

https://abav.lugaralgum.com/material-aulas/Processing-Python-py5/

Maybe you could open an issue at https://github.com/villares/python-in-a-visual-context/blob/main/Processing-Python-py5/README.md

:)
Why not just use registry? It can be personal or hosted by someone like registry.twtxt.org. Just need to be adapt to support hashes
If we don't keep insisting on simplify and "The beauty of twtxt is, you put one file on your server, done. One.", then people should just use ActivityPub-based software like Mastodon, PixelFed, etc. which are getting a lot of attention and uses migrating to the fediverse from meta/x here in Denmark over the last couple of months.
If we don't keep insisting on simplify and "The beauty of twtxt is, you put one file on your server, done. One.", then people should just use ActivityPub-based software like Mastodon, PixelFed, etc. which are getting a lot of attention and uses migrating to the fediverse from meta/x here in Denmark over the last couple of months.
If we don't keep insisting on simplify and "The beauty of twtxt is, you put one file on your server, done. One.", then people should just use ActivityPub-based software like Mastodon, PixelFed, etc. which are getting a lot of attention and uses migrating to the fediverse from meta/x here in Denmark over the last couple of months.
If we don't keep insisting on simplify and "The beauty of twtxt is, you put one file on your server, done. One.", then people should just use ActivityPub-based software like Mastodon, PixelFed, etc. which are getting a lot of attention and uses migrating to the fediverse from meta/x here in Denmark over the last couple of months.
On my blog: Developer Diary, Harriet Tubman Day https://john.colagioia.net/blog/2025/03/10/tubman.html #programming #project #devjournal
[47°09′24″S, 126°43′33″W] Transfer 50% complete...
Where all ?! O _ O_
@lyse I also think we need to remove ourselves a bit from the "Twtxt" format as it was originally designed by Buckket.

> The beauty of twtxt is, you put one file on your server, done. One.

I'm not talking (_nor ever was here_) about that. We should be allowed to and encourage dot evolve its usage and our own.

It would be far better as a community to focus on the utility of our tools, services, protocols, formats and specifications as well as our own clients and usages thereof rather than this "idealised" design from (c) 2016.

If you strongly disagree with this, then I think I'll just honestly step away from all of this as the back 'n forth on this whole "beaty" and "simplify" argument is honestly wearing me down 😢
@lyse Sorry I didn't mean to upset you or anyone here in the community. I am/was merely trying to solve what I perceive to be a problem and an ask in the community:

> How do I know what a hash refers to?

I believe the reason for this stems from a curiosity of the user of whether they _might_ find that thread interesting or whether there are new interested feeds to follow?

Although my idea increases complexity slightly (_introducing a new concept_) I don't think it's particular hard to understand, reason about or implement (_complicated_). One could even even make the implementation quite simple in fact.

Either way, the idea of a service (_cantralised_) or participating clients/registries (_distributed_) providing reverse hash lookups doesn't sound too bad really.

What do you propose to solve the above problem? 🤔
I went for a run this morning after months of not running and it feels so good!
@prologic 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.
[47°09′14″S, 126°43′22″W] Transfer 25% complete...
Das Gemälde eines Waldgasthofes vor einer holzvertäfelten Wand Das mitteldeutsche Twin Peaks.
[47°09′31″S, 126°43′51″W] Carrier too weak
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.
@unexplained_mysteries Interesting article on the philosophy of thougjts 🙌
Power outages throughout south east queensland (map)
5 miles: 5.18 miles, 00:09:18 average pace, 00:48:08 duration
finishing the 13 miles. this felt really easy on tired legs.
#running #treadmill
5 miles: 5.18 miles, 00:09:18 average pace, 00:48:08 duration
finishing the 13 miles. this felt really easy on tired legs.
#running #treadmill
5 miles: 5.18 miles, 00:09:18 average pace, 00:48:08 duration
finishing the 13 miles. this felt really easy on tired legs.
#running #treadmill
🧮 USERS:1 FEEDS:2 TWTS:1271 ARCHIVED:85113 CACHE:2793 FOLLOWERS:18 FOLLOWING:14
Ontem voltei a pegar no Django depois de 10 anos para um side-project. É como se fosse um regresso a um lugar onde um dia se foi feliz.

Tem a sua personalidade e tal, mas continuo a adorar os seus pormenores e as suas escolhas sobre como deve funcionar uma framework web.

Também fiquei muito agradado de ver que muito pouco mudou desde há uma década no que toca à forma fundamental como o Django faz as coisas. Talvez isso não seja apreciado pela juventude habituada a ciclos de upgrade rápidos e drásticos, mas pra mim foi um grande alívio ver que não tenho de me atualizar muito para montar um pequeno projeto.

Há gente djangueira por aí?

#python #django
Ontem voltei a pegar no Django depois de 10 anos para um side-project. É como se fosse um regresso a um lugar onde um dia se foi feliz.

Tem a sua personalidade e tal, mas continuo a adorar os seus pormenores e as suas escolhas sobre como deve funcionar uma framework web.

Também fiquei muito agradado de ver que muito pouco mudou desde há uma década no que toca à forma fundamental como o Django faz as coisas. Talvez isso não seja apreciado pela juventude habituada a ciclos de upgrade rápidos e drásticos, mas pra mim foi um grande alívio ver que não tenho de me atualizar muito para montar um pequeno projeto.

Há gente djangueira por aí?

#python #django
Ontem voltei a pegar no Django depois de 10 anos para um side-project. É como se fosse um regresso a um lugar onde um dia se foi feliz.

Tem a sua personalidade e tal, mas continuo a adorar os seus pormenores e as suas escolhas sobre como deve funcionar uma framework web.

Também fiquei muito agradado de ver que muito pouco mudou desde há uma década no que toca à forma fundamental como o Django faz as coisas. Talvez isso não seja apreciado pela juventude habituada a ciclos de upgrade rápidos e drásticos, mas pra mim foi um grande alívio ver que não tenho de me atualizar muito para montar um pequeno projeto.

Há gente djangueira por aí?

#python #django
We had a very sunny day, peaking at 19°C. This not only decoyed me out, but also plenty motorcycle terrorists. Eh fuckwits, nobody wants to listen to your bloody engine and exhaust noise, keep it quiet for fuck's sake! Many of your rider collegues can manage it, too, so should you.

I had some sore muscles after yesterday's waste paper collection with the scouts. So, I only went for a short trip to my closest backyard mountain. Watching two rock climbers was interesting. That's not something I see very often.

Rock climber going up the Spielburg

https://lyse.isobeef.org/waldspaziergang-2025-03-09/
[47°09′42″S, 126°43′08″W] Transponder still failing -- switching to analog communication
https://bentsukun.ch/posts/pkgsrc-with-git/ netbsd
@prologic Hahaha, I love that! :-D Something to laugh during these hard times. Hope you're doing alright.
@arne Glückwunsch, das ist in der Tat doch mal eine erfreuliche Abwechslung. :-)
Thanks, @xuu, great explanation. In another project I've structured it exactly like you wrote. The mock storage over there extends the SQLite storage and provides mechanism to return errors and such for testing purposes:

* storage/ defines the interface
* sqlite/ implements the storage interface
* mock/ extends the SQLite implementation by some mocking capabilities and assertions

Here, however, there are no storage subpackages. It's just storage, that's it. Everything is in there. The only implementation so far is an SQLite backend that resides in storage. My RAM storage is exactly that SQLite storage, but with :memory: instead a backing file on disk. I do not have a mock storage (yet).

I have to think about it a bit more, but I probably have to do exactly that in my tt rewrite, too. Sigh. I just have the feeling that in storage/sqlite/sqlite_test.go I cannot import storage/mock for the helper because storage/mock/mock.go imports and embeds the type from storage/sqlite. But I'm too tired right now to think clearly.*
[47°09′52″S, 126°43′22″W] Transponder malfunction
Pinellas County - Long run: 8.15 miles, 00:11:43 average pace, 01:35:28 duration
had a date night last night and probably drank a bit too much. my wife followed me on the bike while we did some errands as well. hot and humid this afternoon which really dragged me down. i'll finish the rest of the HM at home.
#running
Pinellas County - Long run: 8.15 miles, 00:11:43 average pace, 01:35:28 duration
had a date night last night and probably drank a bit too much. my wife followed me on the bike while we did some errands as well. hot and humid this afternoon which really dragged me down. i'll finish the rest of the HM at home.
#running
Pinellas County - Long run: 8.15 miles, 00:11:43 average pace, 01:35:28 duration
had a date night last night and probably drank a bit too much. my wife followed me on the bike while we did some errands as well. hot and humid this afternoon which really dragged me down. i'll finish the rest of the HM at home.
#running
Vous connaissez coolmaze pour transférer des fichiers? Je ne trouve pas le code source, donc ça ne doit pas être libre. Vous connaîtriez un équivalent, si possible auto-hébergeable? https://coolmaze.io/
Vous connaissez coolmaze pour transférer des fichiers? Je ne trouve pas le code source, donc ça ne doit pas être libre. Vous connaîtriez un équivalent, si possible auto-hébergeable? https://coolmaze.io/
[47°09′02″S, 126°43′14″W] Reading: 1.28 Sv
[47°09′52″S, 126°43′03″W] Storm recedes -- back to normal work
[47°09′51″S, 126°43′15″W] Wind speed: 44kph
❤️ 🎶: Greeting by Kassy
❤️ 🎶: Close I'll be by Kim Na Young
🧮 USERS:1 FEEDS:2 TWTS:1270 ARCHIVED:85107 CACHE:2793 FOLLOWERS:18 FOLLOWING:14
We've now had centimeters of rainfall in the last 24hrs 😱 -- Yesterday afternoon the local creek near us had already gone several inches over the footbridge too! 😱😱
[47°09′12″S, 126°43′24″W] Automatic systems disengaged due to blizzard
re reading so NewRAMStorage(…) is just something that setups your storage and initial data.. that can probably live with storage/sqlite. The point is the storage package does not import the implementations of storage.Storage It just defines the contract for things that use that interface. Now storage/sqlite CAN import storage and not have a circle dep.

It kinda works in reverse for import directions. usually you have your root package that imports things from deeper in the directory structures.. but for the case of interfaces it reverses where the deeper can import from parents but parents cannot import from children.


- app < storage
      < storage/sqlite
      < controller < storage
                   < storage/sqlite
 
- sqlite < storage

- storage X storage/sqlite
❤️ 🎶: A song from the past by Solar, Kassy
@lyse OK. So how I have worked things like this out is to have the interface in the root package from the implementations. The interface doesn't need to be tested since it's just a contract. The implementations don't need to import storage.Storage

- storage/ defines the Storage interface (no tests!)
- storage/sqlite for the sqlite implementation tests for sqlite directly
- storage/ram for the ram implementation and tests for RAM directly
- controller/ can now import both storage and the implementation as needed.


So now I am guessing you wanted the RAM test for testing queries against sqlite and have it return some query response?

For that I usually would register a driver for SQL that emulates sqlite. Then it's just a matter of passing the connection string to open the registered driver on setup.

https://github.com/glebarez/go-sqlite?tab=readme-ov-file#connection-string-examples
[47°09′44″S, 126°43′14″W] Weather forecast alert -- storm from SE
@lyse Das war ein sehr glatter Ritt mit der Bahn. Ebenso heute auf der Autobahn.
(gesendet aus Thüringen)
On my blog: Free Culture Book Club — acoustic (yin) https://john.colagioia.net/blog/2025/03/08/acoustic-yin.html #freeculture #bookclub