# 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 235518
# self = https://watcher.sour.is?offset=228293
# next = https://watcher.sour.is?offset=228393
# prev = https://watcher.sour.is?offset=228193
thanks man!!! love seeing ppl use gopher -@levelsio
What's the alternative, plow straight through them? lol
happy 2025
@aelaraji Ta! It's just the millenia old tabs vs. spaces debate. ;-) Here's a screenshot, that also kinda serves as a preview of the ugly – yet functional – web interface:

Twtxt Feed Validator reporting two errors
hmm... apparently the invalid twts are the latest ones I'd posted from Timeline but highly probably because I'd tried to restore them manually, after _unintentionally_ overriding my twtxt file with one that was out of date 🤦
hmm... apparently the invalid twts are the latest ones I'd posted from Timeline but highly probably because I'd tried to restore them manually, after _unintentionally_ overriding my twtxt file with one that was out of date 🤦
radiant blood | https://nilfm.cc/radiant_blood.html
december adventure 2024 | https://nilfm.cc/decadv_2024.html
@bender Magnetic-core memory. SCNR.
@ (that is targeted only at me. i do not shower enough. exposing myself)
@ (that is targeted only at me. i do not shower enough. exposing myself)
@ though i feel like this doesn't need to be said because if anyone is that pretty they are not a self hoster because they regularly shower
@ though i feel like this doesn't need to be said because if anyone is that pretty they are not a self hoster because they regularly shower
in case anyone here has the impression that the girl in my icon is me, somehow, no it's a k-pop girl her name is wonyoung and she is the prettiest girl alive
in case anyone here has the impression that the girl in my icon is me, somehow, no it's a k-pop girl her name is wonyoung and she is the prettiest girl alive
rose put crack in apt because jesus christ i just find myself mindlessly chanting "apateu apateu" under my breath at the most random times. some brain programming shit
rose put crack in apt because jesus christ i just find myself mindlessly chanting "apateu apateu" under my breath at the most random times. some brain programming shit
i've been transitioning CLI text editors from nano (godforsaken editor) to micro (normal and not overly opinionated to the point where i feel like i'm defusing a bomb trying to learn its keybindings) and the only weird thing is that i can't get it to persist an alias from nano to micro when i run sudo despite me configuring that. well at least on my servers, it persists on this machine. idk i'll look at it later
i've been transitioning CLI text editors from nano (godforsaken editor) to micro (normal and not overly opinionated to the point where i feel like i'm defusing a bomb trying to learn its keybindings) and the only weird thing is that i can't get it to persist an alias from nano to micro when i run sudo despite me configuring that. well at least on my servers, it persists on this machine. idk i'll look at it later
posting from CLI just cuz i can lalalala i have nothing to talk about
posting from CLI just cuz i can lalalala i have nothing to talk about
i love posting to my own personal youtube site i can just do whatever tf i want. no content ID here just vibes and finger crossing that i don't get a cease and desist one day
i love posting to my own personal youtube site i can just do whatever tf i want. no content ID here just vibes and finger crossing that i don't get a cease and desist one day
@lyse Oh! no need to be sorry and feel free to keep at it if it helps, I don't mind. It's just that I'm always on the lookout for corpo-bots and crawlers slipping through the cracks (a fun little game of sorts) 😅 the only thing I let them see is a robots.txt telling them to :diffoff

Also, I'm curious about the invalid lines in my feed. is it something I should lookout for in future?
@lyse Oh! no need to be sorry and feel free to keep at it if it helps, I don't mind. It's just that I'm always on the lookout for corpo-bots and crawlers slipping through the cracks (a fun little game of sorts) 😅 the only thing I let them see is a robots.txt telling them to :diffoff

Also, I'm curious about the invalid lines in my feed. is it something I should lookout for in future?
owow. Gopher is still here!
That graph doesn’t look that bad. I mean, by the looks of it, I wouldn’t even qualify it as a DDoS. 😅
@movq I am sure they would have been just fine. Should we assume your main driving machine is on solid state?
This Simon Willison’s post is a good read: https://simonwillison.net/2024/Dec/31/llms-in-2024/. If you haven’t read it, and are negatively or positively thinking of the so called AI, then you should.

