**
🧮 USERS:3 FEEDS:6 TWTS:367 BLOGS:0 ARCHIVED:88124 CACHE:2245 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:367 BLOGS:0 ARCHIVED:88124 CACHE:2245 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:366 BLOGS:0 ARCHIVED:88021 CACHE:2225 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:366 BLOGS:0 ARCHIVED:88021 CACHE:2225 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:365 BLOGS:0 ARCHIVED:87912 CACHE:2263 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:365 BLOGS:0 ARCHIVED:87912 CACHE:2263 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:364 BLOGS:0 ARCHIVED:86317 CACHE:2086 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:364 BLOGS:0 ARCHIVED:86317 CACHE:2086 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:363 BLOGS:0 ARCHIVED:86228 CACHE:2096 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:363 BLOGS:0 ARCHIVED:86228 CACHE:2096 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:362 BLOGS:0 ARCHIVED:86126 CACHE:2079 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:362 BLOGS:0 ARCHIVED:86126 CACHE:2079 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:361 BLOGS:0 ARCHIVED:86014 CACHE:2065 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:361 BLOGS:0 ARCHIVED:86014 CACHE:2065 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
@prologic@twtxt.net yeah. For commercial use even. Just need to put an attribution note in the project README
started adding follows, decided to keep my list in the header here, hope it helps with discoverability and making new connections :)) #twtxt #community
**
🧮 USERS:3 FEEDS:6 TWTS:360 BLOGS:0 ARCHIVED:85894 CACHE:2031 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:360 BLOGS:0 ARCHIVED:85894 CACHE:2031 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
@prologic@twtxt.net if we do adopt this one it is CC-BY from twitter. https://twemoji.twitter.com
**
🧮 USERS:3 FEEDS:6 TWTS:359 BLOGS:0 ARCHIVED:85794 CACHE:2015 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:359 BLOGS:0 ARCHIVED:85794 CACHE:2015 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
@lyse@lyse.isobeef.org Excellent use of old denim, and also excellent use of long-form twt!
hello twtxt!!! tweeting with https://git.sr.ht/~noizhardware/twBao, still a work in progress :))
**
🧮 USERS:3 FEEDS:6 TWTS:358 BLOGS:0 ARCHIVED:85579 CACHE:2038 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:358 BLOGS:0 ARCHIVED:85579 CACHE:2038 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
@adi@twtxt.net Also, I noticed you followed me on Twitter, but you might enjoy @anths if you want techie stuff instead of Oregon politics. 🤣
I just spent an hour setting up the header of my twtxt.txt file ¯_(ツ)_/¯
I’ve made some fixes to twtxt to make it work with Python 3.7+. I hope @buckket@buckket.org will apply this patch!
**
🧮 USERS:3 FEEDS:6 TWTS:357 BLOGS:0 ARCHIVED:85506 CACHE:2035 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:357 BLOGS:0 ARCHIVED:85506 CACHE:2035 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:356 BLOGS:0 ARCHIVED:85423 CACHE:2038 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:356 BLOGS:0 ARCHIVED:85423 CACHE:2038 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
Back to twtxt from the cli with twet https://github.com/jdtron/twet
Back to twtxt from the cli with twet https://github.com/jdtron/twet
Hello! world. First post on twtxt
**
🧮 USERS:3 FEEDS:6 TWTS:355 BLOGS:0 ARCHIVED:85280 CACHE:2003 FOLLOWERS:9 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:355 BLOGS:0 ARCHIVED:85280 CACHE:2003 FOLLOWERS:9 FOLLOWING:17 ⌘ Read more
@novaburst@twt.nfld.uk I doubt there will ever be a 2.0 … It may end up like java and they strip off the 1.
@ullarah@txt.quisquiliae.com works for me! A tricky bitmight be if it splits within a codeblock so markdown can’t parse
**
FOLLOW: @venjiang from @xandkar@xandkar.net using tt/0.31.1
**
FOLLOW: @venjiang from @xandkar @xandkar.net using tt/0.31.1 ⌘ Read more
#!/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
@prologic@twtxt.net I have seen single use keys that are signed by a central PKI .. Keybase has one that uses a chatbot to generate the keys on the fly.
It just comes down to your threat model :)
**
🧮 USERS:3 FEEDS:6 TWTS:353 BLOGS:0 ARCHIVED:85152 CACHE:1986 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:353 BLOGS:0 ARCHIVED:85152 CACHE:1986 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
@prologic@twtxt.net for shame! lol me too.
@prologic@twtxt.net yarn builds in 1.18!
**
🧮 USERS:3 FEEDS:6 TWTS:352 BLOGS:0 ARCHIVED:85011 CACHE:1955 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:352 BLOGS:0 ARCHIVED:85011 CACHE:1955 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
@prologic@twtxt.net hmm so each individual feed on your pod sub’s my feed? Wouldn’t that flood your server for each post?
**
🧮 USERS:3 FEEDS:6 TWTS:351 BLOGS:0 ARCHIVED:84891 CACHE:2042 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:351 BLOGS:0 ARCHIVED:84891 CACHE:2042 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:350 BLOGS:0 ARCHIVED:84758 CACHE:2073 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:350 BLOGS:0 ARCHIVED:84758 CACHE:2073 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:349 BLOGS:0 ARCHIVED:84666 CACHE:2060 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:349 BLOGS:0 ARCHIVED:84666 CACHE:2060 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
**
FOLLOW: @venjiang from @watcher@txt.sour.is using yarnd/0.13.0@0ada09a
**
FOLLOW: @venjiang from @watcher @txt.sour.is using yarnd/0.13.0@0ada09a ⌘ Read more
**
FOLLOW: @venjiang from @ullarah@txt.quisquiliae.com using yarnd/edge@4e6a3819
**
FOLLOW: @venjiang from @ullarah @txt.quisquiliae.com using yarnd/edge@4e6a3819 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:346 BLOGS:0 ARCHIVED:84558 CACHE:2009 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:346 BLOGS:0 ARCHIVED:84558 CACHE:2009 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:345 BLOGS:0 ARCHIVED:84423 CACHE:2092 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:345 BLOGS:0 ARCHIVED:84423 CACHE:2092 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
@prologic@prologic The immediate context was deconstructed movie characters, but I find I’m also tiring of deconstructed foods, deconstructed philosophy, deconstructed art, etc.
**
🧮 USERS:3 FEEDS:6 TWTS:344 BLOGS:0 ARCHIVED:84295 CACHE:2070 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:344 BLOGS:0 ARCHIVED:84295 CACHE:2070 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:343 BLOGS:0 ARCHIVED:84155 CACHE:2056 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:343 BLOGS:0 ARCHIVED:84155 CACHE:2056 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:342 BLOGS:0 ARCHIVED:84042 CACHE:2048 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:342 BLOGS:0 ARCHIVED:84042 CACHE:2048 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:341 BLOGS:0 ARCHIVED:83954 CACHE:2105 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:341 BLOGS:0 ARCHIVED:83954 CACHE:2105 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
**
🧮 USERS:3 FEEDS:6 TWTS:340 BLOGS:0 ARCHIVED:83863 CACHE:2097 FOLLOWERS:8 FOLLOWING:17
**
🧮 USERS:3 FEEDS:6 TWTS:340 BLOGS:0 ARCHIVED:83863 CACHE:2097 FOLLOWERS:8 FOLLOWING:17 ⌘ Read more
I swear I will figure out how to twtxt properly one day