# 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 60810
# self = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=56480
# next = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=56580
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=56380
@cuaxolotl Very interesting! ๐Ÿค”What makes this "offline" first though? ๐Ÿค”
@cuaxolotl Interestinf ๐Ÿค” Thanks for supporting the work we've done too! Happy to hear improvement suggestions too ๐Ÿ‘Œ
@cuaxolotl Interestinf ๐Ÿค” Thanks for supporting the work we've done too! Happy to hear improvement suggestions too ๐Ÿ‘Œ
@movq All totally makes sense actuallly ๐Ÿคฃ
@movq All totally makes sense actuallly ๐Ÿคฃ
Introduction to JuiceFS | JuiceFS Document Center -- Thinking about using JuiceFS to solve a long-running problem I've always had.

- Be able to run services on _any_ node in my cluster and let Docker Swarm pick whatever node it likes (_instead of now where I have to pin some workloads to specific nodes, as that's where their local storage volume is_)
- Manage the scalability of data and growth over time instead of what I do now which is to extend EXT4 filesystems on my Docker Swarm nodes every few years.
Introduction to JuiceFS | JuiceFS Document Center -- Thinking about using JuiceFS to solve a long-running problem I've always had.

- Be able to run services on _any_ node in my cluster and let Docker Swarm pick whatever node it likes (_instead of now where I have to pin some workloads to specific nodes, as that's where their local storage volume is_)
- Manage the scalability of data and growth over time instead of what I do now which is to extend EXT4 filesystems on my Docker Swarm nodes every few years.
@bender Yeah that's for sure ๐Ÿ‘ I use the Monaco font normally. Been using that for a few years now.
@bender Yeah that's for sure ๐Ÿ‘ I use the Monaco font normally. Been using that for a few years now.
As a reminder, this is how zoomed in I normally am to read anything at all, Try doing this on the website ๐Ÿคฃ
As a reminder, this is how zoomed in I normally am to read anything at all, Try doing this on the website ๐Ÿคฃ
Fonts for me have to be crisp, sharp, without any crooked edges or boxed shapes. It has to be crisp and sharp at all zoom levels!
Fonts for me have to be crisp, sharp, without any crooked edges or boxed shapes. It has to be crisp and sharp at all zoom levels!
@bender That's just it, "pixelated" fonts are rubbish! ๐Ÿคฃ Imagine being blind for a moment, how well do you think you could read any of the text? ๐Ÿ˜… I can't even read it zoomed in! LOL ๐Ÿ˜
@bender That's just it, "pixelated" fonts are rubbish! ๐Ÿคฃ Imagine being blind for a moment, how well do you think you could read any of the text? ๐Ÿ˜… I can't even read it zoomed in! LOL ๐Ÿ˜
@bender Ita disgusting ๐Ÿคฎ I can't read shit ๐Ÿคฃ
@bender Ita disgusting ๐Ÿคฎ I can't read shit ๐Ÿคฃ
@slashdot AI not living up to its hype?! Shock! Horror! ๐Ÿ˜ฑ๐Ÿคฃ #AI
@slashdot AI not living up to its hype?! Shock! Horror! ๐Ÿ˜ฑ๐Ÿคฃ #AI
wut da fuq is this?! ๐Ÿคฃ
wut da fuq is this?! ๐Ÿคฃ
@bender I have not hmmm ๐Ÿค”
@bender I have not hmmm ๐Ÿค”
@xuu Haha ๐Ÿคฃ
@xuu Haha ๐Ÿคฃ
@shreyan Good morning! ๐Ÿฅฑ
@shreyan Good morning! ๐Ÿฅฑ
@bender Hah! ๐Ÿคฃ
@bender Hah! ๐Ÿคฃ
Good points ๐Ÿ™‡โ€โ™‚๏ธ
Good points ๐Ÿ™‡โ€โ™‚๏ธ
@movq Yeah your original idea of precent encoding some information about the new follower is probably what we need to think about more. I _think_ it'll also work for Gopher/Gemini folk too right? So essentially new metadata key (_optional_) with some spec for encoding information about the new follower if either a) You don't implement the User-Agent part of the spec or extensions or b)You use a protocol that makes this impossible.
@movq Yeah your original idea of precent encoding some information about the new follower is probably what we need to think about more. I _think_ it'll also work for Gopher/Gemini folk too right? So essentially new metadata key (_optional_) with some spec for encoding information about the new follower if either a) You don't implement the User-Agent part of the spec or extensions or b)You use a protocol that makes this impossible.
@movq Sad, the search engine doesn't have the full conversation ๐Ÿ˜ข I _think_ I need to teach yarns how to crawl and index archived feeds ๐Ÿค”
@movq Sad, the search engine doesn't have the full conversation ๐Ÿ˜ข I _think_ I need to teach yarns how to crawl and index archived feeds ๐Ÿค”
For HTTP WebSub is a good simple option here and there is this free inline WebSub hub anyone can use.
For HTTP WebSub is a good simple option here and there is this free inline WebSub hub anyone can use.
@movq Something like that, yeah ๐Ÿค”
@movq Something like that, yeah ๐Ÿค”
Similarly an optional subscription endpoint so we can optionally avoid having to pull feeds.
Similarly an optional subscription endpoint so we can optionally avoid having to pull feeds.
@movq I'm thinking of something like an optional metadata key that could be used as a general motivation endpoint?
@movq I'm thinking of something like an optional metadata key that could be used as a general motivation endpoint?
@bender thing I am too (happy) that is. If I ever wanted to side load an app I could with my Developer account easily!
@bender thing I am too (happy) that is. If I ever wanted to side load an app I could with my Developer account easily!
@movq Yeah okay I didn't notice that ๐Ÿคฆโ€โ™‚๏ธ Kind of makes me wonder whether we should do something for the Gopher and Gemini folk here? ๐Ÿค”
@movq Yeah okay I didn't notice that ๐Ÿคฆโ€โ™‚๏ธ Kind of makes me wonder whether we should do something for the Gopher and Gemini folk here? ๐Ÿค”
@movq Hmm wow! ๐Ÿ˜ฑ
@movq Hmm wow! ๐Ÿ˜ฑ
@aelaraji Well yeah this is true, but as @bender and I point out, there are reasons for why this happens at times ๐Ÿคฃ Some of those reasons are not "purposefully malicious" I don't think ๐Ÿค”
@aelaraji Well yeah this is true, but as @bender and I point out, there are reasons for why this happens at times ๐Ÿคฃ Some of those reasons are not "purposefully malicious" I don't think ๐Ÿค”
@aelaraji Correct me if I'm wrong, but isn't the EU forcing Apple to support side-loading Apps now on iOS devices? ๐Ÿค”
@aelaraji Correct me if I'm wrong, but isn't the EU forcing Apple to support side-loading Apps now on iOS devices? ๐Ÿค”
Anyone had any intereractions with @cuaxolotl yet? Or are they using a client that doesn't know how to detect clients following them properly? Hmmm ๐Ÿง
Anyone had any intereractions with @cuaxolotl yet? Or are they using a client that doesn't know how to detect clients following them properly? Hmmm ๐Ÿง
@falsifian No need to apologize! ๐Ÿ˜Œ Yarn / Twtzt is designed to be slow on purpose ๐Ÿคฃ
@falsifian No need to apologize! ๐Ÿ˜Œ Yarn / Twtzt is designed to be slow on purpose ๐Ÿคฃ
@movq Where was this found? ๐Ÿค” What a treasure trove ๐Ÿ˜… #Windows #sucks
@movq Where was this found? ๐Ÿค” What a treasure trove ๐Ÿ˜… #Windows #sucks
@lyse Poor little guy ๐Ÿ˜ข Also eww I hate snakes ๐Ÿคฃ I have a bit of a phobia ๐Ÿ˜…
@lyse Poor little guy ๐Ÿ˜ข Also eww I hate snakes ๐Ÿคฃ I have a bit of a phobia ๐Ÿ˜…
@bender That's also likely ๐Ÿ˜…
@bender That's also likely ๐Ÿ˜…
@slashdot IMO the problem isn't "Apple"โ„ข the company, per se, it's the complexity and size of the organization. It's large, it's complex, you will have large sets of "people" that follow the "rules" as written without any leeway whatsoever or ability to apply "intent".
@slashdot IMO the problem isn't "Apple"โ„ข the company, per se, it's the complexity and size of the organization. It's large, it's complex, you will have large sets of "people" that follow the "rules" as written without any leeway whatsoever or ability to apply "intent".
@quark probably not with the OpenSSH tools themselves but perhaps with the OpenSSL tools using the same key.
@quark probably not with the OpenSSH tools themselves but perhaps with the OpenSSL tools using the same key.
@off_grid_living This is so true! Grandpa used to say this all the time too. Especially about tomatoes ๐Ÿคฃ
@off_grid_living This is so true! Grandpa used to say this all the time too. Especially about tomatoes ๐Ÿคฃ
@movq Yeah we're about 3,054.26km from the equator but clearly that's not far enough ๐Ÿคฃ
@movq Yeah we're about 3,054.26km from the equator but clearly that's not far enough ๐Ÿคฃ
@bender Yeah just in spring right now and it's already disgustingly hot ๐Ÿฅต
@bender Yeah just in spring right now and it's already disgustingly hot ๐Ÿฅต
Uggh it's 33C right now and 60% humidity ๐Ÿฅต
Uggh it's 33C right now and 60% humidity ๐Ÿฅต
@quark Bahahahaha ๐Ÿคฃ
@quark Bahahahaha ๐Ÿคฃ
That was the only real way I could fix this for the time being without re-factoring the whole UI for the endpoint/page.
That was the only real way I could fix this for the time being without re-factoring the whole UI for the endpoint/page.
@abucci Precisely ๐Ÿ˜…
@abucci Precisely ๐Ÿ˜…
It's a really good time to invest in nVIDIA shares ๐Ÿคฃ
It's a really good time to invest in nVIDIA shares ๐Ÿคฃ
@abucci No this correctly now responds with:


