# 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 60780
# self = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=60680
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=60580
@bender Which one?
@movq LOL ๐Ÿคฃ I don't think I could ever take Rust seriaujly ๐Ÿคฆโ€โ™‚๏ธ
@bender @aelaraji Sorry this was my fault ๐Ÿคฆ For whatever reason my pod had never seen that particular Twt from @movq -- And... There's a bit of a "behavioral" problem with the Trusted Peers functionality that means operators have to periodically re-trust peers manually ๐Ÿ˜ญ Need to rework this ๐Ÿคž
@starletvania Yes this thing is on ๐Ÿ˜…
@movq Bahahahaha ๐Ÿคฃ
@movq So no Mosaic support either? ๐Ÿคฃ
I'm finding this very interesting... An evolved neural network that plays the game of tic-tac-toe and so far is a pretty decent player. Here is a visualization of it's evolved "brain" that underwent GA (_genetic algorithm_) training with classification learning + self-play.
@kat That would be cool! ๐Ÿ˜Ž
@bender Well it's really just for other fellow humans that _might_ not know better and what Microsoft does with your hardโ„ข work ๐Ÿคฃ
No Github

> Please don't upload my code on Github!

I'm thinking about putting this up on all my projects and even on the front page of my Gitea instance ๐Ÿค”
For context, this is a funny
Interaction between an engineer and copilot on Microsoft's core programming Language ๐Ÿคฃ๐Ÿคฏ
https://github.com/dotnet/runtime/pull/115733
Fuck ๐Ÿคฃ Building and learning about machine learning and evolutionary processes is hardโ„ข ๐Ÿคฃ

prologic@JamessMacStudio
Sun May 25 21:44:41
~/tmp/neurog
 (main) 130
$ go build ./cmd/ttt/... && ./ttt
Generation  27 | Fitness: 0.486111 | Nodes: 44  | Conns: 82


... experimenting with building and training a tic-tac-toe game, which evolves a. neural net that learn to paly the game against the best evolved champions ๐Ÿ˜…
@kat Authelia is great ๐Ÿ‘Œ Nice choice! ๐Ÿ™Œ
@bender ๐Ÿ˜‚
Ultimately, Go sits in the sweet spot on the complexity vs performance chart:

- Minimal syntax & concepts โ†’ low learning curve
- Compiled speed โ†’ high throughput
- Built-in CSP concurrency โ†’ scalable by default

See Rob Pyke's presentation on Expressiveness of Go
One of the nicest things about Go is the language itself, comparing Go to other popular languages in terms of the complexity to learn to be proficient in:

* Go: 25 keywords ([Stack Overflow][1]); CSP-style concurrency (goroutines & channels)
* Python 2: 30 keywords ([TutorialsPoint][2]); GIL-bound threads & multiprocessing ([Wikipedia][3])
* Python 3: 35 keywords ([Initial Commit][4]); GIL-bound threads, asyncio & multiprocessing ([Wikipedia][3], [DEV Community][5])
* Java: 50 keywords ([Stack Overflow][1]); threads + java.util.concurrent ([Wikipedia][6])
* C++: 82 keywords ([Stack Overflow][1]); std::thread, atomics & futures ([en.cppreference.com][7])
* JavaScript: 38 keywords ([Stack Overflow][1]); single-threaded event loop & async/await, Web Workers ([Wikipedia][8])
* Ruby: 42 keywords ([Stack Overflow][1]); GIL-bound threads (MRI), fibers & processes ([Wikipedia][3])

