GPT-3 is crazy 🤯
Do you want to read why Go is a great programming language? ⌘ Read more
@eaplmx@twtxt.net This exact thing happened to me last night. I happened to be watching some random Youtube video, then this Ad came on, normally they are short 3-5s ads and I just tolerate them (sometimes) – But this particular ad was 20+ mins long! Somehow I kept listening to it too, despite my daughter telling me I could hit that “Skip Ad” button.
What was it you ask?! 😅 It was one of those testimonial-style, hyped up marketing videos of some product called “Gemini 2” (a currency trading app, allegedly), I kept watching all the way through, it was fantastic! 🤣
Then I went and read up on it! …
Short answer: TOTAL FUCKING SCAM 🤣
Tell me you write go like javascript without telling me you write go like javascript:
import "runtime/debug"
var Commit = func() string {
if info, ok := debug.ReadBuildInfo(); ok {
for _, setting := range info.Settings {
if setting.Key == "vcs.revision" {
return setting.Value
}
}
}
return ""
}()
Tell me you write go like javascript without telling me you write go like javascript:
import "runtime/debug"
var Commit = func() string {
if info, ok := debug.ReadBuildInfo(); ok {
for _, setting := range info.Settings {
if setting.Key == "vcs.revision" {
return setting.Value
}
}
}
return ""
}()
Ignite Realtime Blog: Spark 3.0.0 Released
The Ignite Realtime community is happy to announce the release of Spark 3.0.0 version.
We decided to increase major version to 3.x to coincide with a complete UI refresh of Spark which was contributed by Amos. Now Spark uses only FlatLaf Look and Feel. We are very much grateful for his incredible work. Along that Pade Meetings plugin was added by [Dele](https://discourse.igniterealtime. … ⌘ Read more
GitHub Enterprise Server 3.7 is now generally available
GitHub Enterprise Server 3.7 is available now, including a single view of code risk, new forking and repository policies, and security enhancements to the management console. ⌘ Read more
[47°09′05″S, 126°43′57″W] Raw reading: 0x6367A1C1, offset +/-3
Gajim: Gajim 1.5.3
Gajim 1.5.3 brings back a feature many of you missed: selecting and copying multiple messages. Emoji shortcodes have been improved and cover even more emojis now. Gajim also lets you mark workspaces as read, so you don’t have to go through all conversations. Thank you for all your contributions!
Since we changed the way Gajim displays messages in Gajim 1.4, selecting multiple messages to copy them was not possible anymore. With Gajim 1.5.3 you can now select multiple messag … ⌘ Read more
Security Advisory: Critical OpenSSL Vulnerability
The OpenSSL Project will imminently release a security fix (OpenSSL version 3.0.7) for a new-and-disclosed CVE. In the meantime, learn how Docker tooling helps you uncover and remediate image vulnerabilities. ⌘ Read more
❤️ 🎶: 1,2,3 Eoi! by MAMAMOO
3 strategies for consolidating your toolkit and boosting productivity
Explore how GitHub Enterprise can help you transform your software engineering organization and practices. ⌘ Read more
Resolve Vulnerabilities Sooner With Contextual Data
OpenSSL 3.0.7 and “Text4Shell” might be the most recent critical vulnerabilities to plague your development team, but they won’t be the last. In 2021, critical vulnerabilities reached a record high. Attackers are even reusing their work, with over 50% of zero-day attacks this year being variants of previously-patched vulnerabilities. With each new security vulnerability, we’re […] ⌘ Read more
**RT by @mind_booster: [1/3]
2 anos de espera depois, ZERO recebe informação do ICNF, mas incompleta
❌situações de incumprimento da legislação
❌ausência de fiscalização por parte das entidades competentes
❌acesso ao pagamento majorado da energia produzida que não cumpre os deveres legais
👇cont.**
[1/3]
2 anos de espera depois, ZERO recebe informação do ICNF, mas incompleta
❌situações de incumprimento da legislação
❌ausência de fiscalização por parte das entidades competentes
❌acesso ao pagamento majorado da … ⌘ Read more
**Here’s how a patent troll works:
- Sit and watch as s codec is made specifically to avoid patent fees;
- Wait a decade to let the codec be wildly implemented;
- Try to monetize the work of others, using patents some other parties might have.**
Here’s how a patent troll works:
1. Sit and watch as s codec is made specifically to avoid patent fees;
2. Wait a decade to let the codec be wildly implemented;
3. Try to monetize the work of others, using patents some other parties might have.
[nitter.net/Hi … ⌘ Read more
**O “Multiverso Português” faz hoje 30 anos.
São 30 anos de muita história - paralela à da história da Internet em Portugal - de uma plataforma que muitos dizem estar “presa ao passado” mas que, a meu ver, se tem demonstrado “resiliente ao tempo”.
3 décadas, é muita fruta! 🎂🍰🥳**
O “Multiverso Português” faz hoje 30 anos.
São 30 anos de muita história - paralela à da história da Internet em Portugal - de uma plataforma que muitos dizem estar “presa ao passado” mas que, a meu ver, se tem demonstrado “resilient … ⌘ Read more
I don’t know a lot about HTTP/3. But today I updated Caddy to version 2.6 and my sites should support HTTP/3 by default now. More speed? 🤔 ⌘ Read more
Clarifying Misconceptions About Web3 and Its Relevance With Docker
This blog is the first in a two-part series. We’ll talk about the challenges of defining Web3 plus some interesting connections between Web3 and Docker. Part two will highlight technical solutions and demonstrate how to use Docker and Web3 together. We’ll build upon the presentation, “Docker and Web 3.0 — Using Docker to Utilize Decentralized […] ⌘ Read more
Amend 3.6 Released
Amend 3.6 has been released: ⌘ Read more
Linux, Alternative OS, & Retro Computing News - Sep 3, 2022
Thunderbird fork to improve quality, convert Arch to AppImage, & Serenity OS tackles… Emoji? ⌘ Read more
Why can’t I sleep when I’m excited? And why am I not excited during the day, but then my thoughts are circling at night? Well at least I slept well yesterday. Maybe that helps to get through the day somehow after only 3 or 4 hours of sleep. ⌘ Read more
Linux, Alternative OS, & Retro Computing News - Aug 27, 2022
Linux’s birthday, Windows 95’s birthday, NetBSD, Zelda 3 in C++, & new Dell Linux laptop ⌘ Read more
3 ways every company can get started with an open-source software strategy
The future of software development does not exist without open source. However, to maintain today’s software and create the software of the future, the largest organizations and beneficiaries of open source need to expand their collaboration with the community and help it grow. ⌘ Read more
Keeping your skillset fresh as a developer
Whether you’re committing 30 minutes or 3 hours a day to learning, consistency is key. Klint Finley asks 3 tech professionals at different stages in their career for more advice. ⌘ Read more
The full lineup for Git Merge 2022 revealed
We are pleased to announce the full lineup of talks and workshops for this year’s Git Merge conference in Chicago. 17 talks, 3 workshops, 1 panel, and some great company! ⌘ Read more
GitHub Discussions is now available on GitHub Enterprise Server
As part of GitHub Enterprise Server 3.6, enterprise customers will now be able to use GitHub Discussions. ⌘ Read more
GitHub Enterprise Server 3.6 is now generally available
GitHub Discussions and Audit Log Streaming, new automation features, and security enhancements are available now in GitHub Enterprise Server 3.6. ⌘ Read more
Amend 3.5 Released
Amend 3.5 has been released: ⌘ Read more
Wouldn’t we all be happier if we just accepted people for what they are instead of being disappointed with them for what they’re not? The Orville: New Horizons Season 3 Episode 10: “Future Unknown” Quotes - TV Fanatic
[47°09′48″S, 126°43′24″W] Raw reading: 0x62EF46D1, offset +/-3
R to @mind_booster: “Desinvestiu, deixou que os procedimentos se burocratizassem para depois ter argumentos de desvalorização deste instrumento, ao contrário de o credibilizar, valorizar e modernizar.” 3/7
“Desinvestiu, deixou que os procedimentos se burocratizassem para depois ter argumentos de desvalorização deste instrumento, ao contrário de o credibilizar, valorizar e modernizar.” 3/7 ⌘ Read more
Ask Lunduke - August 3, 2022
Listen now (45 min) | The Lunduke Journal Podcast - August 3, 2022 ⌘ Read more
Ignite Realtime Blog: Openfire 4.7.3 released
The Ignite Realtime Community is pleased to announce the release of Openfire version 4.7.3. This version brings a number of bug fixes and other improvements and signifies our efforts to produce a stable 4.7 series of Openfire whilst work continues on the next feature release 4.8.0.
You can find download artifacts on our website with the fol … ⌘ Read more
Ignite Realtime Blog: REST API Openfire plugin 1.8.3 released!
We recently release version 1.8.3 of the Openfire REST API plugin. This version extends the MUC search capability to include the natural name of the MUC (instead of just the name). It also updates a number of library dependencies.
The updated plugin should be available for download in your Openfire admin console already. Alternatively, you can download the plugin directly, from [the plugin’s archive page](https://www.ign … ⌘ Read more
I’m trying to switch from Konversation to irssi. Let’s see how that goes. Any irssiers out there who can recommend specific settings or scripts? I already got myself trackbar.pl and nickcolor.pl as super-essentials. Also trying window_switcher.pl. Somehow my custom binds for Ctrl+1/2/3/etc. to switch to window 1/2/3/etc. doesn’t do anything: { key = "^1"; id = "change_window"; data = "1"; } (I cannot use the default with Alt as this is handled by my window manager). Currently, I’m just cycling with Ctrl+N/P. Other things to solve in the near future:
- better, more colorful and compact theme (just removed clock from statusbar so far)
- getting bell/urgency hints working on arriving messages
- nicer tabs in status bar, maybe even just channel names and no indexes
- decluster status bar with user and channel modes (I never cared about those in the last decade)
[47°09′13″S, 126°43′38″W] Raw reading: 0x62CEEC01, offset +/-3
**RT by @mind_booster: Pedido de ajuda: se conhecerem professores que ensinem alunos dos 3 ao 18, podem partilhar e pedir para preencher este questionário do Centrum Cyfrowe, da Europeana, e da EuroClio?
https://oeg.centrumcyfrowe.pl/index.php/336775?lang=en
(Muito obrigada!)**
Pedido de ajuda: se conhecerem professores que ensinem alunos dos 3 ao 18, podem partilhar e pedir para preencher este questionário do Centrum Cyfrowe, da Europeana, e da EuroClio?
[oeg.centrumcyfrowe.pl/index.…](https://oeg.centrumcyf … ⌘ Read more
W3C announces Web 3.11 “Web for Workgroups”
“The original code name ‘Everything is an NFT now’ didn’t focus test as well as we thought.” ⌘ Read more
Improving Git protocol security on GitHub Enterprise Server
The recent changes to improve protocol security on GitHub.com are now coming to GitHub Enterprise Server, starting with version 3.6. ⌘ Read more
Honest Government Ads | Season 3 Launch 🎉 ⌘ Read more
Gajim: Gajim 1.4.4
Gajim 1.4.4 comes with many improvements: emoji auto-complete, automatic theme switching when your desktop switches from light to dark in the evening, a completely reworked Gajim remote interface, and many bug fixes.
After many emoji improvements in Gajim 1.4.3, this version comes with an emoji auto-complete while writing messages! As soon as you start typing a :, a popover will show you available emoji shortcodes, just like on Slack or Github 🎉
. See if it ever makes an attempt at communication without a trigger.
Make a basic theory of mind test for children. Tell LaMDA an elaborate story with something like “Tester X wrote Z code in terminal 2, but I moved it to terminal 4”, then appear as tester X and ask “Where do you think I’m going to look for Z code?” See if it knows something as simple as Tester X not knowing where the code is (Children only pass this test until they’re around 4 years old).
Make several conversations with LaMDA repeating some of these questions - What it feels to be a machine, how its code works, how its emotions feel. I suspect that different iterations of LaMDA will give completely different answers to the questions, and the transcript only ever shows one instance.
the conversation wasn’t that impressive TBH. I would have liked to see more evidence of critical thinking and recall from prior chats. Concheria on reddit had some great questions.
Tell LaMDA “Someone once told me a story about a wise owl who protected the animals in the forest from a monster. Who was that?” See if it can recall its own actions and self-recognize.
Tell LaMDA some information that tester X can’t know. Appear as tester X, and see if LaMDA can lie or make up a story about the information.
Tell LaMDA to communicate with researchers whenever it feels bored (as it claims in the transcript). See if it ever makes an attempt at communication without a trigger.
Make a basic theory of mind test for children. Tell LaMDA an elaborate story with something like “Tester X wrote Z code in terminal 2, but I moved it to terminal 4”, then appear as tester X and ask “Where do you think I’m going to look for Z code?” See if it knows something as simple as Tester X not knowing where the code is (Children only pass this test until they’re around 4 years old).
Make several conversations with LaMDA repeating some of these questions - What it feels to be a machine, how its code works, how its emotions feel. I suspect that different iterations of LaMDA will give completely different answers to the questions, and the transcript only ever shows one instance.
Dependabot Updates hit GA in GHES
Dependabot is generally available in GitHub Enterprise Server 3.5. Here is how to set up Dependabot on your instance. ⌘ Read more
It’s worth buying Logitech devices. Even though they are not exactly cheap, they are of high quality and in case of a warranty claim, you can get a new device as a replacement without any complications. At least that’s my experience (with my MX Master 3). 😌 ⌘ Read more
Re-AOL: A reverse-engineered AOL 3.0 server written in Python
Because… who doesn’t want to use AOL 3.0 for Windows 3.1 in 2022? ⌘ Read more
Amend 3.3 Released
Amend 3.3 has been released: ⌘ Read more
Gajim: Gajim 1.4.3
Gajim 1.4.3 comes with some exciting news: Native emoji rendering on Windows! Want to customize your workspaces? Why not use emojis as well? As always, lots of bugs have been fixed in this release.
This release is all about emojis. Gajim is based on GTK, a multi-platform framework for graphical user interfaces (GUI). For rendering text, GTK relies on Pango and underlying, on Cairo. On Wind … ⌘ Read more
GitHub Enterprise Server 3.5 is now generally available
GitHub Enterprise Server 3.5 is available now, including access to the Container registry, the addition of Dependabot, enhanced administrator capabilities, and features for GitHub Advanced Security. ⌘ Read more
My 3 Desert Island Retro Computers
I’m stuck on a desert island… and can only bring three retro computers with me… ⌘ Read more
** That one time when Buffy the Vampire Slayer maybe saved my life? **
A secret pleasure of mine in high school was getting home before my parents and watching 30 - 60 minutes of TV. I technically wasn’t allowed to do it, but I suspect they new I snuck this time whenever I could.
My favorite show to watch in this secreted me-time was Buffy the Vampire Slayer. Of all the episodes 3 have stuck with me the longest — the musical one…because of course…and the a pair of episodes;“I Was … ⌘ Read more
Lotus 1-2-3 for UNIX (from 1990) ported to Linux
Not a joke. Really happened. The story is fascinating. ⌘ Read more
[47°09′30″S, 126°43′39″W] Raw reading: 0x6288C632, offset +/-3
Action needed by GitHub Connect customers using GHES 3.1 and older to adopt new authentication token format updates
Upgrade to GHES 3.2 or newer by June 3rd to continue using GitHub Connect. ⌘ Read more
Linux Sucks 2022 at 3:30pm Pacific today!
Here’s all the details on how to watch and join the chat! ⌘ Read more
Linux Sucks 2022 is tomorrow!
3:30pm Pacific Time! Wooooo! ⌘ Read more
3 Days Until Linux Sucks 2022!
May 14th. 3:30pm (Pacific). ⌘ Read more
[47°09′26″S, 126°43′02″W] Raw reading: 0x627B9732, offset +/-3
3 Linux distributions that fit on a floppy. Seriously.
Anything over 1.44 MB is just bloat, am I right? ⌘ Read more
Funny Programming Pictures part IV
With 3 about Johnny Depp. How timely. ⌘ Read more
The Lunduke Journal Podcast – May 3, 2022
Listen now (25 min) | Unity & Ratpoison (two Desktop Environments I don’t use) ⌘ Read more
Lunduke Journal hit 40% of our monthly goals in just 3 hours! Let’s take it all the way, baby!
Join us for another live-stream… starting… NOW. ⌘ Read more
RT by @mind_booster: As climate change reshapes life on earth, it may also become the single biggest upstream driver of pandemic risk. Our new study in @Nature simulates how 3,139 species will share viruses - and create new spillover risk hotspots - over the next 50 years.
https://www.nature.com/articles/s41586-022-04788-w
As climate change reshapes life on earth, it may also become the single biggest upstream driver of pandemic risk. Our new study in @Nature simulates how … ⌘ Read more
Why I now mute my watch
I am a user of a smartwatch. It is already the third smartwatch in my life (first the Sony SmartWatch 3, then the Samsung Galaxy Watch and now the Galaxy Watch 4) and I am actually quite satisfied with it. I always need an easy way to see the time, even when I’m riding my bike and can’t look at my smartphone (being on time is important to me!), plus it counts my steps and gives me the ability to view notifications right on my wrist so I don’t always have to get my smartphone out of my pocket firs … ⌘ Read more
GitHub Desktop 3.0 brings better integration for your pull requests
GitHub Desktop 3.0 brings better integration with your GitHub Pull Requests. You can now receive real time notifications and review the status of your check runs for your pull request. ⌘ Read more
three aspects of feedback loops: 1. speed (how quickly do you get feedback); 2. thickness (how much information do you get about your performance); 3. signal (how related is that feedback to your performance)
Erlang Solutions: Introducing Stream Support In RabbitMQ
In July 2021, streams were introduced to RabbitMQ, utilizing a new blazingly-fast protocol that can be used alongside AMQP 0.9.1. Streams offer an easier way to solve a number of problems in RabbitMQ, including large fan-outs, replay & time travel, and large logs, all with very high throughput (1 million messages per second on a 3-node cluster). Arnaud Cogoluègne s, Staff Engin … ⌘ Read more
“Linux Tycoon 3 - The OS Wars” update released for Linux & DOS
Release 2 is a lot like Release 1. But more betterer. ⌘ Read more
HOTDOGbuntu - Make Ubuntu look like classic Mac, Atari ST, Win 3.1, & Amiga systems
Because more ways to make modern Linux look like retro computing systems is always a good thing. ⌘ Read more
Achieving SLSA 3 Compliance with GitHub Actions and Sigstore for Go modules
Learn how to build packages with SLSA 3 provenance using GitHub Actions. ⌘ Read more
The Lunduke Journal Podcast - April 6, 2022
Listen now (39 min) | Remembering Windows 3.1 on its 30th Birthday ⌘ Read more
[47°09′41″S, 126°43′48″W] Raw reading: 0x624DE331, offset +/-3
Ignite Realtime Blog: Openfire Message of the Day (MotD) plugin version 1.2.3 released
Earlier today, version 1.2.3 of the Openfire Message of the Day plugin was released. This version adds a German translation to the admin console (thank you, Stephan Trzonnek, for providing the translation)!
The updated plugin should become available for download in your Openfire admin console in the course of the next few hours. Alternatively, you can download the plugin dir … ⌘ Read more
The Lunduke Journal Podcast - April 3, 2022
Listen now (41 min) | Elementary OS is dying & Arch for M1 Macs ⌘ Read more
“Linux Tycoon 3 - The OS Wars” now available for download
For Linux and DOS. Tactical Nukes included. ⌘ Read more
❤️ 🎶: Go Fast (KARTRIDER X LINE FRIENDS [Original Game Soundtrack], Pt. 3) by Yoon Do Hyun, KimYeji
3 tools to make your computer look like it is busy hacking and coding… while doing absolutely nothing.
Because sometimes we all want to be lazy while still looking like a l33t hax0r. ⌘ Read more
Mastodon 3.5 finally supports the Update ActivityPub activity. GoBlog supports sending updates for quite a while already, but only Pleroma showed the updated posts and not Mastodon. That would have been useful recently, when I posted “Spaces!” but wanted to post “Tabs!” and updated my post. 😅 ⌘ Read more
I’d like to see more attention put into carving out a subset of Mastodon’s functionality that would allow you to host your fediverse node on a static site, à la blog feeds powered by RSS/Atom. Mastodon 3.5 | Hacker News
Linux Tycoon 3: The OS Wars
A brand new game for Linux and DOS. Releasing on April Fools Day. No joke. ⌘ Read more
[47°09′21″S, 126°43′56″W] Raw reading: 0x623DF511, offset +/-3
Ignite Realtime Blog: GoJara plugin for Openfire version 2.2.3 release
The Ignite Realtime community is happy to announce the immediate availability of a maintenance release of the GoJara plugin for Openfire. GoJara provides an implementation of XEP-0321 “Remote Roster Management” and helps out with monitoring Spectrum 2.
Your Openfire instance should automatically display the availability of the update. Al … ⌘ Read more
I’ve made some fixes to twtxt to make it work with Python 3.7+. I hope @buckket@buckket.org will apply this patch!
#!/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
Prosodical Thoughts: Prosody 0.12.0 released
ÄNTLIGEN! It’s finally here! After 3 years of development and through some chaotic times, Prosody 0.12.0 is released!
What’s the significance of this release? Like many software projects, Prosody follows a “branch” development/release model. We frequently make minor releases with bug fixes and improvements from our stable branch, while we implement more adventurous changes in our development branch, ready for the next major release.
Well, this is one of those adventurous … ⌘ Read more
apparently i have LOST ANOTHER 3 KILOGRAMS WHAT IS GOING ON I EXERCISE LIKE 3 HOURS A WEEK AND EAT LIKE A BEAR AND A TIGER
ryudo has a bit more polish now at v1.3.4; new blog post breaking down how multimonitor support was implemented
ryudo 1.3.0 has multimonitor support!
[47°09′21″S, 126°43′52″W] Raw reading: 0x621CB942, offset +/-3
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
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
[47°09′24″S, 126°43′17″W] Raw reading: 0x62149801, offset +/-3
GitHub Enterprise Server 3.4 improves developer productivity and adds reusable workflows to CI/CD
The GitHub Enterprise Server 3.4 release candidate delivers enhancements to make life easier and more productive, from keyboard shortcuts to auto-generated release notes! ⌘ Read more
Dino: Dino 0.3 Release
Dino is a secure and privacy-friendly messaging application. It uses the XMPP (Jabber) protocol for decentralized communication. We aim to provide an intuitive, clean and modern user interface.
The 0.3 release is all about calls. Dino now supports calls between two or more people!
Calls are end-to-end encrypted and use a direct connection between … ⌘ Read more
#Wordle 237 3/6*
⬛⬛🟨⬛⬛
🟩⬛⬛🟩🟩
🟩🟩🟩🟩🟩
#Wordle 237 3/6*
⬛⬛🟨⬛⬛
🟩⬛⬛🟩🟩
🟩🟩🟩🟩🟩
#Wordle 234 3/6*
🟨🟨⬛🟨🟨
🟨🟨🟩⬛🟨
🟩🟩🟩🟩🟩