# 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 60823
# self = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=60615
# next = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=60715
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=60515
@kat It's also perfectly safe to nuke your cache as well. i.e: rm data/cache* and it's all good, things will just get rebuilt πŸ‘Œ
@kat I totally recommend zs 🀣 It powers all my sites! πŸ˜… https://twtxt.dev https://yarn.socia/ https://prologic.dev etc 😎
@kat Hmmm Please if this happens again, help me reproduce it. Any clues in the logs? Hmm? 🧐 My own pod has been running flawlessly for weeks now πŸ˜…
@movq Same here, you do get used to things over time and build a sort-of "muscle memory". But you're right, maybe they have terrible interfaces and usage options? πŸ€”
@bender I like to self-host 🀣
@bender Yeah I know 😒 Don't have Disney+, hell I don't have many streaming services at all really 🀣
Hmmm Star Wars Andor I _think_ it was πŸ€”
@bender Ahh I see. That reminds me, I was going to start watching something someone recommended here hmmm 🧐
@bender Huh? πŸ€”
Anyone want to help me alpha/beta test the new WAF I'm building? It's a Caddy module. πŸ€”
@kat Ahh but you're like one of a very few that _actually_ own domains and do interesting things πŸ˜…
@bender How do you explain mine then? Unless it was registered before me, then let go of and I re-registered it later? πŸ€”
@bender I'm not sure this is accurate, if you lookup mine:


$ whois shortcircuit.net.au 2>&1 | grep -i creat
created:      1986-03-05


I _think_ this has to be the registrar's creation date no? πŸ€”
Yeah I can't figure out when I registered shortcircuit.net.au 😭
According to a very old email one of my more personal family domains was registered in 2013 making it 12 years old, so I was closed 🀣 my public facing one is much much older 🀣
@anth I actually don't have a clue how old my public-facing domain is 🀣 I have another more personal one that's probably around ~15 years, but I'm not even sure how to check tbh πŸ˜…~
@lyse I agree with this sentiment πŸ™Œ
And yes I'm taking some inspiration from Anubis here πŸ˜…
One thing about my design here is that it would no longer incorporate "regex"-based rules like OWASP, mostly because my experience thus far has taught me that these rules are kind of overly sensitive, produce false positives and I'm not sure they are really very effective. For example, why is the point of performing SQL injection detection at the Edge using a WAF if you already handle SQL properly in the first place? (_seriously does anyone still construct SQL queries by hand with effectively printf?!_)
Also spent the morning continuing to think about a new design for EdgeGuard's WAF. I'm basically going to build an entirely new pluggable WAF that will be designed to only consider Rate Limiting, IP/ASN-based filtering, JavaScript challenge handling, Basic behavioral analysis and Anomaly detection.

The only part of this design I'm not 100% sure about is the Javascript-based challenge handling? πŸ€” I'm also considering making this into a "proof of work" requirement too, but I also don't want to falsely block folks that a) turn Javascriptβ„’ off or b) Use a browser like links, elinks or lynx for example.

Hmmm 🧐
Running monthly backups...
@kat Ahh I see ! πŸ˜…
Love all the funky colors though 😎
@kat You'll have to forgive me πŸ™ My vision impairment is getting in the way of seeing this "prompt box" thingy 🀣
Or is it Textadus (_hmm not sure I can even spell it 😱_) now? πŸ€”_
@sorenpeter Hah πŸ˜… Just like how we 'all just talk about Twtxt right? 🀣
@kat This sounds cool! 😎 Can you show me? πŸ€”
@kat Look into using something like pyrra for creating and managing SLO(s) with Prometheus πŸ‘Œ I use this myself actually, plus I also use HetrixTools for external monitoring with SLO-style measures via status.mills.io πŸ‘Œ
@bender Me too! She's awesome πŸ™Œ
Move beyond basic threshold alerts! Define clear Service Level Objectives (SLOs) and measure Service Level Indicators (SLIs) to track real user impact. Use Prometheus to alert when your SLOs are at risk, ensuring you focus on what truly matters to your users. #Monitoring #SRE #Prometheus
@kat I'd recommend alerting off of Prometheus πŸ‘Œ
@xuu Cool! I'll have to give it a watch πŸ‘Œ
Really hoping Elizabeth Watson Brown wins and hold her seat here in Ryan πŸ™
@kat Any idea why?
@bender I think this would be a good idea as @movq and @andros have done βœ… I _may_ even join the experiments if I have any spare time to hack a custom yrand branch and run it up on say something like a yarnexp.mills.io or something πŸ€”
@bender This ☝️
@sorenpeter No because as the spec statd originally, and we didn't change that syntax at all:

