Termux
same thing @doesnm uses and it worked š Media
@doesnm@doesnm.p.psf.lt No itās all good⦠Iāve just rebuilt it from master and it doesnāt look like anything is broken:
~/GitRepos> git clone https://github.com/plomlompom/htwtxt.git
Cloning into 'htwtxt'...
remote: Enumerating objects: 411, done.
remote: Total 411 (delta 0), reused 0 (delta 0), pack-reused 411 (from 1)
Receiving objects: 100% (411/411), 87.89 KiB | 430.00 KiB/s, done.
Resolving deltas: 100% (238/238), done.
~/GitRepos> cd htwtxt
master ~/GitRepos/htwtxt> go mod init htwtxt
go: creating new go.mod: module htwtxt
go: to add module requirements and sums:
go mod tidy
master ~/GitRepos/htwtxt> go mod tidy
go: finding module for package github.com/gorilla/mux
go: finding module for package golang.org/x/crypto/bcrypt
go: finding module for package gopkg.in/gomail.v2
go: finding module for package golang.org/x/crypto/ssh/terminal
go: found github.com/gorilla/mux in github.com/gorilla/mux v1.8.1
go: found golang.org/x/crypto/bcrypt in golang.org/x/crypto v0.29.0
go: found golang.org/x/crypto/ssh/terminal in golang.org/x/crypto v0.29.0
go: found gopkg.in/gomail.v2 in gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
go: finding module for package gopkg.in/alexcesaro/quotedprintable.v3
go: found gopkg.in/alexcesaro/quotedprintable.v3 in gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc
master ~/GitRepos/htwtxt> go build
master ~/GitRepos/htwtxt> ll
.rw-r--r-- aelaraji aelaraji 330 B Fri Nov 22 20:25:52 2024 ī§ go.mod
.rw-r--r-- aelaraji aelaraji 1.1 KB Fri Nov 22 20:25:52 2024 ī§ go.sum
.rw-r--r-- aelaraji aelaraji 8.9 KB Fri Nov 22 20:25:06 2024 ī§ handlers.go
.rwxr-xr-x aelaraji aelaraji 12 MB Fri Nov 22 20:26:18 2024 ļ htwtxt <-------- There's the binary ;)
.rw-r--r-- aelaraji aelaraji 4.2 KB Fri Nov 22 20:25:06 2024 ī§ io.go
.rw-r--r-- aelaraji aelaraji 34 KB Fri Nov 22 20:25:06 2024 ī LICENSE
.rw-r--r-- aelaraji aelaraji 8.5 KB Fri Nov 22 20:25:06 2024 ī§ main.go
.rw-r--r-- aelaraji aelaraji 5.5 KB Fri Nov 22 20:25:06 2024 ī README.md
drwxr-xr-x aelaraji aelaraji 4.0 KB Fri Nov 22 20:25:06 2024 ļ templates
@bender@twtxt.net here:
FROM golang:alpine as builder
ARG version
ENV HTWTXT_VERSION=$version
WORKDIR $GOPATH/pkg/
RUN wget -O htwtxt.tar.gz https://github.com/plomlompom/htwtxt/archive/refs/tags/${HTWTXT_VERSION}.tar.gz
RUN tar xf htwtxt.tar.gz && cd htwtxt-${HTWTXT_VERSION} && go mod init htwtxt && go mod tidy && go install htwtxt
FROM alpine
ARG version
ENV HTWTXT_VERSION=$version
RUN mkdir -p /srv/htwtxt
COPY --from=builder /go/bin/htwtxt /usr/bin/
COPY --from=builder /go/pkg/htwtxt-${HTWTXT_VERSION}/templates/* /srv/htwtxt/templates/
WORKDIR /srv/htwtxt
VOLUME /srv/htwtxt
EXPOSE 8000
ENTRYPOINT ["htwtxt", "-dir", "/srv/htwtxt", "-templates", "/srv/htwtxt/templates"]
Donāt forget the --build-arg version="1.0.7"
for example when building this one, although there isnāt much difference between the couple last versions.
P.S: I may have effed up changing htwtxtās files directory to /srv/htwtxt
when the command itself defaults to /root/htwtxt
so youāll have to throw in a -dir whenever you issue an htwtxt command (i.e: htwtxt -adduser somename:somepwd -dir /srv/htwtxt
⦠etc)
P.S:
~/remote/htwtxt Ā» podman image list htwtxt the@wks
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/htwtxt 1.0.5-alpine 13610a37e347 3 hours ago 20.1 MB
localhost/htwtxt 1.0.7-alpine 2a5c560ee6b7 3 hours ago 20.1 MB
docker.io/buckket/htwtxt latest c0e33b2913c6 8 years ago 778 MB
@doesnm@doesnm.p.psf.lt I tried to go install github.com/plomlompom/htwtxt@1.0.7
as well as
# this is snippet from what I used for the Dockerfile but I guess it should work just fine.
cd ~/go/pkg && wget -O htwtxt.tar.gz https://github.com/plomlompom/htwtxt/archive/refs/tags/1.0.7.tar.gz
tar xf htwtxt.tar.gz && cd htwtxt-1.0.7 && go mod init htwtxt && go mod tidy && go install htwtxt
both worked just fineā¦
@doesnm@doesnm.p.psf.lt up to you. I have mine to rotate at 1,000 twtxts. I have vomited over 400, so far. I have some way to go till rotation. :-D
I think itās centralized shit with lying about decentralization. All network is worked by two centralized things: plc.directory (did storage?) and network relay (bsky.network). You can host your relay but this require TOO MUCH resources (2TB storage and 32GB RAM read more ). Also i try running PDS and: 1. I canāt register account via app,only via cli 2. It leaked on 2GB virtual machine then killed by oom after trying to register account via cli
@bender@twtxt.net I now read the German Wikipedia article on fog. These are some really beautiful pictures:
- https://upload.wikimedia.org/wikipedia/commons/a/a9/Nebelbank_in_der_W%C3%BCste_Namib_bei_Aus_%282018%29.jpg
- https://upload.wikimedia.org/wikipedia/commons/1/17/Space_Shuttle_Challenger_moving_through_fog.jpg
- https://upload.wikimedia.org/wikipedia/commons/9/96/Fog_Bow_%2819440790708%29.jpg
- https://upload.wikimedia.org/wikipedia/commons/a/ac/360_degrees_fogbow.jpg
China unveils $1.4 trillion stimulus package + 1 more story
China launches a $1.4 trillion fiscal package to support its economy; Earth is set to experience its hottest year ever, exceeding 1.5 degrees Celsius. ā Read more
@eapl.me@eapl.me here are my replies (somewhat similar to Lyseās and Jamesā)
Metadata in twts: Key=value is too complicated for non-hackers and hard to write by hand. So if there is a need then we should just use #NSFS or the alt-text file in markdown image syntax

if something is NSFWIDs besides datetime. When you edit a twt then you should preserve the datetime if location-based addressing should have any advantages over content-based addressing. If you change the timestamp the its a new post. Just like any other blog cms.
Caching, Yes all good ideas, but that is more a task for the clients not the serving of the twtxt.txt files.
Discovery: User-agent for discovery can become better. Iām working on a wrapper script in PHP, so you donāt need to go to Apaches log-files to see who fetches your feed. But for other Gemini and gopher you need to relay on something else. That could be using my webmentions for twtxt suggestion, or simply defining an email metadata field for letting a person know you follow their feed. Interesting read about why WebMetions might be a bad idea. Twtxt being much simple that a full featured IndieWeb sites, then a lot of the concerns does not apply here. But thatās the issue with any open inbox. This is hard to solve without some form of (centralized or community) spam moderation.
Support more protocols besides http/s. Yes why not, if we can make clients that merge or diffident between the same feed server by multiples URLs
Languages: If the need is big then make a separate feed. I donāt mind seeing stuff in other langues as it is low. You got translating tool if you need to know whats going on. And again when there is a need for easier switching between posting to several feeds, then itās about building clients with a UI that makes it easy. No something that should takes up space in the format/protocol.
Emojis: Iām not sure what this is about. Do you want to use emojis as avatar in CLI clients or it just about rendering emojis?
Pinellas County - 4 x {1km [1ā30ā]} 4 x {400m [1ā]}: 5.52 miles, 00:09:56 average pace, 00:54:52 duration
first four intervals were good. needed more time to rest i think between the 400m intervals because the humidity was tough again. stopped after the fourth because it was so bad. fema out in full force on the trail, too.
#running
Nearly 20,000 displaced in Paris for Olympics + 1 more story
Nearly 20,000 people displaced in Paris as Olympics approach, with eviction rates rising; US voters decide on abortion rights measures in nine states for the 2024 elections. ā Read more
Been curious to see if can filter out my access.log file and output a list of my twtxt followers just in case Iāve missed someone ⦠I came up with this awk -F '\"' '/twtxt/ {print $(NF-1)}' /var/log/user.log | grep -v 'twtxt\.net' | sort -u | awk '{print $(NF-1) $NF}' | awk '/^\(/'
spaghetti monster of a command and Iām wondering if thereās a more elegant way for achieving the same thing.
@movq@www.uninformativ.de Some more options:
- Summer lightning.
- Obviously aliens!11!!!1
I once saw a light show in the woods originating most likely from a disco a few kilometers away. That was also pretty crazy. There was absolutely zero sound reaching the valley I was in.
Iām seeing strange lights in the sky. None of my cameras are sensitive enough to make a video.
Itās probably one of two things:
- A ship on the nearby river with a lightshow going. Itās rare but it happens.
- A steap hill nearby, cars driving āupwardsā, and since super bright LED lights are normal nowadays, they reflect from the clouds.
Either way, looks fancy.
@doesnm@doesnm.p.psf.lt May I ask which hardware you have? SSD or HDD? How much RAM?
I might be spoiled and very privileged here. Even though my PC is almost 12 years old now, it does have an SSD and tons of RAM (i.e., lots of I/O cache), so starting mutt and opening the mailbox takes about 1-2 seconds here. I hardly even notice it. But I understand that not everybody has fast machines like that. š«¤
Pinellas County - 4 x 5ā (hard) [1ā]: 5.00 miles, 00:09:42 average pace, 00:48:26 duration
nothing to note.
#running
1/4
to mean "first out of four".
@bender@twtxt.net I try to avoid editing. I guess I would write 5/4, 6/4, etc, and hopefully my audience would be sympathetic to my failing.
Anyway, I donāt think my eccentric decision to number my twts in the style of other social media platforms is the only context where someone might write ¼ not meaning a quarter. E.g. January 4, to Americans.
Iām happy to keep overthinking this for as long as you are :-P
@bender@twtxt.net @prologic@twtxt.net Iām not exactly asking yarnd to change. If you are okay with the way it displayed my twts, then by all means, leave it as is. I hope you wonāt mind if I continue to write things like 1/4
to mean āfirst out of fourā.
What has text/markdown
got to do with this? I donāt think Markdown says anything about replacing 1/4
with ¼, or other similar transformations. Itās not needed, because ¼ is already a unicode character that can simply be directly inserted into the text file.
Whatās wrong with my original suggestion of doing the transformation before the text hits the twtxt.txt file? @prologic@twtxt.net, I think it would achieve what you are trying to achieve with this content-type thing: if someone writes 1/4
on a yarnd instance or any other client that wants to do this, it would get transformed, and other clients simply wouldnāt do the transformation. Every client that supports displaying unicode characters, including Jenny, would then display ¼ as ¼.
Alternatively, if you prefer yarnd to pretty-print all twts nicely, even ones from simpler clients, thatās fine too and you donāt need to change anything. My 1/4
-> ¼ thing is nothing more than a minor irritation which probably isnāt worth overthinking.
J-1, ou presque pour ceux qui y vont dĆØs cet aprĆØs-midi! #utopiales2024
@prologic@twtxt.net Iām not a yarnd user, so it doesnāt matter a whole lot to me, but FWIW Iām not especially keen on changing how I format my twts to work around yarndās quirks.
I wonder if this kind of postprocessing would fit better between composing (via yarndās UI) and publishing. So, if a yarnd user types ¼, it could get changed to ¼ in the twtxt.txt file for everyone to see, not just people reading through yarnd. But when I type ¼, meaning first out of four, as a non-yarnd user, the meaning wouldnāt get corrupted. I can always type ¼ directly if thatās what I really intend.
(This twt might be easier to understand if you read it without any transformations :-P)
Anyway, again, Iām not a yarnd user, so do what you will, just know you might not be seeing exactly what I meant.
@prologic@twtxt.net I wrote ¼ (one slash four) by which I meant āthe first out of fourā. twtxt.net is showing it as ¼, a single character that IMO doesnāt have that same meaning (it means 0.25). Similarly, ¾ got replaced with ¾ in another twt. Itās not a big deal. It just looks a little wrong, especially beside the 2/4 and 4/4 in my other two twts.
Simplified twtxt - I want to suggest some dogmas or commandments for twtxt, from where we can work our way back to how to implement different feature like replies/treads:
Itās a text file, so you must be able to write it by hand (ie. no app logic) and read by eye. If you edit a post you change the content not the timestamp. Otherwise it will be considered a new post.
The order of lines in a twtxt.txt must not hold any significant. The file is a container and each line an atomic piece of information. You should be able to run
sort
on a twtxt.txt and it should still work.Transport protocol should not matter, as long as the file served is the same. Http and https are preferred, so it is suggested that feed served via Gopher or Gemini also provide http(s).
Do we need more commandments?
hop, entraĆ®nement terminĆ©, jāai fait le plein dāĆ©nergie avant dāaller donner un sang de qualittĆ© ^^ #EFS #dondusang. Le niveau 7 de la mĆ©thode #lafay est par contre trop longue, je nāai pas assez de temps pour faire Ƨa bien. Tant pis dans ce cas, retour Ć la n°6 et jāy ajouterai 1 exercice jusquāĆ Ć©puisement tirĆ© au sort. Ou alors je ressort le #TRX, il faut qu eje trouve où lāaccrocher. #sport #training
gg=G
and to va"
, ci"
, di{
... in vim the other day š Life will never be the same, I can feel it. ref
@aelaraji@aelaraji.com one i use quite frequently is when i have a list of items (1 per line) and want them sorted but only keep those which are unique: ggV}:sort u
Installing Devuan 3.1 and Migrating to Ceres | https://starbreaker.org/blog/tech/installing-devuan-31-migrating-ceres/index.html
I share I did write up an algorithm for it at some point I think it is lost in a git comment someplace. Iāll put together a pseudo/go code this week.
Super simple:
Making a reply:
- If yarn has one use that. (Maybe do collision check?)
- Make hash of twt raw no truncation.
- Check local cache for shortest without collision
- in SQL:
select len(subject) where head_full_hash like subject || '%'
- in SQL:
Threading:
- Get full hash of head twt
- Search for twts
- in SQL:
head_full_hash like subject || '%' and created_on > head_timestamp
- in SQL:
The assumption being replies will be for the most recent head. If replying to an older one it will use a longer hash.
If we stuck with Blake2b for Twt Hash(es); what do we think we need to reasonably go to in bit length/size?
=> https://gist.mills.io/prologic/194993e7db04498fa0e8d00a528f7be6
e.g: (turns out @xuu@txt.sour.is is right about Blak2b being easy/simple too!):
$ printf "%s\t%s\t%s" "https://example.com/twtxt.txt" "2024-09-29T13:30:00Z" "Hello World!" | b2sum -l 32 -t | awk '{ print $1 }'
7b8b79dd
@prologic@twtxt.net Regarding the new way of generating twt-hashes, to me it makes more sense to use tabs as separator instead of spaces, since the you can just copy/past a line directly from a twtxt-file that already go a tab between timestamp and message. But tabs might be hard to ātypeā when you are in a terminal, since it will activate autocompleteā¦š¤
Another thing, it seems that you sugget we only use the domain in the hash-creation and not the full path to the twtxt.txt
$ echo -e "https://example.com 2024-09-29T13:30:00Z Hello World!" | sha256sum - | awk '{ print $1 }' | base64 | head -c 12
UK Coal
ā Read more
+1 š
Gentlemen, I have a pdf file (1.5MB) which I want to be able to block and copy text writing out of it, but itās locked, preventing this. All I used to do was write it out by hand, or screen shot the text as an image.
Is there any software that opens pdf format for copying and pasting of the text?
More thoughts about changes to twtxt (as if we havenāt had enough thoughts):
- There are lots of great ideas here! Is there a benefit to putting them all into one document? Seems to me this could more easily be a bunch of separate efforts that can progress at their own pace:
1a. Better and longer hashes.
1b. New possibly-controversial ideas like edit: and delete: and location-based references as an alternative to hashes.
1c. Best practices, e.g. Content-Type: text/plain; charset=utf-8
1d. Stuff already described at dev.twtxt.net that doesnāt need any changes.
We wonāt know what will and wonāt work until we try them. So Iām inclined to think of this as a bunch of draft ideas. Maybe later when weāve seen it play out it could make sense to define a group of recommended twtxt extensions and give them a name.
Another reason for 1 (above) is: I like the current situation where all you need to get started is these two short and simple documents:
https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
https://twtxt.readthedocs.io/en/latest/user/discoverability.html
and everything else is an extension for anyone interested. (Deprecating non-UTC times seems reasonable to me, though.) Having a big long ātwtxt v2ā document seems less inviting to people looking for something simple. (@prologic@twtxt.net you mentioned an anonymous comment āyouāve ruined twtxtā and while I donāt completely agree with that commenterās sentiment, I would feel like twtxt had lost something if it moved away from having a super-simple core.)All that being said, these are just my opinions, and Iām not doing the work of writing software or drafting proposals. Maybe I will at some point, but until then, if youāre actually implementing things, youāre in charge of what you decide to make, and Iām grateful for the work.
Probando mi internet.. 3,2,1⦠#Barcelona
@prologic@twtxt.net does that include mine? otherwise it would make them 8 and 5, maybe even throw off your maths by 0.00001% š ⦠and, come on! 1.04% seems like a good ratio considering how many gopher holes and gem capsules compared to how many Web servers out there in the world š
Gemini/Gopher Twtxt feeds account for less than 1% in existence:
$ total=$(inspect-db yarns.db | jq -r '.Value.URL' | awk -F'//' '{if ($1 ~ /^https?/) print "http/https:"; else print $1}' | sort | uniq -c | awk '{sum+=$1} END {print sum}'); inspect-db yarns.db | jq -r '.Value.URL' | awk -F'//' '{if ($1 ~ /^https?/) print "http/https:"; else print $1}' | sort | uniq -c | awk -v total="$total" '{printf "%d %s %.2f%%\n", $1, $2, ($1/total)*100}' | sort -r
7 gemini: 0.66%
4 gopher: 0.38%
1046 http/https: 98.96%
Good writeup, @anth@a.9srv.net! I agree to most of your points.
3.2 Timestamps: I feel no need to mandate UTC. Timezones are fine with me. But I could also live with this new restriction. I fail to see, though, how this change would make things any easier compared to the original format.
3.4 Multi-Line Twts: What exactly do you think are bad things with multi-lines?
4.1 Hash Generation: I do like the idea with with a new uuid
metadata field! Any thoughts on two feeds selecting the same UUID for whatever reason? Well, the same could happen today with url
.
5.1 Reply to last & 5.2 More work to backtrack: I do not understand anything youāre saying. Can you rephrase that?
8.1 Metadata should be collected up front: I generally agree, but if the uuid
metadata field were a feed URL and no real UUID, there should be probably an exception to change the feed URL mid-file after relocation.
@sorenpeter@darch.dk not even this: https://twtxt.net/media/AzUmzTN5YEJdt4VPeeprjB.png?full=1
Some more arguments for a local-based treading model over a content-based one:
The format:
(#<DATE URL>)
or(@<DATE URL>)
both makes sense: # as prefix is for a hashtag like we allredy got with the(#twthash)
and @ as prefix denotes that this is mention of a specific post in a feed, and not just the feed in general. Using either can make implementation easier, since most clients already got this kind of filtering.Having something like
(#<DATE URL>)
will also make mentions via webmetions for twtxt easier to implement, since there is no need for looking up the#twthash
. This will also make it possible to make 3th part twt-mentions services.Supporting twt/webmentions will also increase discoverability as a way to know about both replies and feed mentions from feeds that you donāt follow.
rsync(1)
but, whenever I Tab
for completion and get this:
@aelaraji@aelaraji.com Rsync has a ton of options and I probably still havenāt scratched the surface, but I was able to memorize the options I actually need for day-to-day work in a relatively short time. I guess Iām the opposite of you, because I donāt know any scp(1)
options.
Been trying to get acquainted with rsync(1)
but, whenever I Tab
for completion and get this:
Ī» ~/ rsync ā
zsh: do you wish to see all 484 possibilities (162 lines)?
Iām like: Nope! a scp -rpCq ...
or whatever option salad will do just fine. š
[Insert: āAināt nobody got time foāthat!ā Meme.]
LMAO 𤣠⦠Iāve been scrolling through mutt(1) man page and found this:
BUGS
None. Mutts have fleas, not bugs.
@prologic@twtxt.net Thanks for writing that up!
I hope it can remain a living document (or sequence of draft revisions) for a good long time while we figure out how this stuff works in practice.
I am not sure how I feel about all this being done at once, vs. letting conventions arise.
For example, even today I could reply to twt abc1234 with ā(#abc1234) Edit: ā¦ā and I think all you humans would understand it as an edit to (#abc1234). Maybe eventually it would become a common enough convention that clients would start to support it explicitly.
Similarly we could just start using 11-digit hashes. We should iron out whether itās sha256 or whatever but thereās no need get all the other stuff right at the same time.
I have similar thoughts about how some users could try out location-based replies in a backward-compatible way (append the replyto: stuff after the legacy (#hash) style).
However I recognize that Iām not the one implementing this stuff, and itās less work to just have everything determined up front.
Misc comments (I havenāt read the whole thing):
Did you mean to make hashes hexadecimal? You lose 11 bits that way compared to base32. Iād suggest gaining 11 bits with base64 instead.
āClients MUST preserve the original hashā ā do you mean they MUST preserve the original twt?
Thanks for phrasing the bit about deletions so neutrally.
I donāt like the MUST in āClients MUST follow the chain of reply-to referencesā¦ā. If someone writes a client as a 40-line shell script that requires the user to piece together the threading themselves, IMO we shouldnāt declare the client non-conforming just because they didnāt get to all the bells and whistles.
Similarly I donāt like the MUST for user agents. For one thing, you might want to fetch a feed without revealing your identty. Also, it raises the bar for a minimal implementation (Iām again thinking again of the 40-line shell script).
For āwho followsā lists: why must the long, random tokens be only valid for a limited time? Do you have a scenario in mind where they could leak?
Why canāt feeds be served over HTTP/1.0? Again, thinking about simple software. I recently tried implementing HTTP/1.1 and it wasnāt too bad, but 1.0 would have been slightly simpler.
Why get into the nitty-gritty about caching headers? This seems like generic advice for HTTP servers and clients.
Iām a little sad about other protocols being not recommended.
I donāt know how I feel about including markdown. I donāt mind too much that yarn users emit twts full of markdown, but Iām more of a plain text kind of person. Also it adds to the length. I wonder if putting a separate document would make more sense; that would also help with the length.
Had to build a list of all feeds (that I follow) and all twts in them and there are two collisions already:
$ ./stats
Saw 58263 hashes
7fqcxaa
https://twtxt.net/user/justamoment/twtxt.txt
https://twtxt.net/user/prologic/twtxt.txt
ntnakqa
https://twtxt.net/user/prologic/twtxt.txt
https://twtxt.net/user/thecanine/twtxt.txt
Namely:
$ jenny -D https://twtxt.net/user/justamoment/twtxt.txt | grep 7fqcxaa
[7fqcxaa] [2022-12-28 04:53:30+00:00] [(#pmuqoca) @prologic@twtxt.net I checked the GitHub discussion, it became a request to join forces.
Do you plan on having them join?
Also for the name, how about:
- āprogitā or āprologitā (prologic official hard fork)
- āgit-stanceā (git instance)
- āGitTreeā (Gitea inspired, maybe to related)
- āGitomataā (git automata)
- āGit.Sourceā
- āForgorā (forgit is taken so I forgor) š¤£
- āSweetGitā (as salty chat)
- āPepper Gitā (other ingredients) š
- āGitHeartā (core of git with a GitHub sounding name)
- āGitTakaā (With music in mind)
Ok, enough fun⦠Hope this helps sprout some ideas from others if nothing is to your taste.]
$ jenny -D https://twtxt.net/user/prologic/twtxt.txt/5 | grep 7fqcxaa
[7fqcxaa] [2022-02-25 21:14:45+00:00] [(#bqq6fxq) Itās handled by blue Monday]
And:
$ jenny -D https://twtxt.net/user/thecanine/twtxt.txt | grep ntnakqa
[ntnakqa] [2022-01-23 10:24:09+00:00] [(#2wh7r4q) <a href="https://yarn.girlonthemoon.xyz/external?uri=https://twtxt.net/user/prologic/twtxt.txt">@prologic<em>@twtxt.net</em></a> I know, I was just hoping it might have also gotten fixed by that change, by some kind of backend miracles. š]
$ jenny -D https://twtxt.net/user/prologic/twtxt.txt/1 | grep ntnakqa
[ntnakqa] [2024-02-27 05:51:50+00:00] [(#otuupfq) <a href="https://yarn.girlonthemoon.xyz/external?uri=https://twtxt.net/user/shreyan/twtxt.txt">@shreyan<em>@twtxt.net</em></a> Ahh š]
Alright, before I go and watch Formula 1 š , I made two PRs regarding the two ācompetingā ideas:
- https://git.mills.io/yarnsocial/yarn/pulls/1179 ā
(replyto:ā¦)
- https://git.mills.io/yarnsocial/yarn/pulls/1180 ā
(edit:ā¦)
and(delete:ā¦)
As a first step, this summarizes my current understanding. Please comment! š
@aelaraji@aelaraji.com This is one of the reasons why yarnd
has a couple of settings with some sensible/sane defaults:
I could already imagine a couple of extreme cases where, somewhere, in this peaceful world oneās exercise of freedom of speech could get them in Real trouble (if not danger) if found out, it wouldnāt necessarily have to involve something to do with Law or legal authorities. So, If someone asks, and maybe fearing fearing for⦠letās just say āTheir well beingā, would it heart if a pod just purged their content if itās serving it publicly (maybe relay the info to other pods) and call it a day? It doesnāt have to be about some law/convention somewhere ⦠𤷠I know! Too extreme, but Iāve seen news of people whoād gone to jail or got their lives ruined for as little as a silly joke. And it doesnāt even have to be about any of this.
There are two settings:
$ ./yarnd --help 2>&1 | grep max-cache
--max-cache-fetchers int set maximum numnber of fetchers to use for feed cache updates (default 10)
-I, --max-cache-items int maximum cache items (per feed source) of cached twts in memory (default 150)
-C, --max-cache-ttl duration maximum cache ttl (time-to-live) of cached twts in memory (default 336h0m0s)
So yarnd
pods by default are designed to only keep Twts around publicly visible on either the anonymous Frontpage or Discover View or your Timeline or the feedās Timeline for up to 2 weeks with a maximum of 150 items, whichever get exceeded first. Any Twts over this are considered āoldā and drop off the active cache.
Itās a feature that my old man @off_grid_living@twtxt.net was very strongly in support of, as was I back in the day of yarnd
ās design (nothing particularly to do with Twtxt per se) that Iāve to this day stuck by ā Even though there are some š that have different views on this š¤£
Apple A16 SoC Now Manufactured In Arizona
āApple has begun manufacturing its A16 SoC at the newly-opened TSCM Fab 21 in Arizona,ā writes Slashdot reader NoMoreACs. AppleInsider reports: According to sources of Tim Culpan, Phase 1 of TSMCās Fab 21 in Arizona is making the A16 SoC of the iPhone 14 Pro in āsmall, but significant, numbers. The production is largely a test for the facility at this stage, but more production is expected ⦠ā Read more
Thereās a simple reason all the current hashes end in a or q: the hash is 256 bits, the base32 encoding chops that into groups of 5 bits, and 256 isnāt divisible by 5. The last character of the base32 encoding just has that left-over single bit (256 mod 5 = 1).
So I agree with #3 below, but do you have a source for #1, #2 or #4? I would expect any lack of variability in any part of a hash functionās output would make it more vulnerable to attacks, so designers of hash functions would want to make the whole output vary as much as possible.
Other than the divisible-by-5 thing, my current intuition is it doesnāt matter what part you take.
Hash Structure: Hashes are typically designed so that their outputs have specific statistical properties. The first few characters often have more entropy or variability, meaning they are less likely to have patterns. The last characters may not maintain this randomness, especially if the encoding method has a tendency to produce less varied endings.
Collision Resistance: When using hashes, the goal is to minimize the risk of collisions (different inputs producing the same output). By using the first few characters, you leverage the full distribution of the hash. The last characters may not distribute in the same way, potentially increasing the likelihood of collisions.
Encoding Characteristics: Base32 encoding has a specific structure and padding that might influence the last characters more than the first. If the data being hashed is similar, the last characters may be more similar across different hashes.
Use Cases: In many applications (like generating unique identifiers), the beginning of the hash is often the most informative and varied. Relying on the end might reduce the uniqueness of generated identifiers, especially if a prefix has a specific context or meaning.
Taking the last n characters of a base32 encoded hash instead of the first n can be problematic for several reasons:
Hash Structure: Hashes are typically designed so that their outputs have specific statistical properties. The first few characters often have more entropy or variability, meaning they are less likely to have patterns. The last characters may not maintain this randomness, especially if the encoding method has a tendency to produce less varied endings.
Collision Resistance: When using hashes, the goal is to minimize the risk of collisions (different inputs producing the same output). By using the first few characters, you leverage the full distribution of the hash. The last characters may not distribute in the same way, potentially increasing the likelihood of collisions.
Encoding Characteristics: Base32 encoding has a specific structure and padding that might influence the last characters more than the first. If the data being hashed is similar, the last characters may be more similar across different hashes.
Use Cases: In many applications (like generating unique identifiers), the beginning of the hash is often the most informative and varied. Relying on the end might reduce the uniqueness of generated identifiers, especially if a prefix has a specific context or meaning.
In summary, using the first n characters generally preserves the intended randomness and collision resistance of the hash, making it a safer choice in most cases.
@quark@ferengi.one Do you mean something like this?
$ ./yarnc debug ~/Public/twtxt.txt | tail -n 1
kp4zitq 2024-09-08T02:08:45Z (#wsdbfna) @<aelaraji https://aelaraji.com/twtxt.txt> My work has this thing called "compressed work", where you can **buy** extra time off (_as much as 4 additional weeks_) per year. It comes out of your pay though, so it's not exactly a 4-day work week but it could be useful, just haven't tired it yet as I'm not entirely sure how it'll affect my net pay