@mckinley@twtxt.net Yes, I’m still with jmp.chat, and still very happy with them overall. Their beta period ended and their pricing increased a bit, so that’s worth a bit of consideration. I also managed to get one of their eSIMs. I’m slightly less happy with that aspect of their service, though they seem to be actively working on improving it and I knew in advance this was an early beta kind of thing and likely to have issues.
The only unreliability with calls that I’ve noticed was traceable to the unreliability of my own internet connection. I’ve confused incoming calls by simultaneously making and taking calls from the computer and the phone, but I think it’s understandable that problems might arise and that’s not a real use case for me. Once or twice I did not receive a text transcription of a voice mail, but the support is usually quick to address things like that.
I host my own XMPP server and have for a good decade now, and that’s what I use with jmp.chat. I can’t speak to the quality of their hosting options.
Group texting works fine for me if one of the other parties initiates the group text. I haven’t tried to initiate my own group text in well over a year; last time I did, it didn’t work. That may or may not be a problem for you, and it may or may not have been fixed by now. Worth investigating more if it’s important. I should also say I’ve only ever used group texts with 3 participants, and can’t speak to what happens if there are more nor whether there are upper limits.
Group texts don’t use MUC. Rather, they use a special syntax in the JID, something like “+1XXX,+1YYY,…,+1ZZZ@cheogram.com”, where the + and , are required, the XXX, YYY, through ZZZ are the phone numbers (no dashes or other special chars just digits), and the @cheogram.com at the end is required.
I recommend the cheogram app if you’re on android. It has a lot of nice features on top of the Conversations base. I use gajim on my (linux) computer and it works well with jmp.chat.
I’m happy to answer other questions if you have them!
On my blog: Free Culture Book Club — Project Ballad, part 3 https://john.colagioia.net/blog/2023/08/12/project-ballad-3.html #freeculture #bookclub
@prologic@twtxt.net The hackathon project that I did recently used openai and embedded the response info into the prompt. So basically i would search for the top 3 most relevant search results to feed into the prompt and the AI would summarize to answer their question.
Most of the can run locally have such a small training set they arnt worth it. Are more like the Markov chains from the subreddit simulator days.
There is one called orca that seems promising that will be released as OSS soon. Its running at comparable numbers to OpenAI 3.5.
On my blog: Free Culture Book Club — Green Comet, part 3 https://john.colagioia.net/blog/2023/06/17/green-comet-3.html #freeculture #bookclub
@prologic@twtxt.net that would work if it was using shamir’s secret sharing .. although i think its typically 3 of 5 so you get 3, one to the company, and one to the “third party”. so you can recover all you want.. but if the company or 3rd wants to they need one of your 3 to recover.
but still .. if they are providing them then whats the point of trusting they don’t have copies.
According to the RedMonk programming language rankings from Jan 2023, Go and Scala are tied at 14th place 😏
1 JavaScript
2 Python
3 Java
4 PHP
5 C#
6 CSS
7 TypeScript
7 C++
9 Ruby
10 C
11 Swift
12 Shell
12 R
14 Go
14 Scala
16 Objective-C
17 Kotlin
18 PowerShell
19 Rust
19 Dart
On my blog: Free Culture Book Club — Expedition Sasquatch, part 3 https://john.colagioia.net/blog/2023/05/06/sasquatch-3.html #freeculture #bookclub
@prologic@twtxt.net I’m a bit of a GPU junkie (😳) and I have 3, 2019-era GPUs lying around. One of these days when I have Free Time™ I’ll put those together into some kind of cluster….
On my blog: Free Culture Book Club — Snowbound Blood part 3 https://john.colagioia.net/blog/2023/04/08/snowbound-blood-3.html #freeculture #bookclub
So. Some bits.
i := fIndex(xs, 5.6)
Can also be
i := Index(xs, 5.6)
The compiler can infer the type automatically. Looks like you mention that later.
Also the infer is super smart.. You can define functions that take functions with generic types in the arguments. This can be useful for a generic value mapper for a repository
func Map[U,V any](rows []U, fn func(U) V) []V {
out := make([]V, len(rows))
for i := range rows { out = fn(rows[i]) }
return out
}
rows := []int{1,2,3}
out := Map(rows, func(v int) uint64 { return uint64(v) })
I am pretty sure the type parameters goes the other way with the type name first and constraint second.
func Foo[comparable T](xs T, s T) int
Should be
func Foo[T comparable](xs T, s T) int
i have one box with virmach that is something like 3 vcpu 5.88g ram and 15g disk. for $29/year.
On my blog: Free Culture Book Club — Life Blood, chapters 6 – 9 https://john.colagioia.net/blog/2023/01/14/life-blood-3.html #freeculture #bookclub
On my blog: Free Culture Book Club — Life Blood, chapters 1 – 3 https://john.colagioia.net/blog/2022/12/31/life-blood-1.html #freeculture #bookclub
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 ""
}()
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.
#!/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
Off to my first health check-up in 3 ½ years. I’m almost 40 pounds lighter than I was back then, so I hope this goes well.
#Wordle 237 3/6*
⬛⬛🟨⬛⬛
🟩⬛⬛🟩🟩
🟩🟩🟩🟩🟩
#Wordle 234 3/6*
🟨🟨⬛🟨🟨
🟨🟨🟩⬛🟨
🟩🟩🟩🟩🟩
Web3 is a scam. Case in point. The complexity of systems increasing the points of failure. From this article.
vs.
On the blog: Real Life in Star Trek, The Slaver Weapon, part 3 https://john.colagioia.net/blog/2021/12/02/slaver-3.html #scifi #startrek #closereading
On the blog: Free Culture Book Club — if then else, part 3 https://john.colagioia.net/blog/2021/11/27/else3.html #freeculture #bookclub
💉3️⃣✅ Thank you, Dolly Parton!
So, first multi-line test, because I coudn’t wait. 😄
- One line - Two lines - Three lines
And:
- One line 2. Two lines 3. Three lines
How would jenny handle multiline twts? Let’s find out! - One - Two - Three And: 1. One 2. Two 3. Three
On the blog: Free Culture Book Club — Affair, Part 3 https://john.colagioia.net/blog/2021/09/25/affair3.html #freeculture #bookclub
On the blog: Free Culture Book Club — Typhoon, Part 3 https://john.colagioia.net/blog/2021/08/21/typhoon3.html #freeculture #bookclub
On the blog: Real Life in Star Trek, Season 3 Summary https://john.colagioia.net/blog/2021/08/12/season3.html #scifi #startrek #closereading
Today I swapped out our water heater for a new hybrid one. It took twice as long as it should have and 3 extra trips to the hardware store, but it doesn’t seem to be leaking and is producing hot water, so 🎉🎊🎇
On the blog: Free Culture Book Club — Moses und Aron, ch 1-3 https://john.colagioia.net/blog/2021/04/17/moses1.html #freeculture #bookclub
On the blog: Free Culture Book Club — The Spiraling Web, Part 3 https://john.colagioia.net/blog/2021/03/13/spiraling3.html #freeculture #bookclub
@xuu@txt.sour.is Not too happy with WKD’s use of CNAME over SRV for discovery of openpgpkey.. That breaks using SNI pretty quick. I suppose it was setup as a temporary workaround anyhow in the RFC..
On the blog: Free Culture Book Club — Where Are the Joneses? Part 3 https://john.colagioia.net/blog/2020/10/10/joneses3.html #freeculture #bookclub
On the blog: Free Culture Book Club — Morevna, Episode 3 https://john.colagioia.net/blog/2020/08/08/morevna3.html #freeculture #bookclub
On the blog: Free Culture Book Club — Seeds, Chapter 5 to Chapter 6 https://john.colagioia.net/blog/2020/06/06/seeds-3.html #freeculture #bookclub
On the blog: Free Culture Book Club — Seeds, Prologue to Chapter 3 https://john.colagioia.net/blog/2020/05/23/seeds.html #freeculture #bookclub