There is more at Simon’s blog. It is worth spending some time in it.
@ after some fighting with this janky software (that i still love despite the jank) we now have stupid tux as our logo. slayyy
@ after some fighting with this janky software (that i still love despite the jank) we now have stupid tux as our logo. slayyy
changing my video site's logo to this silly no thoughts head empty tux clip art. because i can. https://openclipart.org/detail/103855/tux-the-penguin
changing my video site's logo to this silly no thoughts head empty tux clip art. because i can. https://openclipart.org/detail/103855/tux-the-penguin
@prologic What are we looking at here? Are those requests per second? 🤔
@prologic What are we looking at here? Are those requests per second? 🤔
@prologic What are we looking at here? Are those requests per second? 🤔
@prologic What are we looking at here? Are those requests per second? 🤔
@lyse @kat Thanks. 😅 Fingers crossed.
@lyse @kat Thanks. 😅 Fingers crossed.
@lyse @kat Thanks. 😅 Fingers crossed.
@lyse @kat Thanks. 😅 Fingers crossed.
[47°09′44″S, 126°43′49″W] Wind speed: 67kph
@movq oh no good luck!!!
@movq oh no good luck!!!
On DDoS, wouldn’t sshguard and/or fail2ban work?
It seems like this is cached, I think levels is doing good work with this.
Hell0 here
Happy to find this secret place on the gopherspace
It turns out my ISP supports ipv6. After 4-5 months with only ipv4, I thought to ask customer support, and they told me how to turn it on. (I'm pretty happy with ebox so far. Low-priced fibre with no issues so far. Though all my traffic goes through Montreal, 500km away from me in Toronto, which adds a few ms to network latency.)
[47°09′17″S, 126°43′48″W] Automatic systems disengaged due to heavy rain
So I need to figure out how to block ASN(s)...

Additionally, I' thinking of; How to detect DDoS attachs?

Here's one way I've come up that's quite simple:

> Detecting DDoS attacks by tracking requests across multiple IPs in a sliding window. If total requests exceed a threshold in a given time, flag as potential DDoS.
So I need to figure out how to block ASN(s)...

Additionally, I' thinking of; How to detect DDoS attachs?

Here's one way I've come up that's quite simple:

> Detecting DDoS attacks by tracking requests across multiple IPs in a sliding window. If total requests exceed a threshold in a given time, flag as potential DDoS.
On my blog: 🍾 Happy Belated Calendar-Changing Day, 2025 🎆 https://john.colagioia.net/blog/2025/01/05/hny2025.html #holiday #newyear #publicdomain
https://tuxicoman.jesuislibre.net/2025/01/la-reconnaissance-vocale-sous-linux-2024.html speech note whisper translate
[47°09′43″S, 126°43′25″W] Working impossible due to thunderstorm
@movq Sweet!
Pinellas County - Long Run: 11.00 miles, 00:09:38 average pace, 01:46:02 duration
just one of those ones you never want to stop. it was dark, quiet, and lonely which just let me zone out with the cool weather and maintain what felt easy. didn't look at the watch until the end when it notified me it was going to die. adjusted the mileage and time to reflect.
#running
Pinellas County - Long Run: 11.00 miles, 00:09:38 average pace, 01:46:02 duration
just one of those ones you never want to stop. it was dark, quiet, and lonely which just let me zone out with the cool weather and maintain what felt easy. didn't look at the watch until the end when it notified me it was going to die. adjusted the mileage and time to reflect.
#running
Pinellas County - Long Run: 11.00 miles, 00:09:38 average pace, 01:46:02 duration
just one of those ones you never want to stop. it was dark, quiet, and lonely which just let me zone out with the cool weather and maintain what felt easy. didn't look at the watch until the end when it notified me it was going to die. adjusted the mileage and time to reflect.
#running
@lyse Cool 👌
@lyse Cool 👌
Hmmm so I've sustained two DDoS attacks on my Gitea server today. A few hours apar. Still analyzing the traffic...
Hmmm so I've sustained two DDoS attacks on my Gitea server today. A few hours apar. Still analyzing the traffic...
@movq Oh dear. All the best of luck with that noise! And the disks.
@movq I don't use them either.
In the process of temporarily removing and securing all my hard disks. They’ll be turning this building into a construction site for the next weeks/months. Lots of heavy drilling and hammering. Not sure what this means for spinning disks and I’d rather be on the safe side. 🫤
In the process of temporarily removing and securing all my hard disks. They’ll be turning this building into a construction site for the next weeks/months. Lots of heavy drilling and hammering. Not sure what this means for spinning disks and I’d rather be on the safe side. 🫤
In the process of temporarily removing and securing all my hard disks. They’ll be turning this building into a construction site for the next weeks/months. Lots of heavy drilling and hammering. Not sure what this means for spinning disks and I’d rather be on the safe side. 🫤
In the process of temporarily removing and securing all my hard disks. They’ll be turning this building into a construction site for the next weeks/months. Lots of heavy drilling and hammering. Not sure what this means for spinning disks and I’d rather be on the safe side. 🫤
@movq Thanks! I already found it and patched it to run in my ancient Python version (no match keyword and exec(…) only allows globals and locals as positional arguments). :-) https://lyse.isobeef.org/tmp/mcalc-patched.py.txt
@lyse That’s the script, if you’re interested: https://www.uninformativ.de/git/bin-pub/file/mcalc.html
@lyse That’s the script, if you’re interested: https://www.uninformativ.de/git/bin-pub/file/mcalc.html
@lyse That’s the script, if you’re interested: https://www.uninformativ.de/git/bin-pub/file/mcalc.html
@lyse That’s the script, if you’re interested: https://www.uninformativ.de/git/bin-pub/file/mcalc.html
@lyse Right, there is some hope left for Python docs because of the type hints. 😃 (I still don’t use them, because, ugh. 🤦)
@lyse Right, there is some hope left for Python docs because of the type hints. 😃 (I still don’t use them, because, ugh. 🤦)
@lyse Right, there is some hope left for Python docs because of the type hints. 😃 (I still don’t use them, because, ugh. 🤦)
@lyse Right, there is some hope left for Python docs because of the type hints. 😃 (I still don’t use them, because, ugh. 🤦)
@prologic Excellent, working fine now. Thank you!
To quote GLaDOS: Yesterday I saw a deer!

