It is a pleasure to work with the help system of Borlandâs Turbo C++ 3.0 on DOS. The descriptions are clear and concise. There are short and simple examples. Pretty much every help page is cross-refenced and those links can be clicked.
youtube ads, back button and forwards quickly seems to help (use keyboard shortcuts)
This is some cool development for the go 1.22 standard http mux. Its adding the ability to have path vars and define methods for handlers. Also the errors are quite helpful if you have conflicting paths!
https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/
Je cherche un site qui me permette de calculer la distance parcourue en cliquant juste sur un plan. Pour lâinstant, je nâai rien de très pratique, ou alors jâai mal cherchĂŠ. #help
Pinellas County - Long Run: 13.18 miles, 00:10:13 average pace, 02:14:42 duration
mmm, enjoyed it. at 0100 this morning i woke up to my right calf seizing (not sure if that is the right term). when i finally got up at 0500-ish to prep for the run it was still tight (still is hours later) but stretching helped out a bunch. do not think it affected the run really though. that or i just did not care because i was enjoying the low humidity too much.
#running
@prologic@twtxt.net Iâve had a Teracube phone for about 3 years now. Theirs comes with a guarantee of 4 yearsâif something thatâs covered breaks, you send the phone to them and they fix it and send it back, or they send you a new one. I took advantage of that last year when the screen broke; their tech support even helped me figure out how to wipe the phone when the screen didnât display anything. Pretty painless all around. Have to say Iâve been very happy with it. It doesnât have the top-end features that new big company phones have, but I donât want those features so thatâs not an issue for me. I dunno if itâs available in Australia or if itâs just a US thing.
@jmjl@tilde.green Iâm sorry that Iâm not super knowledgeable about alternatives to jmp.chat but Iâll tell you what I know.
Youâre probably right about jmp.chat not working for you, at least as it is now. You can only get US and Canadian phone numbers through it last time I checked, so if youâre not in either of those countries youâd be making international calls all the time and people who wanted to call you would be making international calls too.
Iâve seen people talk about using SIP as an intermediary: you can bridge SIP-to-XMPP, and bridge SIP-to-PSTN (PSTN = âpacket switched telephone networkâ, meaning normal telephone). You can skip the SIP-to-XMPP side if youâre comfortable using a SIP client. I donât know very much about SIP or PSTN so I am not sure what to recommend, but perhaps this helps your search queries.
There are a fair number of services like TextNow that let you sign up for a real telephone number that you can then use via their app (I wouldnât use TextNowâthey had tons of spyware in their app). I donât know if that kind of service works for you but if it does perhaps youâd be able to find one of them that isnât horrible. This page (https://alternativeto.net/software/jmp-chat/) has a bunch of alternatives; I canât vouch for any of them but maybe itâs a starting point if you want to go this route.
Good luck!
@prologic@twtxt.net aha, thank you, that got me unjammed.
Turns out I thought I had an SSH key set up in github, but github didnât agree with me. So, I re-added the key.
I also had to modify the command slightly to:
ssh -p 2222 -i PRIVATE_GITHUB_KEY GITHUB_USERNAME@cas.run help
since I generate app-specific keypairs and need to specify that for ssh
and I havenât configured it to magically choose the key so I have to specify it in the command line.
Anyhow, that did it. Thanks!
@prologic@twtxt.net so what is the command to use? I did ssh -p 2222 GITHUB_USERNAME@cas.run help
but that gives the same error. Thereâs something missing here.
# ssh -p 2222 cas.run help
The authenticity of host '[cas.run]:2222 ([139.180.180.214]:2222)' can't be established.
RSA key fingerprint is SHA256:i5txciMMbXu2fbB4w/vnElNSpasFcPP9fBp52+Avdbg.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[cas.run]:2222' (RSA) to the list of known hosts.
abucci@cas.run: Permission denied (publickey).
My proof-of-concept Container as a Service (CAS or CaaS) is now up and running. If anyone wants to have a play? đ¤ Thereâs still heaps to do, lots of âfeaturesâ missing, but you can run stuff at least đ
ssh -p 2222 cas.run help
Pinellas County - Long run: 10.70 miles, 00:11:36 average pace, 02:04:13 duration
had a lot going against me today (all self inflicted). got about 4h30m of sleep with too much to drink late in the evening. no hangover or anything, but probably didnât help my rest nor hydration. also it was supposedly 80F with a feels like of 93F when i started and 89F with feels like of 111F when i finished. the legs felt heavy and didnât have the energy to up the cadence and sustain it. it was definitely nice to get out but just one of those days.
#running
I just received this email and I have some questions:
Thisâemailâis fromâaâtrustedâsÎżurce.
You received this abucci@bucci.onl because you have been disconnected from sending and receiving emails.
To continue using this email address we urge you to re-confirm if your account is still active on bucci.onl to officially unlock it to our default settings.
Re-confirm account (a link; removed)
âť This process is very important to help us protect your internet and fight malicious activities.
Since I administer bucci.onl myself, Iâm a little confused. I donât recall disconnecting myself from sending and receiving emails. I donât even know how you disconnect someone from that. I also have never created the email address this email appears to be coming from, but maybe I should trust it anyway since they told me itâs a trusted source? Most puzzlingly, Iâve been sending and receiving emails just fine all morning, so I do not appear to be disconnected from anything? I want to help protect the internet and fight malicious activities, but what should I do??? đ¤đ¤đ¤đ¤đ¤
Li-Fi, light-based networking standard released
Today, the Institute of Electrical and Electronics Engineers (IEEE) has added 802.11bb as a standard for light-based wireless communications. The publishing of the standard has been welcomed by global Li-Fi businesses, as it will help speed the rollout and adoption of the  data-transmission technology standard. Where Li-Fi shines (pun intended) is not just in its purported speeds as fast as 224 GB/s. Fraunhoferâs Dominic Schulz points ou ⌠â Read more
@prologic@twtxt.net hmm, Iâd be up for thinking about that. At least at the protocol and design levelâIâm afraid I canât help much with Go programming.
@prologic@twtxt.net I think those headsets were not particularly usable for things like web browsing because the resolution was too low, something like 1080p if I recall correctly. A very small screen at that resolution close to your eye is going to look grainy. Youâd need 4k at least, I think, before you could realistically have text and stuff like that be zoomable and readable for low vision people. The hardware isnât quite there yet, and the headsets that can do that kind of resolution are extremely expensive.
But yeah, even so I can imagine the metaverse wouldnât be very helpful for low vision people as things stand today, even with higher resolution. Iâve played VR games and that was fine, but Iâve never tried to do work of any kind.
I guess where Iâm coming from is that even though Iâm low vision, I can work effectively on a modern OS because of the accessibility features. I also do a lot of crap like take pictures of things with my smartphone then zoom into the picture to see detail (like words on street signs) that my eyes canât see normally. That feels very much like rudimentary augmented reality that an appropriately-designed headset could mostly automate. VR/AR/metaverse isnât there yet, but it seems at least possible for the hardware and software to develop accessibility features that would make it workable for low vision people.
@stigatle@yarn.stigatle.no @prologic@twtxt.net @eldersnake@we.loveprivacy.club I love VR too, and I wonder a lot whether it can help people with accessibility challenges, like low vision.
But Metaâs approach from the beginning almost seemed like a joke? My first thought was âare they trolling us?â Thereâs open source metaverse software like Vircadia that looks better than Metaâs demos (avatars have legs in Vircadia, ffs) and can already do virtual co-working. Vircadia developers hold their meetings within Vircadia, and there are virtual whiteboards and walls where you can run video feeds, calendars and web browsers. What is Meta spending all that money doing, if their visuals look so weak, and their co-working affordances arenât there?
On top of that, Meta didnât seem to put any kind of effort into moderating the content. There are already stories of bad things happening in Horizon Worlds, like gangs forming and harassing people off of it. Imagine what thatâd look like if 1 billion people were using it the way Meta says they want.
Then, there are plenty of technical challenges left, like people feeling motion sickness or disoriented after using a headset for a long period of time. I havenât heard announcements from Meta that theyâre working on these or have made any advances in these.
All around, it never sounded serious to me, despite how much money Meta seems to be throwing at it. For something with so much promise, and so many obvious challenges to attack first that Meta seems to be ignoring, what are they even doing?
Machine learning model sheds light on how brains recognize communication sounds
In a paper published today in Communications Biology, auditory neuroscientists at the University of Pittsburgh describe a machine learning model that helps explain how the brain recognizes the meaning of communication sounds, such as animal calls or spoken words. â Read more
đ Q: How do we feel about forking the Twtxt spec into what we love and use today in Yarn.social in yarnd
, tt
, jenny
, twtr
and other clients? đ¤ Thinking about (and talking with @xuu@txt.sour.is on IRC) about the possibility of rewriting a completely new spec (no extensions). Proposed name yarn.txt
or âYarnâ. Compatibility would remain with Twtxt in the sense that we wouldnât break anything per se, but weâd divorce ourselves from Twtxt and be free to improve based on the needs of the community and not the ideals of those that donât use, contribute in the first place or fixate on nostalgia (which doesnât really help anyone).
On LinkedIn I see a lot of posts aimed at software developers along the lines of âIf youâre not using these AI tools (X,Y,Z) youâre going to be left behind.â
Two things about that:
- No youâre not. If you have good soft skills (good communication, show up on time, general time management) then youâre already in excellent shape. No AI can do that stuff, and for that alone no AI can replace people
- This rhetoric is coming directly from the billionaires who are laying off tech people by the 100s of thousands as part of the class war theyâve been conducting against all working people since the 1940s. They want you to believe that you have to scramble and claw over one another to learn the âAIâ that theyâre forcing onto the world, so that you stop honing the skills that matter (see #1) and are easier to obsolete later. Donât fall for it. Itâs far from clear how this will shake out once governments get off their asses and start regulating this stuff, by the wayâmost of these âAIâ tools are blatantly breaking copyright and other IP laws, and some day thatâll catch up with them.
That said, it is helpful to know thy enemy.
Iâm not super a fan of using json. I feel we could still use text as the medium. Maybe a modified version to fix any weakness.
What if instead of signing each twt individually we generated a merkle tree using the twt hashes? Then a signature of the root hash. This would ensure the full stream of twts are intact with a minimal overhead. With the added bonus of helping clients identify missing twts when syncing/gossiping.
Have two endpoints. One as the webfinger to link profile details and avatar like you posted. And the signature for the merkleroot twt. And the other a pageable stream of twts. Or individual twts/merkle branch to incrementally access twt feeds.
I needed something to help with a morning schedule for two kiddos. It highlights the current 5-minute block as it goes. I think this was my first time reaching for JavaScript for a personal project. https://sidequest.club/stages.html
@eldersnake@we.loveprivacy.club Several reasons:
- Itâs another language to learn (SQL)
- It adds another dependency to your system
- Itâs another failure mode (database blows up, scheme changes, indexs, etc)
- It increases security problems (now you have to worry about being SQL-safe)
And most of all, in my experience, it doesnât actually solve any problems that a good key/value store can solve with good indexes and good data structures. Iâm just no longer a fan, I used to use MySQL, SQLite, etc back in the day, these days, nope I wouldnât even go anywhere near a database (for my own projects) if I can help it â Itâs just another thing that can fail, another operational overhead.
pass
on my machine:
@abucci@anthony.buc.ci So.. The issue is that its showing the password by default? Would making an alias to always include the -c help? We can probably engage Jason with a PR to enable a more hardened approach when desired. Iâve spoken to him before and is generally a pretty open to ideas.
I found this app that was created by the gopass author that does copy by default and has a tui or GUI mode https://github.com/cortex/ripasso
@prologic@twtxt.net see where its used maybe that can help.
https://github.com/sour-is/ev/blob/main/app/peerfinder/http.go#L153
This is an upsert. So I pass a streamID which is like a globally unique id for the object. And then see how the type of the parameter in the function is used to infer the generic type. In the function it will create a new *Info and populate it from the datastore to pass to the function. The func will do its modifications and if it returns a nil error it will commit the changes.
The PA type contract ensures that the type fulfills the Aggregate interface and is a pointer to type at compile time.
A Modest Robot Levy Could Help Combat Effects of Automation On Income Inequality In US, Study Suggests
An anonymous reader quotes a report from MIT News: What if the U.S. placed a tax on robots? The concept has been publicly discussed by policy analysts, scholars, and Bill Gates (who favors the notion). Because robots can replace jobs, the idea goes, a stiff tax on them ⌠â Read more
Twitter has a new âsocial platformsâ policy⌠is it maddening? Hilarious? Ridiculous? All of the above? I laughed, but to be clear, I donât think âfunnyâ is a good way to describe it.
yarns
will get reused directly into yarnd
, except that I'll use the bluge indexer instead.
@prologic@twtxt.net, search for âquarkâ and you will get quack, quart, quirk, and all possible iterations. Not too helpful.
@prologic@twtxt.net Error handling especially in Go is very tricky I think. Even though the idea is simple, itâs fairly hard to actually implement and use in a meaningful way in my opinion. All this error wrapping or the lack of it and checking whether some specific error occurred is a mess. errors.As(âŚ)
just doesnât feel natural. errors.Is(âŚ)
only just. I mainly avoided it. Yesterday evening I actually researched a bit about that and found this article on errors with Go 1.13. It shed a little bit of light, but I still have a long way to go, I reckon.
We tried several things but havenât found the holy grail. Currently, we have a mix of different styles, but nothing feels really right. And having plenty of different approaches also doesnât help, thatâs right. I agree, error messages often end up getting wrapped way too much with useless information. We havenât found a solution yet. We just noticed that it kind of depends on the exact circumstances, sometimes the caller should add more information, sometimes itâs better if the callee already includes what it was supposed to do.
To experiment and get a feel for yesterdayâs research results I tried myself on the combined log parser and how to signal three different errors. Iâm not happy with it. Any feedback is highly appreciated. The idea is to let the caller check (not implemented yet) whether a specific error occurred. That means I have to define some dedicated errors upfront (ErrInvalidFormat
, ErrInvalidStatusCode
, ErrInvalidSentBytes
) that can be used in the err == ErrInvalidFormat
or probably more correct errors.Is(err, ErrInvalidFormat)
check at the caller.
All three errors define separate error categories and are created using errors.New(âŚ)
. But for the invalid status code and invalid sent bytes cases I want to include more detail, the actual invalid number that is. Since these errors are already predefined, I cannot add this dynamic information to them. So I would need to wrap them Ă la fmt.Errorf("invalid sent bytes '%s': %w", sentBytes, ErrInvalidSentBytes")
. Yet, the ErrInvalidSentBytes
is wrapped and can be asserted later on using errors.Is(err, ErrInvalidSentBytes)
, but the big problem is that the message is repeated. I donât want that!
Having a Python and Java background, exception hierarchies are a well understood concept Iâm trying to use here. While typing this long message it occurs to me that this is probably the issue here. Anyways, I thought, I just create a ParseError
type, that can hold a custom message and some causing error (one of the three ErrInvalid*
above). The custom message is then returned at Error()
and the wrapped cause will be matched in Is(âŚ)
. I then just return a ParseError{fmt.Sprintf("invalid sent bytes '%s'", sentBytes), ErrInvalidSentBytes}
, but that looks super weird.
I probably need to scrap the âparent errorâ ParseError
and make all three âsuberrorsâ three dedicated error types implementing Error() string
methods where I create a useful error messages. Then the caller probably could just errors.Is(err, InvalidSentBytesError{})
. But creating an instance of the InvalidSentBytesError
type only to check for such an error category just does feel wrong to me. However, it might be the way to do this. I donât know. To be tried. Opinions, anyone? Implementing a whole new type is some effort, that I want to avoid.
Alternatively just one ParseError
containing an error kind enumeration for InvalidFormat
and friends could be used. Also seen that pattern before. But that would then require the much more verbose var parseError ParseError; if errors.As(err, &parseError) && parseError.Kind == InvalidSentBytes { ⌠}
or something like that. Far from elegant in my eyes.
Health Data
â Read more
started adding follows, decided to keep my list in the header here, hope it helps with discoverability and making new connections :)) #twtxt #community
Alright, check this out. I just kinda completed todayâs project of converting a jeans into a saw bag. Itâs not fully done, the side seams on the flap need some more hand sewing, thatâs for sure. No, I donât have a sewing machine. Yet?
At first I wanted to put in the saw on the short side, but that would have made for more sewing work and increased material consumption. As a Swabian my genes force me to be very thrifty. Slipping in on the long side had the benefit of using the bottom trouser leg without any modification at all. The leg tapers slightly and gets wider and wider the more up you go. At the bottom itâs not as extreme as at the top.
The bag is made of two layers of cloth for extra durability. The double layers help to hide the inner two metal snap fastener counter parts, so the saw blade doesnât get scratched. Not a big concern, but why not doing it, literally no added efforts were needed. Also I reckon it cuts off the metal on metal clinking sounds.
The only downside I noticed right after I pressed in the receiving ends of the snap fasteners is that the flap overhangs the bag by quite a lot. I fear thatâs not really user-friendly. Oh well. Maybe I will fold it shorter and sew it on. Letâs see. The main purpose is to keep the folding saw closed, it only locks in two open positions.
Two buttons would have done the trick, with three I went a bit overkill. In fact the one in the middle is nearly sufficient. Not quite, but very close. But overkill is a bit my motto. The sides making up the bag are sewed together with like five stitch rows. As said in the introduction, the flap on the hand needs some more love.
Oh, and if I had made it in a vertical orientation I would have had the bonus of adding a belt loop and carrying it right along me. In the horizontal layout thatâs not possible at all. The jeans cloth is too flimsy, the saw will immediately fall out if I open the middle button. Itâs not ridgid enough. Anyways, I call it a success in my books so far. Definitely had some fun.
#!/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
Tractor Beam
â Read more
Startup Aims To Help Software Companies Shift To Usage-Based Pricing Models
The startup Metronome âclaims to have developed a billing and data infrastructure platform that is capable of âreliablyâ processing data at scale so that usage-based companies can iterate on business models without code changes,â reports TechCrunch. âIt does this by providing businesses with real-time APIs for their customer ⌠â Read more
@lyse@lyse.isobeef.org this might be of help https://wordle.at/
Netflix Raises Monthly Subscription Prices in US, Canada
Netflix has raised its monthly subscription price by $1 to $2 per month in the United States depending on the plan, the company said on Friday, to help pay for new programming to compete in the crowded streaming TV market. From a report: The standard plan, which allows for two simultaneous streams, now costs $15.49 per month, up from $13.99, in the Unite ⌠â Read more
Jerome Powell Says the Fed is Prepared To Raise Rates To Tame Inflation
Jerome H. Powell, the Federal Reserve chair, told lawmakers on Tuesday that a rapidly healing economy no longer needed as much help from the central bank and that keeping inflation in check â including by raising interest rates â would be critical for enabling a stable expansion that benefits workers. From a report: Mr. Powell, ⌠â Read more
@movq@www.uninformativ.de
No worries, I understood you perfectly. My reply was merely a commentary, because some hereâspecially the youth, and I have a 20 years old sonâthink that the vaccine makes the 100% impervious, and thus behave pretty stupidly.
I am the one in charge of bringing food, and helping the elderly in the family, so I take super extra precautions⌠for their sake.
@prologic@twtxt.net I knew you were short sided from day one I saw Yarn. On desktop everything is huge, and I assumed it was to cater short-sightedness. Also, you have enabled underlines on buttons on iOS, bold and bigger fonts, etc., so that was also a give away. Sorry if I digress, but, glasses wouldnât help? I have to wear mine all the time, otherwise I am also near blind myself!
@movq@www.uninformativ.de 12,342 twts, totalling 6.2 MB. Would deleting help, or will they come back? I guess there is one way to find out! đ
@xuu@txt.sour.is yikes the style sheet for blogs needs help.
Anyone here good with Go and feel like helping me build our a âDirect Messagesâ feature? I was going to pay someone on Upwork to do this, but Iâve received very few applicants (just one!) and they arenât that good (stock standard crappy Bootstrap experience and no evidence of any experience with Go).
@prologic@twtxt.net @twtxt@txt.sour.is I have noticed that I will get some duplicate web mention notifications. some kind of dedup would be helpful.
Donated 500ml of my own blood today at the Uniklinik in DĂźsseldorf to help others in need.
@von@tilde.town Understanding you. For me: keeping a bullet-journal on a paper notebook helped me herd my chaotic mind into manageable streams. See https://bulletjournal.com
Created an Indieweb.org wiki article about twtxt - help expand it please - https://indieweb.org/twtxt
I usually tell people to read The Goal by Eli Goldratt. Itâs weird in a lot of ways, but it really helped me understand the roots of modern agile development process.