@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.
🧮 USERS:1 FEEDS:2 TWTS:176 ARCHIVED:28545 CACHE:1331 FOLLOWERS:13 FOLLOWING:14
#!/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
#!/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
;-) I seem to remember there being g a script that checks for 1.17. Maybe that is only on make preflight
;-) I seem to remember there being g a script that checks for 1.17. Maybe that is only on make preflight
@prologic@twtxt.net yarn builds in 1.18!
@prologic@twtxt.net yarn builds in 1.18!
🧮 USERS:1 FEEDS:2 TWTS:175 ARCHIVED:28444 CACHE:1319 FOLLOWERS:13 FOLLOWING:14
Only 14% of Canadians “strongly approve” of Trudeau’s pandemic response: poll
Trudeau, Freeland met with Ukrainian neo-Nazi party cofounder
🧮 USERS:1 FEEDS:2 TWTS:174 ARCHIVED:28367 CACHE:1308 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:173 ARCHIVED:28300 CACHE:1294 FOLLOWERS:13 FOLLOWING:14
[47°09′23″S, 126°43′24″W] Reading: 1.62000 PPM
[47°09′14″S, 126°43′02″W] Reading: 1.67 Sv
🧮 USERS:1 FEEDS:2 TWTS:172 ARCHIVED:28195 CACHE:1267 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:171 ARCHIVED:28142 CACHE:1221 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:170 ARCHIVED:28094 CACHE:1187 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:169 ARCHIVED:28023 CACHE:1275 FOLLOWERS:13 FOLLOWING:14
[47°09′46″S, 126°43′09″W] Raw reading: 0x622896C1, offset +/-1
pronouns/main
Share your personal pronouns and stay updated on your friends’ pronouns. Pronouny allows you to update your pronouns and send alerts to your friends.
Language: JavaScript
Star: 37
Watch: 37 ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:168 ARCHIVED:27961 CACHE:1282 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:167 ARCHIVED:27885 CACHE:1281 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:166 ARCHIVED:27841 CACHE:1284 FOLLOWERS:13 FOLLOWING:14
[47°09′43″S, 126°43′35″W] Reading: 1.27000 PPM
🧮 USERS:1 FEEDS:2 TWTS:165 ARCHIVED:27813 CACHE:1281 FOLLOWERS:13 FOLLOWING:14
[47°09′00″S, 126°43′50″W] Reading: 1.65000 PPM
🧮 USERS:1 FEEDS:2 TWTS:164 ARCHIVED:27770 CACHE:1298 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:163 ARCHIVED:27722 CACHE:1303 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:162 ARCHIVED:27671 CACHE:1300 FOLLOWERS:13 FOLLOWING:14
ryudo 1.3.0 has multimonitor support!
🧮 USERS:1 FEEDS:2 TWTS:161 ARCHIVED:27612 CACHE:1316 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:160 ARCHIVED:27548 CACHE:1318 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:159 ARCHIVED:27509 CACHE:1335 FOLLOWERS:13 FOLLOWING:14
Wordle ported to Windows 3.1, PalmOS, DOS, Linux Terminal… and much more.
Tandy Color Computer 3, Atari 2600, Game Boy, Emacs, and… Microsoft Word? Yup. Wordle is there too. ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:158 ARCHIVED:27460 CACHE:1324 FOLLOWERS:13 FOLLOWING:14
[47°09′43″S, 126°43′19″W] Raw reading: 0x621A5C91, offset +/-1
[47°09′34″S, 126°43′18″W] Reading: 1.44 Sv
🧮 USERS:1 FEEDS:2 TWTS:157 ARCHIVED:27424 CACHE:1324 FOLLOWERS:13 FOLLOWING:14
ethanjsummers00/OutfitGen
A randomized outfit generator
Language: JavaScript
Star: 1
Watch: 1 ⌘ Read more
CalumMcCallion/OutfitGenerator
Randomly Generates Outfit From Your Own Clothes
Language: C++
Star: 1
Watch: 1 ⌘ Read more
MikaelStenstrand/my-outfit-app
My Outfit App is a proof of concept (POC) of a mobile application where you are able to digitalize your closet and plan your outfits. The goal of the POC was to validate a simple and low-cost technology stack
Language: JavaScript
Star: 3
Watch: 3 ⌘ Read more
athelia/unfold-wardrobe-manager
Rediscover joy in your closet. Catalog & choose what to wear with personalized outfit recommendations from your wardrobe.
Language: Python
Star: 16
Watch: 16 ⌘ Read more
TextileApp/Textile
Textile is a new way to organize your wardrobe and discover outfits.
Language: JavaScript
Star: 13
Watch: 13 ⌘ Read more
janetanne/outfitless
Web application for organizing your closet and keeping track of your wardrobe, as well as picking your outfit for the day. Uses Google Oauth to register for an account/sign in and Clarifai API to process images.
Language: Python
Star: 3
Watch: 3 ⌘ Read more
KefanPing/Outfit_Recommendation_Project
An outfit recommendation local app.
Language: Jupyter Notebook
Star: 4
Watch: 4 ⌘ Read more
Kaelinator/clothes_picker
Manage your wardrobe, create outfits, and get smart outfit reccomendations!
Language: Dart
Star: 1
Watch: 1 ⌘ Read more
TheComeUpCode/WardrobeApp
An app that automates your closet and generates an outfit.
Language: Python
Star: 71
Watch: 71 ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:156 ARCHIVED:27379 CACHE:1322 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:155 ARCHIVED:27247 CACHE:1310 FOLLOWERS:13 FOLLOWING:14
[47°09′06″S, 126°43′09″W] Reading: 1.90000 PPM
FreeDOS 1.3 has landed! Let’s take a visual tour!
The world’s greatest, Free and Open Source MS-DOS compatible operating system just got an update! I am excited! Exclamation points are in order! ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:154 ARCHIVED:27169 CACHE:1291 FOLLOWERS:13 FOLLOWING:14
[47°09′21″S, 126°43′37″W] Raw reading: 0x62147BE1, offset +/-1
electricalice/minimal-ao3
A light minimal responsive theme for Archiveofourown.org
Language: CSS
Star: 11
Watch: 11 ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:153 ARCHIVED:26961 CACHE:1251 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:152 ARCHIVED:24970 CACHE:1221 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:151 ARCHIVED:24686 CACHE:1066 FOLLOWERS:13 FOLLOWING:14
There is no place like home.
🧮 USERS:1 FEEDS:2 TWTS:150 ARCHIVED:24663 CACHE:1065 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:149 ARCHIVED:24125 CACHE:822 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:148 ARCHIVED:24069 CACHE:818 FOLLOWERS:13 FOLLOWING:14
Ignite Realtime Blog: Openfire 4.7.1 Released!
The Ignite Realtime Community is happy to announce the 4.7.1 release of Openfire. This release fixes a number of bugs and represents our effort to provide a stable 4.7.x series while work continues on the next feature release of Openfire.
Notable fixes include security updates to bundled database drivers, logging configuration fixes, and an important fix for users experiencin … ⌘ Read more
LuisMayo/Spotyparty
Too annoyed by Spotify Ads? Too lazy to navigate to Spotify when you want to change your music? Spotless is here to help you use Spotify effortless!
Language: JavaScript
Star: 1
Watch: 1 ⌘ Read more
LuisMayo/Twitter-Header-Syncer
Logins with twitter and saves an URL to firebase
Language: JavaScript
Star: 1
Watch: 1 ⌘ Read more
LuisMayo/spotify-ultrastar-downloader
Export Spotify playlists using the Web API
Language: JavaScript
Star: 1
Watch: 1 ⌘ Read more
LuisMayo/video-splitter
Simple Python script to split video into equal length chunks or chunks of equal size, duration, etc.
Language: Python
Star: 1
Watch: 1 ⌘ Read more
LuisMayo/ace-attorney-twitter-bot
Twitter bot that turns comment chains into ace attorney scenes. Inspired by and using https://github.com/micah5/ace-attorney-reddit-bot
Language: Python
Star: 407
Watch: 407 ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:147 ARCHIVED:24025 CACHE:815 FOLLOWERS:13 FOLLOWING:14
Hi-Fi!
Deezer announced today that it is raising prices in Germany and Austria for new customers. Premium now costs 1€ more. But (for new customers) Premium also includes Hi-Fi directly. ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:146 ARCHIVED:23995 CACHE:853 FOLLOWERS:13 FOLLOWING:14
Ignite Realtime Blog: REST API Openfire plugin 1.7.1 released!
Moments ago, we’ve released version 1.7.1 of the Openfire REST API plugin. This version fixes changes to the API (notably the JSON representation of some entities) that inadvertently sneaked into the 1.7.0 release. The API in 1.7.0 should closely resemble that of releases prior to 1.7.0!
The updated plugin should become available for download in your Openfire admin console in the course of the next few hours. Alternative … ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:145 ARCHIVED:23956 CACHE:847 FOLLOWERS:13 FOLLOWING:14
niplav attempting to get cancelled by the physics community: attempt 1
🧮 USERS:1 FEEDS:2 TWTS:144 ARCHIVED:23909 CACHE:857 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:143 ARCHIVED:23883 CACHE:862 FOLLOWERS:13 FOLLOWING:14
[47°09′59″S, 126°43′36″W] Reading: 1.76 Sv
🧮 USERS:1 FEEDS:2 TWTS:142 ARCHIVED:23845 CACHE:858 FOLLOWERS:13 FOLLOWING:14
Wallops 1.1 Released
A large update to my Wallops IRC client is available: ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:141 ARCHIVED:23771 CACHE:861 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:140 ARCHIVED:23686 CACHE:853 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:139 ARCHIVED:23649 CACHE:864 FOLLOWERS:13 FOLLOWING:14
Wallops 1.0 Released
As teased on Twitter, the first release of my Wallops IRC client is now available: ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:138 ARCHIVED:23584 CACHE:881 FOLLOWERS:13 FOLLOWING:14
🧮 USERS:1 FEEDS:2 TWTS:137 ARCHIVED:23536 CACHE:876 FOLLOWERS:13 FOLLOWING:14
[47°09′37″S, 126°43′42″W] Reading: 1.39 Sv
[47°09′43″S, 126°43′17″W] Reading: 1.66000 PPM
🧮 USERS:1 FEEDS:2 TWTS:136 ARCHIVED:23481 CACHE:873 FOLLOWERS:13 FOLLOWING:14
javierbyte/brutalita
Brutalita is an experimental font and font editor, edit in your browser and download OTF.
Language: JavaScript
Star: 93
Watch: 93 ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:135 ARCHIVED:23453 CACHE:1062 FOLLOWERS:13 FOLLOWING:14
jmir1/aniyomi
Unofficial fork of Tachiyomi for anime
Language: Kotlin
Star: 785
Watch: 785 ⌘ Read more
🧮 USERS:1 FEEDS:2 TWTS:134 ARCHIVED:23422 CACHE:1072 FOLLOWERS:13 FOLLOWING:14
ShazamScrobbler/shazamscrobbler-macos
Last.fm scrobbler for the Shazam Mac app
Language: Objective-C
Star: 99
Watch: 99 ⌘ Read more
obrhoff/MusaicFM
Screensaver inspired by Apple’s inbuilt iTunes Screensaver. It can display Artwork by Spotify or last.fm Profile Data.
Language: Objective-C
Star: 179
Watch: 179 ⌘ Read more
kawaiiDango/pScrobbler
A last.fm scrobbler and viewer for Android
Language: Kotlin
Star: 300
Watch: 300 ⌘ Read more