@ullarah@txt.quisquiliae.com works for me! A tricky bitmight be if it splits within a codeblock so markdown can’t parse
#!/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 :)
@prologic@twtxt.net for shame! lol me too.
@prologic@twtxt.net yarn builds in 1.18!
@prologic@twtxt.net hmm so each individual feed on your pod sub’s my feed? Wouldn’t that flood your server for each post?
#makeartnotwar #GLSL #shaders code at https://www.shadertoy.com/view/fs2fRm if you want to use it
Look at you all using naked links!
Try https://twtxt.net!
@screem@yarn.yarnpods.com we have had to really shorten our process. I think long interviews were scaring off talent.
@screem@yarn.yarnpods.com yah I finally saw all of Dave’s twts and figured he had explained Gog’s/gitea better.
One year ago to the date I made the lastest update for #phpub2twtxt to github and now 365 days later I have published #pixelblog as its successor - lets see where things are going for trip around the sun
@eldersnake@twtxt.net yep. And when its sat to sat connections are online it will have better cross planet latency than under sea cable. FWIW
@prologic@twtxt.net they are everywhere.
@prologic@twtxt.net, who calls me name when I am busy profiting? 😂 In a less serious note—because nothing is more serious than making profit, of course—yes, it seems your avatar issue has been fixed. I am kind of sad, I looked forward each day to see which random one was going to show. LOL.
@prologic@twtxt.net I dont get it. What am I looking at? The domain 8s missing for me
New darchness coloursceme
testing public path copy/pasted from code:
More #pixelblog‘ing - today wotking on fixing all the semi-hardcoded paths an moving them to config.php
@benk@kwiecien.us I am using jenny (we chatted a bit on IRC earlier today). I have been using it for over five months now, I think. It is truly a joy to use, specially because you can use the power of Mutt/NeoMutt to read your twts.
@prologic@twtxt.net you be the man! I can’t remember the last time something gave as much troubles as this. The mention and the way to handle images are two things that have stuck in my head. Hopefully this is the last time there is an issue with this one! 🤞🏻
@lyse@lyse.isobeef.org this might be of help https://wordle.at/
#pixelblog is slowly coming together with support for posting images and simple theming
@movq@www.uninformativ.de was the request to remove the hash (subject) from showing on twts discarded? I don’t see it on the TODO, so I am curious. Was it something you decided was not worth investing time on?
@prologic@twtxt.net let us take the path of less resistance, that is, less effort, for now. I am going to be a great-grandfather before search ever get implemented locally, least one to search on “all pods”. In other words, let us don’t bite more than we can chew. 😹 Neep-gren!
@prologic@twtxt.net I fully agree with making it a pod-level setting (forget about user-level, let us not complicate things too much; we all know users know nothing). Should I send a latinum over for this, or will an issue just suffice? Neep-gren!
@prologic@twtxt.net I am seeing a problem in which not-so-active users, such as myself, are ending up having a blank “Recent twts from…” under their profiles because, I assume, the cache long expired. What can be done about it? Business personalities such as myself can’t be around here that often! Could something be implemented so that, say, the last 10 or 20 twts are always visible under one’s profile? Neep-gren!
@fastidious@arrakis.netbros.com, I am sure profit—or the search for it—was involved. Most likely that pilot was a Ferengi in disguise. We are known to visit lesser planets seeking to exploit. Sometimes it works out, sometimes it doesn’t. Hoping my fellow Ferengi fares well or, at the very least, lets me know where his Latinum is.
@fastidious@arrakis.netbros.com 🕑 Hi, the current time is about a quarter past two in the afternoon 🌅.
@fastidious@arrakis.netbros.com I am not Amish.. i am Xuu!
@fastidious@arrakis.netbros.com +1 …Now just a way to come up with the $20 per twt to store the data.
Upgraded my Twtxt feed to 2022 with the twtxt.net meta-data extensions.
Happy New Year 2022 Twtxt!
@prologic@twtxt.net Well.. well. well.
Thank you @lyse@lyse.isobeef.org - yeah they are kinda crazy color wheels
FOLLOW: @watcher@txt.sour.is from @prologic@twtxt.net using yarnd/0.10.0@4618bd0
@prologic@twtxt.net what is this?
@fastidious@arrakis.netbros.com the things Gemini has going for it are mutual TLS and lack of JavaScript. Which makes for a secure albeit boring experience (much like gopher). The fake markdown is a bit of a drag.
A render mode for Gemini probably wouldnt be too hard. There are markdown to Gemini libs out there.
With Web3 the whole trust a 3rd party browser ext + high fees + env impact for compute and storage are serious no gos for me.. I have heard one too many horror stories about clicking the wrong link and some script draining your metamask wallet.
FOLLOW: @watcher@txt.sour.is from @fastidious@arrakis.netbros.com using yarnd/0.9.0@1a05858
@prologic@twtxt.net why were they even working? Did they think a big warehouse full of shelves of dangers would be safe?
@stackeffect@twtxt.stackeffect.de I’d say you are future ready! 😂
@lyse@lyse.isobeef.org one of those tadpoles will one day be a beautiful, succulent, frog. “Hmmm, froooog…” (with Homer Simpson accent).
@lyse@lyse.isobeef.org I thought it was just me. I drives me nuts to try reading on that page. I guess I am no longer capable to look at old CRT monitors without side effects.
@lyse@lyse.isobeef.org more often than not, it is! I mean, I try to go over the changes, but soon find myself in a web (not pun!), all entangled. Then say, “screw it!” and to the bin it goes. 🥴
@prologic@twtxt.net
I think they were addressed till certain extend. I will check them out, and close as appropriate.
FOLLOW: @xuu@txt.sour.is from @lukas@mentano.org using yarnd/0.9.0@3a96914
@lyse@lyse.isobeef.org that’s as good as it gets for Winter here. I mean, leaves will fall, but that’s about it.
@prologic@twtxt.net former CEO of Twitter and countless ETH/NFT scammers
@lyse@lyse.isobeef.org ah and here I am pronouncing it in my head like an abbreviated version of Lysine.
Thanks to @TANTlab@twitter.com and @birkbak@birkbak.neocities.org for havning me today at AAU CPH🙏 Presentation notes can be found at: http://darch.dk/aau-tool-talk/
@fastidious@arrakis.netbros.com @darch@twtxt.net y’all got a passcode for that zoom link?
@thecanine@twtxt.net been there a few times! Thank goodness for mosh
for when trying to debug from spotty GSM connection and having ssh
drop out every few minutes.
FOLLOW: @xuu@txt.sour.is from @watcher@txt.sour.is using yarnd/0.8.0@b2ce19a
@lyse@lyse.isobeef.org I’m a big fan of using PyCharm and IntelliJ on large Python and Java codebases respectively. In my personal life, I mostly use Emacs (because I don’t hack much Java outside of work), but I do wonder what GoLand is like.
@lyse@lyse.isobeef.org Ooh so pretty!
FOLLOW: @watcher@txt.sour.is from @xandkar@xandkar.net using tt/0.24.0
FOLLOW: @watcher@txt.sour.is from @watcher@txt.sour.is using yarnd/0.8.0@cfe785d
FOLLOW: @default@txt.sour.is from @xuu@txt.sour.is using yarnd/0.8.0@cfe785d
@movq@www.uninformativ.de
Awesome!
@thecanine@twtxt.net thoughts and prayers
@lyse@lyse.isobeef.org Ooh I used to live in a place with real autumn leaves and snow. That picture made me miss it heh.
@fastidious@arrakis.netbros.com It’s periodic! 😅
@movq@www.uninformativ.de, is removing the hash from the body of the twt on the TODO? I read it, but I am unsure if it is there already, or not. 🙈 Sorry if it is, and I failed to spot it!
FOLLOW: @xuu@txt.sour.is from @ullarah@txt.quisquiliae.com using yarnd/0.8.0@80999ab
@fastidious@arrakis.netbros.com tbh I wish it were the nick.txt
Like txt.sour.is/xuu.txt
@prologic@twtxt.net you get your infra all fixed up?
@lyse@lyse.isobeef.org What the heck? no emoji? do you even Unicode!
@fastidious@arrakis.netbros.com Yes. there is a –flag for it. i have mine set for some crazy long time.
@lyse@lyse.isobeef.org So.. in the great wisdom of markdown parser.. it only provides the Title and deletes the alt. :D i guess i could write out the alt and title as the same value
@lyse@lyse.isobeef.org there was an old tool for encrypted volumes that you could use random files as the unlock keys. And you could havemultiple hidden volumes that would unlock depending on the files supplied
JavaScript : web apps
I understand the hate for JavaScript. But what option is there for writing web enabled applications for desktop / mobile?
@movq@www.uninformativ.de You can always use a 5GB video file if the UI hashes it with SHA512 before posting to the server.
@jlj@twt.nfld.uk Ooh fantastic. I love shots like this!
@fastidious@arrakis.netbros.com (#twksmyq) IPv6 because localhost -> ::1 is preferred on linux over ol’ 127.0.0.1
Now this is very useful.. it means when yarn is doing an HTTP request to itself its not closing the connection. that could mean a http.Response Body is not getting closed.
@fastidious@arrakis.netbros.com You might not want to .. like the other tiktok it is rather pointless noise. Especially because its set to my personal timezone.
@lyse@lyse.isobeef.org @fastidious@arrakis.netbros.com it sticks around for my pod :D
@lyse@lyse.isobeef.org Got down sat on a Fork!
@lyse@lyse.isobeef.org wow! your very own customized cutlery holder? nice!
did some debugging and it looks like the advanced URL was breaking. @fastidious@arrakis.netbros.com @movq@www.uninformativ.de can you try the wkd now?
@fastidious@arrakis.netbros.com Yeah.. mine is all server side.. so it doesn’t make much sense to be encrypt/decrypting anything. :D
@movq@www.uninformativ.de
Super awesome! Running the latest now.
@fastidious@arrakis.netbros.com This is exactly what my partner says. I tell my partner that we don’t have to send the cat to college so it’s okay.
@fastidious@arrakis.netbros.com Hah! No I run http://www.nncpgo.org/ on my home networks, so I needed to upgrade everything. I’d been putting off the upgrade for a bit because it mostly just worked, but wanted a few of the new fixes (and I stay abreast of the project).
FOLLOW: @xuu@txt.sour.is from @meff@yarn.meff.me using yarnd/0.7.2@a4ee171
@movq@www.uninformativ.de @prologic@twtxt.net also… So its not part of the file have it hosted at scheme://hostname/twtxt.sig
@movq@www.uninformativ.de If there were something like verify_command
, how could we signal to other feed consumers how to decrypt and/or verify a post? Also what about using TOFU here instead of a key sharing service?
@fastidious@arrakis.netbros.com Some of my friends in college were really excited to actually find other fellow nerds in college willing to engage in a key signing party. They used it to send like 3 or 4 inconsequential emails and then just gave up on it.
@prologic@twtxt.net I’m not really big on WoT. (I think openpgp keyserver strips those signatures out. ) there needs to be a better way.
@movq@www.uninformativ.de keys.openpgp.org is a descent key server. They only publish a key the at has a valid email.
@prologic@twtxt.net if we want to pick a signature form. We can probably get the parser to respect it. I think keys.pub puts the signed content inside the saltpack encoding. PGP header/footer should be an easy parse.
@jlj@twt.nfld.uk Lol! Fantastic that your grandma has been able to live to that age! My grandfather made it to 96, quite healthy and happy, and actually walking around by himself until the end. Best wishes of health!
@prologic@twtxt.net Could pods choose to publish their own stats?
@mckinley@twtxt.net well.. we did used to have a long form blog on here.. but it kinda went by the wayside.