To quote GLaDOS: Yesterday I saw a deer!

To quote GLaDOS: Yesterday I saw a deer!

To quote GLaDOS: Yesterday I saw a deer!

@movq Truly classic. :-D
@movq That sounds super useful! I always used bc and ibase=2/obase=2 for conversions. But your digit grouping is what I always lacked. I gotta switch.
@movq Yeah, the Python docs are more like a book. They absolutely shine if you have no idea and read them from top to bottom. The tutorial is baked right in. But they don't work all that perfect as cheat sheets. I also remember looking for the return types way too long in the past.

I would have thought that this could be easily improved when type hints are in place. And it sure does: https://www.tornadoweb.org/en/stable/httpclient.html#tornado.httpclient.HTTPClient.fetch
@movq It's crazy! I thought about it the other day on my hike. There are so many shady areas in winter that are fully blasted by the sun in summer.
@movq Heck yeah, they're both very lovely! I like how you can still see the full disk through the clouds in the first one.
@kat Oh cool, I wish I had a similar subject in school. :-)
I cobbled that together yesterday, @aelaraji. Since I was too lazy to write some tests, I simply hit your feed as I knew it contains two invalid lines right now. Sorry mate! :-( Next thing is to actually write some proper tests, improve the messages, etc.

Here's the code: https://git.mills.io/yarnsocial/validator

Looking forward to that, @prologic. :-)
“We are...so far removed from the realities of production and work that we inhabit a dream world of artificial stimuli and televised experience.” 📀💩 Добре дошли в пост-дигиталното бъдеще
[47°09′10″S, 126°43′48″W] Automatic systems disengaged due to thunderstorm
For the time being... I've just blocked all of OpenAI(s) Bots. They (_thankfully_) publish a JSON endpoint that you can use to block all OpenAI crawlers from reaching your server (_in my case, blocking it at the edge_). Example:


proxy-1:~# curl -qs https://openai.com/gptbot.json | jq -r '.prefixes[].ipv4Prefix' | xargs -I{} ./block-ip.sh {}


Where block-ip.sh is simply:


#!/bin/sh

ufw insert 1 deny from "$1" to any
For the time being... I've just blocked all of OpenAI(s) Bots. They (_thankfully_) publish a JSON endpoint that you can use to block all OpenAI crawlers from reaching your server (_in my case, blocking it at the edge_). Example:


proxy-1:~# curl -qs https://openai.com/gptbot.json | jq -r '.prefixes[].ipv4Prefix' | xargs -I{} ./block-ip.sh {}


Where block-ip.sh is simply:


#!/bin/sh

ufw insert 1 deny from "$1" to any
@aelaraji Yes! 👏 This is exactly what it is! 🤣 I will of course soon™ be hosting this service, likely at validator.twtxt.net 😅😅
@aelaraji Yes! 👏 This is exactly what it is! 🤣 I will of course soon™ be hosting this service, likely at validator.twtxt.net 😅😅
Any idea What's this "twtxtfeevalidator/0.0.1" UA about? I thought I could ask before throwing a 1000GB file at it 🪤 could it be the same 'xt' thing @lyse was talking about the other day?
Any idea What's this "twtxtfeevalidator/0.0.1" UA about? I thought I could ask before throwing a 1000GB file at it 🪤 could it be the same 'xt' thing @lyse was talking about the other day?