how install gomodot? also.. @prologic@twtxt.net your domain has some pretty strong SEO mojo searching for install "gomodot" puts you on the google first page. 
@movq@uninformativ.de yeah.. i rewrote it a few times because i thought there was something breaking.. but was mistaken
though now i am seeing a weird cache corruption.. that seems to come and go.

PSA: DMs on social media sites are not truely PMs. This is why we have a separate tool for private messaging from yarn. Always remember, if you don’t own the infra (or the parts at the ends of e2e encryption) you don’t own the data. and the true owners can view it any way they want!
https://twitter.com/TinkerSec/status/1587040089057759235?t=At-8r9yJPiG6xF17skTxwA&s=19
see https://txt.sour.is/external?uri=https%3a%2f%2fsour.is%2ftiktok%2fAmerica%2fDenver.txt&nick=tictok

Hi, I am playing with making an event sourcing database. Its super alpha but I thought I would share since others are talking about databases and such.
It’s super basic. Using tidwall/wal as the disk backing. The first use case I am playing with is an implementation of msgbus. I can post events to it and read them back in reverse order.

I plan to expand it to handle other event sourcing type things like aggregates and projections.
Find it here: sour-is/ev
@prologic@twtxt.net @movq@www.uninformativ.de @lyse@lyse.isobeef.org
I don’t use social media anymore, mostly for privacy reasons, but one of the things I miss about it is being able to interact directly with creators I enjoy.

Connection Established!