[1]: https://stackoverflow.com/questions/4980766/reserved-keywords-count-by-programming-language?utm_source=chatgpt.com "Reserved keywords count by programming language?"
[2]: https://www.tutorialspoint.com/What-are-Reserved-Keywords-in-Python?utm_source=chatgpt.com "Reserved Keywords in Python - Online Tutorials Library"
[3]: https://en.wikipedia.org/wiki/Global_interpreter_lock?utm_source=chatgpt.com "Global interpreter lock"
[4]: https://initialcommit.com/blog/python-reserved-words?utm_source=chatgpt.com "Python Reserved Keywords (Full List) - Initial Commit"
[5]: https://dev.to/sreeni5018/understanding-pythons-gil-and-enhancing-concurrency-with-multithreading-multiprocessing-and-5g1e?utm_source=chatgpt.com "Understanding Pythonโ€™s GIL and Enhancing Concurrency with ..."
[6]: https://en.wikipedia.org/wiki/Java_concurrency?utm_source=chatgpt.com "Java concurrency - Wikipedia"
[7]: https://en.cppreference.com/w/cpp/thread?utm_source=chatgpt.com "Concurrency support library (since C++11) - cppreference.com"
[8]: https://en.wikipedia.org/wiki/JavaScript?utm_source=chatgpt.com "JavaScript"*
@bender Here's a short-list:

- Simple, minimal syntaxโ€”master the core in hours, not months.
- CSP-style concurrency (goroutines & channels)โ€”safe, scalable parallelism.
- Blazing-fast compiler & single-binary deploysโ€”zero runtime dependencies.
- Rich stdlib & built-in tooling (gofmt, go test, modules).
- No heavy frameworks or hidden magicโ€”unlike Java/C++/Python overhead.
@bender What's not to like? ๐Ÿ˜…
@bender There is no aim. Just learning ๐Ÿ˜… That way I can actually speak and write with authority when it comes to these LLM(s) a bit more ๐Ÿคฃ Or maybe I just happen to become that random weirdo genius that invents Skynetโ„ข ๐Ÿ˜‚
This is one of my attempts:


$ go build ./cmd/xor/... && ./xor
Generation  95 | Fitness: 0.999964 | Nodes: 9   | Conns: 19
Target reached!

Best network performance:
  [0 0] โ†’ got=0 exp=0 (raw=0.000) โœ…
  [0 1] โ†’ got=1 exp=1 (raw=0.990) โœ…
  [1 0] โ†’ got=1 exp=1 (raw=0.716) โœ…
  [1 1] โ†’ got=0 exp=0 (raw=0.045) โœ…
Overall accuracy: 100.0%
Wrote best.dot โ€“ render with `dot -Tpng best.dot -o best.png`
Over the past few weeks I've been experimenting with and doing some deep learning and researching into neutral networks and evolutionary adaptation of them. The thing is I haven't gotten very far. I've been able to build two different approaches so far with limited results. The frustrating part is that these things are so "random" it isn't even funny. Like I can't even get a basic ANN + GA to evolve a network that solves the XOR pattern every time with high levels of accuracy. ๐Ÿ˜ž
@sorenpeter Also not very readable. Quite cryptic really ๐Ÿ˜… I have no idea how this works ๐Ÿคฆโ€โ™‚๏ธ
> My vision with this newsletter is to have a slower medium for communicating about my art as well as ideas and projects I'm working on regarding how we can use digital technology to our own benefits instead of being exploited by big tech.