> Mentions are embedded within the text in either @ or @ format

So the lextwt parser we use will simply call this an invalid mention, which it does.
@sorenpeter Unfortunately it does break all clients, because the original spec stated:

> Mentions are embedded within the text in either @ or @ format
@movq Just like Friday's right? πŸ˜…
@andros Yup! πŸ‘Œ
@kat Make sure you're up-todate with main 🀣 I'm fixing little things here and there. Also please report bugs 🐞
Hopefully I haven't missed or messed anything upu πŸ˜…


* 101f3eb0 - (HEAD -> main) Fix a bunch of UX to do with following/unfollowing, bookmarking and unbookmarking (3 seconds ago) <James Mills>


Testing UI/UX is hardβ„’ πŸ˜‰
On a public holiday here (_Labor Day, ironic really considering the labor party here in Australia has won their 2nd term this election haha 🀣_)_
Going to try and few up a few more UX bugs today with yarnd.
@kat Have you rebuild from main recently? πŸ€”
@lyse Yeah to avoid cutting off bits at the end making hashes end in either q or a 🀣
@kat No no, it's just barks at the slightest thing going on around the neighborhod πŸ˜ƒ like it just goes a bit nuts often 🀣 it was a rescue dog, two years old, and it wasn't treated very well, a street dog. I _think_ it's just basically afraid of every human in the world 😒
@andros Programming is art. You become good at art by practising your art. You learn artistic patterns by being inspired by and reading others art works. The most importance however is that you practise your art.
@javivf Yes and still in review .
@lyse You are of course right! 🀣 There are some low level components that can and should be unit tested for sure! πŸ‘Œ
How do you stop a dog from barking? 🧐
@kat It is πŸ˜…
@bmallred You mean ActivityPub + Twtxt? πŸ€”
@kat Ysy!!! πŸ™ŒπŸ™ŒπŸ™Œ
@bmallred It really is 🀣
@bender Bahahah πŸ€£πŸ˜‚ mate, me and one of my SRE colleagues actually came up with the terminology ourselves! πŸ˜›
@lyse Heh I have to wear gloves now when swining an axe or it hurts my hands 🀣
@kat / @xuu Recommend you git checkout main && git pull, rebuild and redeploy: make build, and however you deploy. πŸ™ Lots of fixes (_no more stalling_) and optimizations to the feed fetcher, smoother cpu usage, better internal metrics.
I'm not even being facetious here either. I'd llove to see you "unit tests" this:
@lyse Well you are being _slightly_ rude πŸ€ͺ Sure you could write unit tests for this, but in practise testing emergent properties and behaviors of a system is actually a lot harder than you might realize. But I'm happy to always be proven wrong πŸ˜‘
@kat Yeah right now I'm trying to see if I can "spread the CPU usage of fetching N feeds across M duration" so basically "smooth" out the spikes in CPU usage.
@kat I've almost fixed this btw πŸ€— Just testing it thoroughly and polihsing the code. In case you're curious, I do this style of development called "Observability Driven Development" (ODD) whereby I make observations of the system via metrics and internal observations and adjust the system's overall behavior to the desired outcome πŸ˜…
Hey @kat If you see this, I'm aware of a bug. I'm trying to figure it out and fix it. bare with me πŸ€— It is what's causing things to "stall" and to have to "restart". Sorry 😞
@@twtxt.net The fact that it has an SDK and process management is quite amazing g! 🀯
@movq No problems πŸ€—
@bender Haha 🀣
@kat Please git pull and rebuild πŸ˜‚ Off of main. I merged the catcher branch already!
@kat @xuu Recommend you git checkout main && git pull && make build. Few bug fixes πŸ˜„
@bender You're kind of right though πŸ˜„ It makes it more engaging IMO πŸ˜…
> "Monosyllabic replies" refers to responses that consist of a single syllable. These types of replies are typically brief and concise, often used in situations where a simple, direct answer is given. Examples include words like "Yes," "No," "Okay," or "Sure."