#!/bin/sh
# Validate environment
if ! command -v msgbus > /dev/null; then
printf "missing msgbus command. Use: go install git.mills.io/prologic/msgbus/cmd/msgbus@latest"
exit 1
fi
if ! command -v salty > /dev/null; then
printf "missing salty command. Use: go install go.mills.io/salty/cmd/salty@latest"
exit 1
fi
if ! command -v salty-keygen > /dev/null; then
printf "missing salty-keygen command. Use: go install go.mills.io/salty/cmd/salty-keygen@latest"
exit 1
fi
if [ -z "$SALTY_IDENTITY" ]; then
export SALTY_IDENTITY="$HOME/.config/salty/$USER.key"
fi
get_user () {
user=$(grep user: "$SALTY_IDENTITY" | awk '{print $3}')
if [ -z "$user" ]; then
user="$USER"
fi
echo "$user"
}
stream () {
if [ -z "$SALTY_IDENTITY" ]; then
echo "SALTY_IDENTITY not set"
exit 2
fi
jq -r '.payload' | base64 -d | salty -i "$SALTY_IDENTITY" -d
}
lookup () {
if [ $# -lt 1 ]; then
printf "Usage: %s nick@domain\n" "$(basename "$0")"
exit 1
fi
user="$1"
nick="$(echo "$user" | awk -F@ '{ print $1 }')"
domain="$(echo "$user" | awk -F@ '{ print $2 }')"
curl -qsSL "https://$domain/.well-known/salty/${nick}.json"
}
readmsgs () {
topic="$1"
if [ -z "$topic" ]; then
topic=$(get_user)
fi
export SALTY_IDENTITY="$HOME/.config/salty/$topic.key"
if [ ! -f "$SALTY_IDENTITY" ]; then
echo "identity file missing for user $topic" >&2
exit 1
fi
msgbus sub "$topic" "$0"
}
sendmsg () {
if [ $# -lt 2 ]; then
printf "Usage: %s nick@domain.tld <message>\n" "$(basename "$0")"
exit 0
fi
if [ -z "$SALTY_IDENTITY" ]; then
echo "SALTY_IDENTITY not set"
exit 2
fi
user="$1"
message="$2"
salty_json="$(mktemp /tmp/salty.XXXXXX)"
lookup "$user" > "$salty_json"
endpoint="$(jq -r '.endpoint' < "$salty_json")"
topic="$(jq -r '.topic' < "$salty_json")"
key="$(jq -r '.key' < "$salty_json")"
rm "$salty_json"
message="[$(date +%FT%TZ)] <$(get_user)> $message"
echo "$message" \
| salty -i "$SALTY_IDENTITY" -r "$key" \
| msgbus -u "$endpoint" pub "$topic"
}
make_user () {
mkdir -p "$HOME/.config/salty"
if [ $# -lt 1 ]; then
user=$USER
else
user=$1
fi
identity_file="$HOME/.config/salty/$user.key"
if [ -f "$identity_file" ]; then
printf "user key exists!"
exit 1
fi
# Check for msgbus env.. probably can make it fallback to looking for a config file?
if [ -z "$MSGBUS_URI" ]; then
printf "missing MSGBUS_URI in environment"
exit 1
fi
salty-keygen -o "$identity_file"
echo "# user: $user" >> "$identity_file"
pubkey=$(grep key: "$identity_file" | awk '{print $4}')
cat <<- EOF
Create this file in your webserver well-known folder. https://hostname.tld/.well-known/salty/$user.json
{
"endpoint": "$MSGBUS_URI",
"topic": "$user",
"key": "$pubkey"
}
EOF
}
# check if streaming
if [ ! -t 1 ]; then
stream
exit 0
fi
# Show Help
if [ $# -lt 1 ]; then
printf "Commands: send read lookup"
exit 0
fi
CMD=$1
shift
case $CMD in
send)
sendmsg "$@"
;;
read)
readmsgs "$@"
;;
lookup)
lookup "$@"
;;
make-user)
make_user "$@"
;;
esac
One down! More to go.
BREAKING: Russian billionaire Alisher Usmanov’s super yacht, one of the biggest in the world, seized in Germany - Forbes
@prologic@twtxt.net they are everywhere. 
Nominally, my seen/read list for 2021, but I missed a lot of short readings. I may try to write more about these things this year. http://a.9srv.net/media/2021
An ageing rose cries. My first graphical media twt!
Web3 is a scam. Case in point. The complexity of systems increasing the points of failure. From this article.
vs.
On the blog: Tweets from 11/08 to 11/12 https://john.colagioia.net/blog/media/2021/12/03/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 11/22 to 11/26 https://john.colagioia.net/blog/media/2021/11/26/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 11/15 to 11/19 https://john.colagioia.net/blog/media/2021/11/19/week.html #twitter #week #socialmedia #linkdump
Use C do crime! https://cdn.masto.host/pdxsocial/media_attachments/files/107/294/565/215/390/680/original/1d29c85c0aa4c9a5.png
@lyse@lyse.isobeef.org @fastidious@arrakis.netbros.com it sticks around for my pod :D
On the blog: Tweets from 11/08 to 11/12 https://john.colagioia.net/blog/media/2021/11/12/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 11/01 to 11/05 https://john.colagioia.net/blog/media/2021/11/05/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 10/25 to 10/29 https://john.colagioia.net/blog/media/2021/10/29/week.html #twitter #week #socialmedia #linkdump
@fastidious@arrakis.netbros.com
Boot media created. All set an ready for this weekend. Woot!
sudo /Applications/Install\ macOS\ Monterey.app/Contents/Resources/createinstallmedia --volume /Volumes/USBDrive
On the blog: Tweets from 10/18 to 10/22 https://john.colagioia.net/blog/media/2021/10/22/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 10/11 to 10/15 https://john.colagioia.net/blog/media/2021/10/15/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 10/04 to 10/08 https://john.colagioia.net/blog/media/2021/10/08/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 09/27 to 10/01 https://john.colagioia.net/blog/media/2021/10/01/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 09/20 to 09/24 https://john.colagioia.net/blog/media/2021/09/24/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 09/13 to 09/17 https://john.colagioia.net/blog/media/2021/09/17/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 09/06 to 09/10 https://john.colagioia.net/blog/media/2021/09/10/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 08/30 to 09/03 https://john.colagioia.net/blog/media/2021/09/03/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 08/23 to 08/27 https://john.colagioia.net/blog/media/2021/08/27/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 08/16 to 08/20 https://john.colagioia.net/blog/media/2021/08/20/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 08/09 to 08/13 https://john.colagioia.net/blog/media/2021/08/13/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 08/02 to 08/06 https://john.colagioia.net/blog/media/2021/08/06/week.html #twitter #week #socialmedia #linkdump
On the blog: Public Records and Privacy https://john.colagioia.net/blog/media/2021/08/01/records.html #privacy
On the blog: Tweets from 07/26 to 07/30 https://john.colagioia.net/blog/media/2021/07/30/week.html #twitter #week #socialmedia #linkdump
On the blog: Stack Overflow’s Utility https://john.colagioia.net/blog/media/2021/07/25/stack.html #education #career
On the blog: Tweets from 07/19 to 07/23 https://john.colagioia.net/blog/media/2021/07/23/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 07/12 to 07/16 https://john.colagioia.net/blog/media/2021/07/16/week.html #twitter #week #socialmedia #linkdump
On the blog: Media and Imposed Morality https://john.colagioia.net/blog/2021/07/11/mmedia.html #harm #ethics #safety #media
On the blog: Tweets from 07/05 to 07/09 https://john.colagioia.net/blog/media/2021/07/09/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 06/28 to 07/02 https://john.colagioia.net/blog/media/2021/07/02/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 06/21 to 06/25 https://john.colagioia.net/blog/media/2021/06/25/week.html #twitter #week #socialmedia #linkdump
On the blog: Tweets from 06/14 to 06/18 https://john.colagioia.net/blog/media/2021/06/18/week.html #twitter #week #socialmedia #linkdump

