Searching txt.sour.is

Twts matching #3:
Sort by: Newest, Oldest, Most Relevant
In-reply-to » So... Just out of curiosity (again), back of paper napkin math. Based on Vultr pricing, running my infra in the "Cloud"™ would cost me upwards of $1300 per month. That's about ~10x more than my current power bill for my entire household 😅 (10 VMs of around ~4 vCPUS and 4-6GB of RAM each + 10TB of storage on the NAS)

i have one box with virmach that is something like 3 vcpu 5.88g ram and 15g disk. for $29/year.

⤋ Read More
In-reply-to » So... Just out of curiosity (again), back of paper napkin math. Based on Vultr pricing, running my infra in the "Cloud"™ would cost me upwards of $1300 per month. That's about ~10x more than my current power bill for my entire household 😅 (10 VMs of around ~4 vCPUS and 4-6GB of RAM each + 10TB of storage on the NAS)

i have one box with virmach that is something like 3 vcpu 5.88g ram and 15g disk. for $29/year.

⤋ Read More

ProcessOne: ejabberd 23.01

Image

Almost three months after the previous release, ejabberd 23.01 includes many bug fixes, several improvements and some new features.

A new module, mod_mqtt_bridge, can be used to replicate changes to MQTT topics between local and remote servers.

A more detailed explanation of those topics and other features:

Erlang/OTP 19.3 discouraged

Remember that support for Erlang/OTP 19.3 is discouraged, and will b … ⌘ Read more

⤋ Read More

ProcessOne: ejabberd 23.01

Image

Two months after the previous release, ejabberd 23.01 includes many bug fixes, several improvements and some new features.

A new module, mod_mqtt_bridge, can be used to replicate changes to MQTT topics between local and remote servers.

A more detailed explanation of those topics and other features:

Erlang/OTP 19.3 discouraged

Remember that support for Erlang/OTP 19.3 is discouraged, and will be removed … ⌘ Read more

⤋ Read More

ProcessOne: ejabberd 23.01

Image

Two months after the previous release, ejabberd 23.01 includes many bug fixes, several improvements and some new features.

A new module, mod_mqtt_bridge, can be used to replicate changes to MQTT topics between local and remote servers.

A more detailed explanation of those topics and other features:

Erlang/OTP 19.3 discouraged

Remember that support for Erlang/OTP 19.3 is discouraged, and will be removed … ⌘ Read more

⤋ Read More

Basecamp Details ‘Obscene’ $3.2 Million Bill That Prompted It To Quit the Cloud
An anonymous reader shares a report: David Heinemeier Hansson, CTO of 37Signals – which operates project management platform Basecamp and other products – has detailed the colossal cloud bills that saw the outfit quit the cloud in October 2022. The CTO and creator of Ruby On Rails did all the sums and came up with an e … ⌘ Read more

⤋ Read More

Consciousness and Materialism

Hume’s Parallel

David Hume has often been quoted for his “Is” vs. “Ought” distinction.
The argument is that fact and morality are two different domains, and from no accumulation of statements of fact alone can we ever jump to a statement of morality.

We can say statements of fact such as:

  1. To be murdered is potentially painful.
  2. To be murdered is irreversible.
  3. Murder causes social dysfunction.
  4. Etc.

By merely my collecting these, we haven’t proven that _M … ⌘ Read more

⤋ Read More

Sondagem Intercampus (e comparação com as últimas eleições): PS 31.1 (-10.3), PSD 29.5 (+1.8), CH 10.7 (+3.1), IL 7.6 (+2.7), BE 7.5 (+3.1), CDU 3.7 (-0.6), PAN 3.7 (+2.1), L 2.4 (+1.1), CDS 0.7 (-0.9)
Sondagem Intercampus (e comparação com as últimas eleições): PS 31.1 (-10.3), PSD 29.5 (+1.8), CH 10.7 (+3.1), IL 7.6 (+2.7), BE 7.5 (+3.1), CDU 3.7 (-0.6), PAN 3.7 (+2.1), L 2.4 (+1.1), CDS 0.7 (-0.9)