πŸ˜‚ Can I imply you're not interested in things like "LIke", "Report", etc?! πŸ˜‚
@bender I knew you wouldn't be interested in a Twtxt+ActivityPub πŸ˜‚ Now I have to go figure out what "monosyllabic replies" means 🀣
@movq Shall I add this to the spec I'm writing? ✍️
After yarnd v0.16 is released and the next round of specification updates are done and dusted, who wants me to have another crack at building Twtxt and activity pub integration support?
The reason I think this can work so well and I'm in full support of it is that it's the least disruptive way to resolve the issue of:

> where did this hash come from?
@movq I think we can make this work πŸ‘Œ As long as it's just a client hint.
@kat Should be fine πŸ™Œ
Otherwise assume normal behavior. Pretty easy to implement I think.
@movq If we're focusing on solving the "missing roots" problems. I would start to think about "client recommendations". The first recommendation would be:

1. Replying to a Twt that has no initial Subject must itself have a Subject of the form (hash; url).

This way it’s a hint to fetching clients that follow B, but not A (in the case of no mentions) that the Subject/Root might (very likely) is in the feed url.
@bender Fuck I meant "bugs" 🐞 Geez πŸ™„
@kat Unless you've found buds in this branch it should be fine πŸ˜† Um running yhe dame!
@movq Lwt me think on this.
@kat Nope it's totally fine πŸ€—
@kat No new peers shoyls show up automatically.
@sorenpeter You're welcome πŸ€— We'll run into each other again. I'm sure! 🀞
@kat Well some! πŸ™Œ
@thecanine Yeah this is where I think all the _hype_ really falls down. It's all just a really really expensive search engine and auto-complete πŸ€¦β€β™‚οΈ That's it!
@kat MinIO is a good choice for a self-hosted Object Storage (_compatible with S3 APIs_) πŸ‘Œ
@kat Don't be nervous, I make sure I test the shitβ„’ out of things before anyone else does 🀣
Hello @Yarn.social πŸ‘‹ (_testing something_)
@thecanine Sorry, but you were expecting what now?! 🀣
I also fundamentally do not believe in the notion that Twtxt should be readable and writable by humans. We've thrown this "argument" around in support of some of the proposals, and I just don't buy it (_sorry_). As an analogy, nobody writes Email by hand and transmits them to mail servers vai SMTP by hand. We use tools to do this. Twtxt/Yarn should be the same IMO.
@eapl.me I honestly believe you are overreacting here a little bit 🀣 I completely emphasize with you, it can be pretty tough to feel part of a community at times and run a project with a kind of "democracy" or "vote by committee". But one thing that life has taught me about open source projects and especially decentralised ecosystems is that this doesn't really work.

It isn't that I've not considered all the other options on the table (_which can still be_), it's just that I've made a decision as the project lead that largely helped trigger a rebirth of the use of Twtxt back in July 1 2020. There are good reasons not to change the threading model right now, as the changes being proposed are quite disruptive and don't consider all the possible things that _could_ go wrong.
@bender ROFL 🀣
@bender How does it work? πŸ€”
LOL Amazon displaying tariff prices "hostile and political," White House say is this the kettle calling the pot black? 🀣 Trump, pfft, what a fucking idiot. No clue how economies work, let alone countries.
@bender You guessed right 🀣
@bender LOL how would I have guessed that?! 🀣
@javivf 12 Hlirs without power? 🧐 Where do you reside?! 🀣
@lyse likewise I don't have the energy for a fundamental shift in any of our specifications that would inevitably cause a lot of toil and try and change in our clients implementations and unforeseen problems that we haven't really fully understood:
@movq At this point someone needs to make a decision 🀣 @bender keeps reminding me of thatπŸ˜