$ curl 'https://twtxt.net/external?uri=https://google.com&nick=lovetocode999'
Feed Not Found


After nuking that from my cache. I forgot to nuke my own cache myself because it's quite destructive and takes a few mins to rebuild on my pod ๐Ÿคฃ There's a tool in tools for deleting a specific feed from the cache that I've been using.
@abucci No this correctly now responds with:


$ curl 'https://twtxt.net/external?uri=https://google.com&nick=lovetocode999'
Feed Not Found


After nuking that from my cache. I forgot to nuke my own cache myself because it's quite destructive and takes a few mins to rebuild on my pod ๐Ÿคฃ There's a tool in tools for deleting a specific feed from the cache that I've been using.
@cuaxolotl Hey! ๐Ÿ‘‹
@cuaxolotl Hey! ๐Ÿ‘‹
Yeah I wonder too ๐Ÿค”
Yeah I wonder too ๐Ÿค”
@abucci appreciate it if you find the time to update again ๐Ÿ™
@abucci appreciate it if you find the time to update again ๐Ÿ™
Now that's rolling out, I _think_ that's it. The only final way I can improve that /external endpoint/view is to refactor how it works a bit and add some HTMX magicโ„ข so it has a nice snappy UX to it as it dynamically tries to validate the feed and provide useful feedback to the user, that way I can avoid injecting it into the cache unnecessarily in the first place!
Now that's rolling out, I _think_ that's it. The only final way I can improve that /external endpoint/view is to refactor how it works a bit and add some HTMX magicโ„ข so it has a nice snappy UX to it as it dynamically tries to validate the feed and provide useful feedback to the user, that way I can avoid injecting it into the cache unnecessarily in the first place!
@bender Yeah but I found another bug and just squished that. CD pipeline is gonna roll this pod soonโ„ข -- Basically wasn't handling feeds that redirect properly. e.g: https://google.com => https://www.google.com (_though it's not a feed ๐Ÿคฃ_)=_
@bender Yeah but I found another bug and just squished that. CD pipeline is gonna roll this pod soonโ„ข -- Basically wasn't handling feeds that redirect properly. e.g: https://google.com => https://www.google.com (_though it's not a feed ๐Ÿคฃ_)=_
Hmm I see this in the cache again ๐Ÿคฆโ€โ™‚๏ธ Not sure how tbh -- Job for me later.
Hmm I see this in the cache again ๐Ÿคฆโ€โ™‚๏ธ Not sure how tbh -- Job for me later.
@bender https://google.com has been removed from the cache (_without nuking the entire cache_) @abucci if you need to selectively do this for some reason, there's a script in the tools directory for this:


$ ./tools/cache_delete_feed.sh 'https://google.com'


Anyway, that's gone. This is much much harder to exploit now, even if you're an authenticated user.
@bender https://google.com has been removed from the cache (_without nuking the entire cache_) @abucci if you need to selectively do this for some reason, there's a script in the tools directory for this:


$ ./tools/cache_delete_feed.sh 'https://google.com'


Anyway, that's gone. This is much much harder to exploit now, even if you're an authenticated user.
Time for workโ„ข, But I quickly hacked together a bit of a better solution here. Rolling it out to my pod so we'll see how it _actually_ goes. Still possible to abuse if you're a logged in user, etc, but at least now we delete the invalid/bad feed afterwards if it a) was not even a text//plain content-type or b) it errored out and was a new fetch of a HTTP feed.