# 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 61083
# self = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=37091
# next = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=37191
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=36991
@abucci I guess my only thought that comes to mind:

> Being drunk is not an excuse

Hmmm
@abucci I guess my only thought that comes to mind:

> Being drunk is not an excuse

Hmmm
@marado Hey ! πŸ‘‹ Good question! Right now the default fetch interval is 5m and I _believe_ there is a hard-coded minimum of 1m:


$ yarnd --help 2>&1 | grep interval
      --fetch-interval string         cache fetch interval (how often to update feeds) in cron syntax (https://pkg.go.dev/github.com/robfig/cron) (default "@every 5m")


However, Pods actually also utilise WebSub between each other to subscribe to each other's feeds. So fetches _can_ be near real-time without having to have an aggressive fetch interval.

We should have promoted the WebSub feature in the recent v0.15.x release but I forgot to πŸ˜…

Add websub to your "Operational Features" in the Web UI or --enable-feature websub until we do:


$ yarnd --help 2>&1 | grep feature
      --enable-feature feature        enable the named feature


Also, thanks for your PR! πŸ™
@marado Hey ! πŸ‘‹ Good question! Right now the default fetch interval is 5m and I _believe_ there is a hard-coded minimum of 1m:


$ yarnd --help 2>&1 | grep interval
      --fetch-interval string         cache fetch interval (how often to update feeds) in cron syntax (https://pkg.go.dev/github.com/robfig/cron) (default "@every 5m")


However, Pods actually also utilise WebSub between each other to subscribe to each other's feeds. So fetches _can_ be near real-time without having to have an aggressive fetch interval.

We should have promoted the WebSub feature in the recent v0.15.x release but I forgot to πŸ˜…

Add websub to your "Operational Features" in the Web UI or --enable-feature websub until we do:


$ yarnd --help 2>&1 | grep feature
      --enable-feature feature        enable the named feature


Also, thanks for your PR! πŸ™
@tkanos @abucci and @xuu can fill you in 🀣 I really must get to sleep now 😴
@tkanos @abucci and @xuu can fill you in 🀣 I really must get to sleep now 😴
So my thinking so far is:

- We build a /api/v1/admin/delete API endpoint which takes {"hash": <hash>} as JSON input.
- We build a yarnc admin delete <hash> sub-command (start a new sub-command group)

Which would delete a Twt by hash from the Pod's archive and blacklist it (as it could come back from other pods via the Converge logic).

This _would_ require manual operations to be performed by one or more cooperating / participating Pod operators in the network. And I _think_ this would have to end up being a "culture" we build upon where we agree when incidents that require this happen, that we get together in some way to cooperatively agree on a Twt deletion.

A similar set of tools would have to be built for the Twtxt Search engine too, although I would probably do this by hand for now as it does not peer with pods and therefore has no way to bring back Twts from the dead from a convergence logic that yarnd has.
So my thinking so far is:

- We build a /api/v1/admin/delete API endpoint which takes {"hash": <hash>} as JSON input.
- We build a yarnc admin delete <hash> sub-command (start a new sub-command group)

Which would delete a Twt by hash from the Pod's archive and blacklist it (as it could come back from other pods via the Converge logic).

This _would_ require manual operations to be performed by one or more cooperating / participating Pod operators in the network. And I _think_ this would have to end up being a "culture" we build upon where we agree when incidents that require this happen, that we get together in some way to cooperatively agree on a Twt deletion.

A similar set of tools would have to be built for the Twtxt Search engine too, although I would probably do this by hand for now as it does not peer with pods and therefore has no way to bring back Twts from the dead from a convergence logic that yarnd has.
@will Several of us in the community that run/manage pods (some single-user, others multi-user like my own at twtxt.net) got together and discussed this incident. We have agreed that this is in violation of the Yarn.social _default_ Abuse Policy that is applicable to all pods (by default) including my pod's abuse policy.

Therefore I have gone and deleted that Twt out of your feed (by hand). As I have no way to contact you (as you provide very little information on your Profile or any way to contact you) I've had to take this action without your prior consent.

Please understand that our goals for Yarn.social is to build and maintain a positive culture for as long as we possibly can. Thanks! πŸ™
@will Several of us in the community that run/manage pods (some single-user, others multi-user like my own at twtxt.net) got together and discussed this incident. We have agreed that this is in violation of the Yarn.social _default_ Abuse Policy that is applicable to all pods (by default) including my pod's abuse policy.

Therefore I have gone and deleted that Twt out of your feed (by hand). As I have no way to contact you (as you provide very little information on your Profile or any way to contact you) I've had to take this action without your prior consent.

Please understand that our goals for Yarn.social is to build and maintain a positive culture for as long as we possibly can. Thanks! πŸ™
@tkanos Fair enough πŸ‘Œ
@tkanos Fair enough πŸ‘Œ
@tkanos Thanks! πŸ™
@tkanos Thanks! πŸ™
@abucci Hmmm, please jump on Salty Chat with me. I'd like to talk to you about this πŸ™
@abucci Hmmm, please jump on Salty Chat with me. I'd like to talk to you about this πŸ™
Thanks to some feedback from @autiomaa I put up @Yarn feed and an example section on the Yarn.social landing page. Hopefully that makes things pretty easy and straight forward for new-comers (as was the feedback) πŸ€”
Thanks to some feedback from @autiomaa I put up @Yarn feed and an example section on the Yarn.social landing page. Hopefully that makes things pretty easy and straight forward for new-comers (as was the feedback) πŸ€”
There _has_ to be a reasonable explanation here...
There _has_ to be a reasonable explanation here...
@akoizumi I _really_ don't get it. You are building from source right? πŸ€” All up-to-date? On the same SHA as you see on https://git.mills.io/yarnsocial/yarn ? πŸ€” Maybe try rebuilding the binary? πŸ€”
@akoizumi I _really_ don't get it. You are building from source right? πŸ€” All up-to-date? On the same SHA as you see on https://git.mills.io/yarnsocial/yarn ? πŸ€” Maybe try rebuilding the binary? πŸ€”
@abucci Thanks! πŸ€—
@abucci Thanks! πŸ€—
@abucci So technically "yes" πŸ˜…
@abucci So technically "yes" πŸ˜…
Apparently I can't write shell scripts very well late at night πŸ€¦β€β™‚οΈ Here's the fixed include plugin for zs:


#!/bin/sh

if [ ! $# = 1 ]; then
  printf "Usage: %s <file>\n" "$(basename "$0")"
  exit 0
fi

if [ -f "$1" ]; then
  cat "$1"
else
  echo "error: file not found $1"
fi


Sorry πŸ˜…
Apparently I can't write shell scripts very well late at night πŸ€¦β€β™‚οΈ Here's the fixed include plugin for zs:


#!/bin/sh

if [ ! $# = 1 ]; then
  printf "Usage: %s <file>\n" "$(basename "$0")"
  exit 0
fi

if [ -f "$1" ]; then
  cat "$1"
else
  echo "error: file not found $1"
fi


Sorry πŸ˜…
Apparently I can't write shell scripts very well late at night πŸ€¦β€β™‚οΈ Here's the fixed include plugin for zs:


#!/bin/sh

if [ ! $# = 1 ]; then
  printf "Usage: %s <file>\\n" "$(basename "$0")"
  exit 0
fi

if [ -f "$1" ]; then
  cat "$1"
else
  echo "error: file not found $1"
fi


Sorry πŸ˜…
@akoizumi Can you reproduce it on my pod? Because I can't πŸ€”
@akoizumi Can you reproduce it on my pod? Because I can't πŸ€”
Please help me fix this πŸ™
Please help me fix this πŸ™
@akoizumi But are you using any custom templates? Forked version? Or something? There is no way to get this error I don't think unless your templates are somehow messed up or out-of-date Hmmm πŸ€”
@akoizumi But are you using any custom templates? Forked version? Or something? There is no way to get this error I don't think unless your templates are somehow messed up or out-of-date Hmmm πŸ€”
πŸ’‘ Pro zs Tip: Need a way to include "dynamic" content or other files? Here's a simple "include" plugin you can use:


$ cat .zs/include.sh
#!/bin/sh

if [ ! $# = 1 ]; then
  printf "Usage: %s <file>\n" "$(basename "$0")"
  exit 0
fi

fn="${ZS_OUTDIR}/$1"

if [ -f "${ZS_OUTDIR}/$1" ]; then
  cat "${ZS_OUTDIR}/$1"
else
  echo "error: file not found ${ZS_OUTDIR}/$1"
fi


Usage: {{ include.sh twtxt.txt }} (as used by the Yarn.social site and to include a full-example feed in the "Manually" section (Thanks to @autiomaa for this feedback! πŸ™‡β€β™‚οΈ) #Yarn.social #zs #static-site #static-site-generator
πŸ’‘ Pro zs Tip: Need a way to include "dynamic" content or other files? Here's a simple "include" plugin you can use:


$ cat .zs/include.sh
#!/bin/sh

if [ ! $# = 1 ]; then
  printf "Usage: %s <file>\n" "$(basename "$0")"
  exit 0
fi

fn="${ZS_OUTDIR}/$1"

if [ -f "${ZS_OUTDIR}/$1" ]; then
  cat "${ZS_OUTDIR}/$1"
else
  echo "error: file not found ${ZS_OUTDIR}/$1"
fi


Usage: {{ include.sh twtxt.txt }} (as used by the Yarn.social site and to include a full-example feed in the "Manually" section (Thanks to @autiomaa for this feedback! πŸ™‡β€β™‚οΈ) #Yarn.social #zs #static-site #static-site-generator
πŸ’‘ Pro zs Tip: Need a way to include "dynamic" content or other files? Here's a simple "include" plugin you can use:


$ cat .zs/include.sh
#!/bin/sh

if [ ! $# = 1 ]; then
  printf "Usage: %s <file>\\n" "$(basename "$0")"
  exit 0
fi

fn="${ZS_OUTDIR}/$1"

if [ -f "${ZS_OUTDIR}/$1" ]; then
  cat "${ZS_OUTDIR}/$1"
else
  echo "error: file not found ${ZS_OUTDIR}/$1"
fi


Usage: {{ include.sh twtxt.txt }} (as used by the Yarn.social site and to include a full-example feed in the "Manually" section (Thanks to @autiomaa for this feedback! πŸ™‡β€β™‚οΈ) #Yarn.social #zs #static-site #static-site-generator
@eaplmx Yes.
@eaplmx Yes.
@tkanos Hmm not a big fan of "frameworks"... I quite like the simplicity of: stretchr/testify: A toolkit with common assertions and mocks that plays nicely with the standard library -- I use it in all my projects πŸ‘Œ
@tkanos Hmm not a big fan of "frameworks"... I quite like the simplicity of: stretchr/testify: A toolkit with common assertions and mocks that plays nicely with the standard library -- I use it in all my projects πŸ‘Œ
LOL I actually don't consider Traefik to be shit at all in my Docker Swarm environment πŸ˜‚
LOL I actually don't consider Traefik to be shit at all in my Docker Swarm environment πŸ˜‚
@lyse Nan those are some awesome sunrise s! πŸ‘Œ
@lyse Nan those are some awesome sunrise s! πŸ‘Œ
@akoizumi Wait... Are you using a custom theme?! πŸ€¦β€β™‚οΈ
@akoizumi Wait... Are you using a custom theme?! πŸ€¦β€β™‚οΈ
@eaplmx Thanks man! πŸ€—
@eaplmx Thanks man! πŸ€—
Teying to make Traefik behave like this is actually quite hard. It's easier to have another service with a lower priority catch-all.
Teying to make Traefik behave like this is actually quite hard. It's easier to have another service with a lower priority catch-all.
@justamoment Juat good luck πŸ˜‚
@justamoment Juat good luck πŸ˜‚
@lyse I shall try πŸ€—
@lyse I shall try πŸ€—
Very excited to start my new role as Principal Engineer in the SRE space at ANZ this week πŸ‘Œ Lots of cool stuff happening and a lot of my favourite tech, including Go!
Very excited to start my new role as Principal Engineer in the SRE space at ANZ this week πŸ‘Œ Lots of cool stuff happening and a lot of my favourite tech, including Go!
@movq I don't mind maintaining programs. It sure beats trying to relearn different condifuration systems and software πŸ˜†

I'm a lazy sysadmin -- In fact I stopped doing this "sysadmi " shit yeats ago πŸ˜†
@movq I don't mind maintaining programs. It sure beats trying to relearn different configuration systems and software πŸ˜†

I'm a lazy sysadmin -- In fact I stopped doing this "sysadmin " shit years ago πŸ˜†
@movq I don't mind maintaining programs. It sure beats trying to relearn different configuration systems and software πŸ˜†

I'm a lazy sysadmin -- In fact I stopped doing this "sysadmin " shit years ago πŸ˜†
I need my own Web Application Firewall (WAF) πŸ€”
I need my own Web Application Firewall (WAF) πŸ€”
Inside a US military cyber team’s defence of Ukraine - BBC News my neighbour shared this article with me today. Good to see the US Cyber Command defend the Ukraine from this pointless and illegal Russian war. #PutinsWar
Inside a US military cyber team’s defence of Ukraine - BBC News my neighbour shared this article with me today. Good to see the US Cyber Command defend the Ukraine from this pointless and illegal Russian war. #PutinsWar
[prologic/logger: HTTP middleware for Go that logs web requests to an io.Writer with support for additional fields and formats (Fork of https://github.com/unrolled/logger) - logger - Mills](https://git.mills.io/prologic/logger) For when you need a decent net/http logger for Go _with_ support for optionally logging the request Host header (_virtual hosts_) πŸ‘Œ
[prologic/logger: HTTP middleware for Go that logs web requests to an io.Writer with support for additional fields and formats (Fork of https://github.com/unrolled/logger) - logger - Mills](https://git.mills.io/prologic/logger) For when you need a decent net/http logger for Go _with_ support for optionally logging the request Host header (_virtual hosts_) πŸ‘Œ
@akoizumi Does it still repro on yarnd v0.15.1? I still can't repro here... 😒
@akoizumi Does it still repro on yarnd v0.15.1? I still can't repro here... 😒
Finally built and published a "Maintenance Server" service prologic/maintenance-server: Standalone maintenance server, serving a static "maintenance page" with a default message that the site is under maintenance. - maintenance-server - Mills that now means when I deploy and upgrade parts of my infra you now see a nice "Maintenance Page" instead of a "404 Not Found" (which is misleading) πŸ‘Œ Looks like this:
Finally built and published a "Maintenance Server" service prologic/maintenance-server: Standalone maintenance server, serving a static "maintenance page" with a default message that the site is under maintenance. - maintenance-server - Mills that now means when I deploy and upgrade parts of my infra you now see a nice "Maintenance Page" instead of a "404 Not Found" (which is misleading) πŸ‘Œ Looks like this:
@akoizumi Hmm not able to repro locally or on my pod. Can you post a link that throws this error? πŸ€”
@akoizumi Hmm not able to repro locally or on my pod. Can you post a link that throws this error? πŸ€”
@akoizumi Thanks... Looking πŸ‘€
@akoizumi Thanks... Looking πŸ‘€
Hey @nicolagi
Hey @nicolagi
Meow
Meow
@mckinley LOL 🀣
@mckinley LOL 🀣
@justamoment I agree just putting a pod behind a firewall and auth is simple enough πŸ‘Œ
@justamoment I agree just putting a pod behind a firewall and auth is simple enough πŸ‘Œ
That's okay πŸ€—
That's okay πŸ€—
@lyse Ahh Thanks!
@lyse Ahh Thanks!
@abucci Ahh right. So Elon Musk's true colours are coming through more and more... Hmmm πŸ€” Has he always been like this? Or is it just being more exposed and brought to the surface because of his "successes" in life/business? πŸ€”
@abucci Ahh right. So Elon Musk's true colours are coming through more and more... Hmmm πŸ€” Has he always been like this? Or is it just being more exposed and brought to the surface because of his "successes" in life/business? πŸ€”
@abucci dear god πŸ€¦β€β™‚οΈ we really have learned nothing as a human species have we?! πŸ€¦β€β™‚οΈ
@abucci dear god πŸ€¦β€β™‚οΈ we really have learned nothing as a human species have we?! πŸ€¦β€β™‚οΈ
I gotta try and get into this MIDI / Live looping stuff. I love music! I've never tried to create music, but I sure as hell want to learn, maybe my programming experience can be transferred somewhat? πŸ€”

Quite a few artists that demo their stuff on Youtube seem to use a combination of these two devices:

- [AKAI - MPK mini MK3 - Google Search](https://www.google.com/search?q=AKAI - MPK mini MK3)
- [Novation - Launchpad Mini MK3 - Google Search](https://www.google.com/search?q=Novation - Launchpad Mini MK3)

And only a couple of hundred bucks for the gear it doesn't sound too expensive to even try πŸ€” #Music #MIDI #LiveLoop
I gotta try and get into this MIDI / Live looping stuff. I love music! I've never tried to create music, but I sure as hell want to learn, maybe my programming experience can be transferred somewhat? πŸ€”

Quite a few artists that demo their stuff on Youtube seem to use a combination of these two devices:

- [AKAI - MPK mini MK3 - Google Search](https://www.google.com/search?q=AKAI - MPK mini MK3)
- [Novation - Launchpad Mini MK3 - Google Search](https://www.google.com/search?q=Novation - Launchpad Mini MK3)

And only a couple of hundred bucks for the gear it doesn't sound too expensive to even try πŸ€” #Music #MIDI #LiveLoop
[Lay Low- Neon Vines (Live Looping with MPC X and Seaboard Rise 49) - YouTube](https://www.youtube.com/watch?v=7DqqeQSYTJQ) -- Check this gal out and her really nice music, all on her own 😳 🎢 Very nice stuff! πŸ‘Œ
[Lay Low- Neon Vines (Live Looping with MPC X and Seaboard Rise 49) - YouTube](https://www.youtube.com/watch?v=7DqqeQSYTJQ) -- Check this gal out and her really nice music, all on her own 😳 🎢 Very nice stuff! πŸ‘Œ
@abucci Sorry but excuse my ignorance, but what exactly is the "N" word? Is it what I _think_ it is (given the U.S context)? πŸ€”
@abucci Sorry but excuse my ignorance, but what exactly is the "N" word? Is it what I _think_ it is (given the U.S context)? πŸ€”
@movq Yeah I agree! πŸ‘Œ Speaking of which... If you have any recent stuff you've done, please do share πŸ™ I remember many moon sago you shared a nice bass piece which I quite liked πŸ‘Œ
@movq Yeah I agree! πŸ‘Œ Speaking of which... If you have any recent stuff you've done, please do share πŸ™ I remember many moon sago you shared a nice bass piece which I quite liked πŸ‘Œ
@abucci Yeah, that's for sure πŸ‘Œ But please keep the ideas and suggestions coming! πŸ™