[nitter.net/JosMatias17/status/1614565255312736257#m](https://nitter.net/JosMatias17/status/161456525531273 … ⌘ Read more

⤋ Read More

Ó @jornaldocentro , como fonte publicitária vocês aparentam ser muito bons, mas se calhar se não tentassem meter 3 anúncios num só ecrã talvez sobrasse algum espaço para, sei, lá, a notícia…
Ó @jornaldocentro , como fonte publicitária vocês aparentam ser muito bons, mas se calhar se não tentassem meter 3 anúncios num só ecrã talvez sobrasse algum espaço para, sei, lá, a notícia…

Image

Read more

⤋ Read More

**RT by @mind_booster: Remember:

  1. We’re at 1.25/1.75°C of global warming and rising fast.

  2. Fossil fuel emissions should have peaked in 2022 to avoid 2.5°C, but they didn’t.

  3. Forest degradation is getting worse.

  4. Capitalism has put world-ending 2.25/2.75°C by 2045- 2090 in the pipelines. 🧵**
    Remember:

1. We’re at 1.25/1.75°C of global warming and rising fast.

2. Fossil fuel emissions should have peaked in 2022 to avoid 2.5°C, but they didn’t.

3. Forest degradation is getting worse.

4. Capitalis … ⌘ Read more

⤋ Read More

**RT by @mind_booster: 1.

‘equilibrium climate sensitivity is at least ~4°C with a likely range of 3.5-5.5°C.

global warming in the pipeline is greater than prior estimates.’

James Hansen and colleagues release new work for discussion.

This should be front page news.

https://arxiv.org/abs/2212.04474**
1.

‘equilibrium climate sensitivity is at least ~4°C with a likely range of 3.5-5.5°C.

global warming in the pipeline is greater than prior estimates.’

James Hansen and colleagues release new work for discus … ⌘ Read more

⤋ Read More

Ignite Realtime Blog: Spark 3.0.1 Released
The Ignite Realtime community is happy to announce the release of Spark 3.0.1 version.

This release contains mostly fixes. macOS now uses the default FlatLaf LaF. The user can also choose the type of tabs “scroll” as in Spark 3.0.0 or “wrap” as in Spark 2.X. See screenshot below. And also for some users, Spark not saved history.

Image


… ⌘ Read more

⤋ Read More
In-reply-to » What do you feel when you listen to something you didn't believe it's true?

@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 🤣

⤋ Read More

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

⤋ Read More

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!

What’s New

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

⤋ 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

⤋ 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

⤋ 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

⤋ Read More

**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.**
    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

⤋ 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

⤋ 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

⤋ 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

⤋ 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

⤋ Read More

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

⤋ 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

⤋ 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)

⤋ Read More

**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

⤋ 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.

What’s New

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 🎉

![Emoji auto-complete](ht … ⌘ Read more

⤋ Read More

The Android kernel mitigations obstacle race
In this post I’ll exploit CVE-2022-22057, a use-after-free in the Qualcomm gpu kernel driver, to gain root and disable SELinux from the untrusted app sandbox on a Samsung Z flip 3. I’ll look at various mitigations that are implemented on modern Android devices and how they affect the exploit. ⌘ Read more

⤋ Read More
In-reply-to » Have you heard about the guy who worked on the Google AI chat bot? It is more than a chat bot and the conversation he published (got put on paid leave for doing that) is pretty scary : https://cajundiscordian.medium.com/is-lamda-sentient-an-interview-ea64d916d917

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.

⤋ Read More
In-reply-to » Have you heard about the guy who worked on the Google AI chat bot? It is more than a chat bot and the conversation he published (got put on paid leave for doing that) is pretty scary : https://cajundiscordian.medium.com/is-lamda-sentient-an-interview-ea64d916d917

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.

⤋ 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

⤋ 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.

What’s New

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

⤋ 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

⤋ 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

⤋ 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

⤋ 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

⤋ 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

⤋ 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)

⤋ Read More

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

⤋ Read More

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

⤋ 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

⤋ Read More

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

⤋ Read More

@prologic@twtxt.net

#!/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

⤋ Read More

@prologic@twtxt.net

#!/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

⤋ Read More

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

⤋ Read More

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

⤋ 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.

Image

Image

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

⤋ Read More

GoCN 每日新闻 (2022-01-21)
GoCN 每日新闻 (2022-01-21)

  1. stream: go 语言并发通信设计模式的泛型实现https://github.com/devnw/stream
  2. 一个比” ldflags” 更好的方式来添加构建版本号到 go 二进制的方式:https://levelup.gitconnected.com/a-better-way-than-ldflags-to-add-a-build-version-to-your-go-binaries-2258ce419d2d
  3. 怎么处理 HTTP 错误” context canceld”[https://www.reddit.com/r/golang/comments/s7o5ay/investigating_context_canceled_http_err … ⌘ Read more

⤋ Read More

GoCN 每日新闻(2022-01-20)

  1. 从 CPU 角度理解 Go 中的结构体内存对齐https://gocn.vip/topics/20967
  2. 博客 Go beyond workhttps://changelog.com/gotime/212
  3. 如何绘制随时间变化的 Go 测试覆盖率https://osinet.fr/go/en/articles/plotting-go-test-coverage/
  4. Redix v5 一个简单的 KeyValue 存储系统https://github.com/alash3al/redix?_v=5.0.0
  5. 既然 IP 层会分片,为什么 TCP 层也还要分段[https://mp.weixin.qq.com/s/0boFt8cOAbmjH2IRr7XtY … ⌘ Read more

⤋ Read More