Twtxt not sloe enough for you? ๐Ÿคฃ
@thecanine I _think_ I know what you mean now.
@sorenpeter What will you be writing about? What's your target audience? ๐Ÿค”
@bender Appreicate it ๐Ÿ™
https://youtu.be/1GN3xBuAgrI?si=ezBYJeSOFgtBdjEu -- Can someone please just fire Trump already? What a fucking idiot?! The man is a lunatic ๐Ÿคฆโ€โ™‚๏ธ
@thecanine I admit I'm a little unclear of your position. What do you mean by "not the right approach"? What's your position here? ๐Ÿค” -- I have a funny feeling we _actually_ algin, just getting our wires all mixed up in communicating it ๐Ÿคฃ
Hey y'all ๐Ÿ‘‹ I am told my "participation" is drastically down of ,ate So sorry ๐Ÿ˜ž Busy quite a busy few weeks at work with a reorg and lots of complex things happening in real live too ๐Ÿ˜… -- Hope everything is doing well ๐Ÿค—
@bender Haha well said ๐Ÿคฃ
The only true way to write is full of typos, spelling mistakes and gramatical errors right? ๐Ÿ˜…
@bender Bahaha ๐Ÿคฃ
@thecanine @movq So I _actually_ agree with you! I _think_ Dustin is taking a bit of a "deep and dark" path here (_depression_), and there are many parallels to other types of activities that we can all talk to. "AI" or "LLM"(s) here should be no different. Use them, Don't use them. I don't really see how it takes away our creativity or critical thinking.
@movq I'm more worried about Dustin Curtis's take on Thoughts on Thinking piece ๐Ÿค” It's a worrying time we're facing, where all human creativity, critical thinking and having to "think" at all just goes out the window ๐ŸชŸ wow ๐Ÿคฏ
@kat I kind of need some more details if you can. Logs, observations anything! Please ๐Ÿ™
@movq I mean are you surprised? ๐Ÿ˜ฎ
@kat Watching your vlog right now ๐Ÿ˜…
@kat Hmmmm? ๐Ÿค”
@kat I just got a bit bored ๐Ÿฅฑ
@kat Haha I did that for a couple of days last week ๐Ÿคฃ What was I doing you ask?! ๐Ÿ˜… Studying and learning how Artificial Neural Networks with Evolutionary Adaptation work ๐Ÿคฃ
@aelaraji Cool! ๐Ÿ˜Ž Mind joining the same IRC space? ๐Ÿ™
Honestly for these types of services, there probably isn't much point, as the layer4 module in Caddy doesn't do inspection/filtering anyway I think? ๐Ÿค”
@bender It's still a straight-through to the Eris backend that itself uses a Let's Encrypt cert now. Haven't tried to also terminate TLS at the Edge yet.
@aelaraji Seems to be fine ๐Ÿ™Œ
@bender basically because we don't readily use or support range hunters when requesting feeds it's ideal to keep feed small for the time being at least until we think about writing up a formal specification for this, but it's also only for Http hosted feeds
@lyse Very pretry and so sharp! ๐Ÿ‘Œ
@movq You reckon that's a real possibility? ๐Ÿค”
@kat It would right ๐Ÿ˜…
@bender 5, 4, 3, 2, 1 ๐Ÿคฃ
@bender I normally don't myself either, but that saide, I _think_ that's kind of @movq's point right? This new unauthenticated rate limit is absurd! ๐Ÿ˜ฑ You may as well just fucking 403 Forbidden and be done with it ๐Ÿคฃ
@bender Basically the way I'm reading this is 1 RPM. This is a rather aggressive rate limit actually. This basically makes Github inaccessible and useless for basically anything unless you're logged in. You can basically kiss "pursuing" casually, anonymously goodbye.

Imagine if I imposed that kind of rate limit on twtxt.net?! ๐Ÿคฃ
@movq Also the so-called "deadline" isn't set it stone. We're all busy people with day jobs and lives, so we may have to move it anyway ๐Ÿ˜…
This โ˜๏ธ
@xuu Good point! What did you have in mind? ๐Ÿ™
@lyse No not yet!
@bender Good , glad you agree ๐Ÿ‘
I'm also thinking of adding eye-off icon next to every Twt that, when clicked, hides that feed (tooltip: "Hide this feed"). This would work with the filters as a "temporary additive filter" to restrict/control the current view.
I'm thinking of bringing back filters (_this time not as a feature flag, just baked in_): New filters: Hide Feed, Hide Bots, Hide News, Media Only, No Replies, Local Only โ€” toggle to trim noise & surface the Twts you care about.
@javivf Sorry. ๐Ÿ˜‚ Meet me on IRC at irc.mills.io in #edgeguard ๐Ÿ‘Œ I'm @james there ๐Ÿ˜…
@bender Haha fine ๐Ÿคฃ
@javivf Hit me up on IRC or something and we'll get started ๐Ÿ‘Œ
Farrrk me Google search is and these days. Will they please "fuck off" with this Gemini AI garbage at the top that takes forever and is distracting as shitโ„ข ๐Ÿ’ฉ Fark me ๐Ÿคฆโ€โ™‚๏ธ #Google #Search #Sucks #AI #Gemini
@movq Yeah I _actually_ use sift a lot these days for most "searching" -- at least code and text searching. For finding files by name I still use find | grep.
@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 ๐Ÿค”