Hey, @movq@www.uninformativ.de, a tiny thing to add to jenny
, a -v
switch. That way when you twtxt āThatās an older format that was used before jenny version v23.04ā, I can go and run jenny -v
, and āduh!ā myself on the way to a git pull
. :-D
Regarding jenny development: There have been enough changes in the last few weeks, imo. I want to let things settle for a while (potential bugfixes aside) and then Iām going to cut a new release.
And I guess the release after that is going to include all the threading/hashing stuff ā if we can decide on one of the proposals. š
@prologic@twtxt.net the real conclusion is, is it going to change, to what, and when? :-P
main.go
(but it can be done on a template now, so no reason to touch the code):
@lyse@lyse.isobeef.org fully agree. I have never been a fan of relative times to begin with, so that one will go away, foh sho! :-D
yarnd just doesnāt render the subject. Fair enough. Itās (replyto http://darch.dk/twtxt.txt 2024-09-15T12:50:17Z), and if you donāt want to go on a hunt, the twt hash is weadxga: https://twtxt.net/twt/weadxga
@aelaraji@aelaraji.com this is my change on main.go
(but it can be done on a template now, so no reason to touch the code):
<time class="dt-published" datetime="{{ $twt.Created | date "2006-01-02T15:04:05Z07:00" }}">
{{ $twt.Created | date "2006-01-02 15:04:05 MST" }}
</time>
See https://ferengi.one. I am going to further customise things, but thatās a start.
@bender@twtxt.net LOL normally things (in the vanilla template) render like <time class="dt-published" datetime="2024-09-17T15:05:19+01:00"> 2024-09-17 14:05:19 +0000 UTC+0000 </time>
the datetime=...
atribute is in my local time UTC+1 then the text within the tag is in UTC+0
The thing is, Iāve been poking at the template as well, but nothing changes. I literally whole portionsm added in lorem text just to see if it would do anything, then twtxt2html -T ./layout.html <link to twtxt file> | less
shows same thing as before! nothing changes. LOL Iām not sure Iām going at it the right way.
@lyse@lyse.isobeef.org Sorry, I donāt think I ever had charset=utf8. I just noticed that a few days ago. OpenBSDās httpd might not support including a parameter with the mime type, unfortunately. Iām going to look into it.
Now WTF!? Suddenly, @falsifian@www.falsifian.orgās feed renders broken in my tt Python implementation. Exactly what I had with my Go rewrite. I havenāt touched the Python stuff in ages, though. Also, tt and tt2 do not share any data at all.
By any chance, did you remove the ; charset=utf-8
from your Content-Type: text/plain
header, falsifian?
@movq@www.uninformativ.de Non-ASCII characters were broken. Like U+2028, degrees (°), etc.
Turns out I used a silly library to detect the encoding and transform to UTF-8 if needed. When there is no Content-Type header, like for local files, it looks at the first 1024 bytes. Since it only saw ASCII in that region, the damn thing assumed the data to be in Windows-1252 (which for web pages kinda makes sense):
// TODO: change default depending on user's locale?
return charmap.Windows1252, "windows-1252", false
https://cs.opensource.google/go/x/net/+/master:html/charset/charset.go;l=102
This default is hardcoded and cannot be changed.
Trying to be smart and adding automatic support for other encodings turned out to be a bad move on my end. At least I can reduce my dependency list again. :-)
I now just reject everything that explicitly specifies something different than text/plain
and an optional charset other than utf-8
(ignoring casing). Otherwise I assume itās in UTF-8 (just like the twtxt file format specification mandates) and hope for the best.
Hmmmm, I somehow run into an encoding problem where my inserted data end up mangled in the database. But, both SQLite and Go use UTF-8. Whatās happening here? :-?
Iāve got 100G to copy from one disk to another. This is going to take foreverā¦
@movq@www.uninformativ.de I did the same. jenny
fetches archives, yes, but that twtxt I am referring about is no longer. If you fetch it, but I donāt, there is certainly something going onā¦
@movq@www.uninformativ.de I figured it will be something like this, yet, you were able to reply just fine, and I wasnāt. Looking at your twtxt.txt
I see this line:
2024-09-16T17:37:14+00:00 (#o6dsrga) @<prologic https://twtxt.net/user/prologic/twtxt.txt>
@<quark https://ferengi.one/twtxt.txt> This is what I get. š¤
Which is using the right hash. Mine, on the other hand, when I replied to the original, old style message (Message-Id: <o6dsrga>
), looks like this:
2024-09-16T16:42:27+00:00 (#o) @<prologic https://twtxt.net/user/prologic/twtxt.txt> this was your first twtxt. Cool! :-P
What did you do to make yours work? I simply went to the oldest @prologic@twtxt.netās entry on my Maildir, and replied to it (jenny
set the reply-to
hash to #o
, even though the Message-Id
is o6dsrga
). Since jenny
canāt fetch archived twtxts, how could I go to re-fetch everything? And, most importantly, would re-fetching fix the Message-Id:
?
tw.txt is fun because its a hackers distributed system. simple, with lots of sharp edges to keep things interesting. i hope we donāt go chasing mass-appeal because itāll make writing my own crappy tw.txt services un-fun and pointless since i can barely keep up with the current somewhat glacial pace of development.
@prologic@twtxt.net I am going to light some candles this weekend to āLa Virgen de Macarenaā to make it happen! :-D
Something odd just happened to my twtxt timeline⦠A bunch of twts dissapered, others were marked to be deleted in mutt. so I nuked my whole twtxt Maildir and deleted my ~/.cache/jenny in order to start with a fresh Pull. I pulled feed as usual. Now like HALF the twts arenāt there š even my my last replay. WTF IS GOING ON? š¤£š¤£š¤£
So this is a great thread. I have been thinking about this too.. and what if we are coming at it from the wrong direction? Identity being tied to a given URL has always been a pain point. If i get a new URL its almost as if i have a new identity because not only am I serving at a new location but all my previous communications are broken because the hashes are all wrong.
What if instead we used this idea of signatures to thread the URLs together into one identity? We keep the URL to Hash in place. Changing that now is basically a no go. But we can create a signature chain that can link identities together. So if i move to a new URL i update the chain hosted by my primary identity to include the new URL. If i have an archived feed that the old URL is now dead, we can point to where it is now hosted and use the current convention of hashing based on the first url:
The signature chain can also be used to rotate to new keys over time. Just sign in a new key or revoke an old one. The prior signatures remain valid within the scope of time the signatures were made and the keys were active.
The signature file can be hosted anywhere as long as it can be fetched by a reasonable protocol. So say we could use a webfinger that directs to the signature file? you have an identity like frank@beans.co
that will discover a feed at some URL and a signature chain at another URL. Maybe even include the most recent signing key?
From there the client can auto discover old feeds to link them together into one complete timeline. And the signatures can validate that its all correct.
I like the idea of maybe putting the chain in the feed preamble and keeping the single self contained file.. but wonder if that would cause lots of clutter? The signature chain would be something like a log with what is changing (new key, revoke, add url) and a signature of the change + the previous signature.
# chain: ADDKEY kex14zwrx68cfkg28kjdstvcw4pslazwtgyeueqlg6z7y3f85h29crjsgfmu0w
# sig: BEGIN SALTPACK SIGNED MESSAGE. ...
# chain: ADDURL https://txt.sour.is/user/xuu
# sig: BEGIN SALTPACK SIGNED MESSAGE. ...
# chain: REVKEY kex14zwrx68cfkg28kjdstvcw4pslazwtgyeueqlg6z7y3f85h29crjsgfmu0w
# sig: ...
@mckinley@twtxt.net To answer some of your questions:
Are SSH signatures standardized and are there robust software libraries that can handle them? Weāll need a library in at least Python and Go to provide verified feed support with the currently used clients.
We already have this. Ed25519 libraries exist for all major languages. Aside from using ssh-keygen -Y sign
and ssh-keygen -Y verify
, you can also use the salty
CLI itself (https://git.mills.io/prologic/salty), and Iām sure there are other command-line tools that could be used too.
If we all implemented this, every twt hash would suddenly change and every conversation thread weāve ever had would at least lose its opening post.
Yes. This would happen, so weād have to make a decision around this, either a) a cut-off point or b) some way to progressively transition.
@New_scientist@feeds.twtxt.net Make senseāif a clown murders the child they donāt need to go to the hospital.
@prologic@twtxt.net Some criticisms and a possible alternative direction:
Key rotation. Iām not a security person, but my understanding is that itās good to be able to give keys an expiry date and replace them with new ones periodically.
It makes maintaining a feed more complicated. Now instead of just needing to put a file on a web server (and scan the logs for user agents) I also need to do this. What brought me to twtxt was its radical simplicity.
Instead, maybe we should think about a way to allow old urls to be rotated out? Like, my metadata could somehow say that X used to be my primary URL, but going forward from date D onward my primary url is Y. (Or, if you really want to use public key cryptography, maybe something similar could be used for key rotation there.)
Itās nice that your scheme would add a way to verify the twts you download, but https is supposed to do that anyway. If you donāt trust https to do that (maybe you donāt like relying on root CAs?) then maybe your preferred solution should be reflected by your primary feed url. E.g. if you prefer the security offered by IPFS, then maybe an IPNS url would do the trick. The fact that feed locations are URLs gives some flexibility. (But then rotation is still an issue, if I understand ipns right.)
@lyse@lyse.isobeef.org 31°C here, feels like 33°C, with a lovely 75% of humidity. It has been raining, on and off (to make matter ābetterā) the whole day until now. No horses here, but if you go outside you will smell the same smell of farm animals (like goats, or pigs). Thatās because two or three kilometres from here there are private farms, and when the wind blows in such way, well, we are reminded of their existence.
I havenāt left the house, so it feels well under air conditioning. In two more hours I will call it quits from the work day, and will have to dash to the grocery to get supplies for tonightās meal (arroz con gandules). I will let you know how it truly feels out there then. :-D
For those swollen fingers, nothing better than a mildly cold shower! Oh, and paws off the keyboard! :-P
When we passed a few horses in the forest, there was really strong soup odor in the air. It didnāt smell like horse at all, but soup. Maybe theyāve been soup horses, chickens were out of stock.
29°C, zero wind, extremely humid, luckily the sun was behind the clouds. Iām soaking wet, sweat ran down in streams and dripped in my eyes, it burned a bit. The sky is getting a little dark, I hope the thunderstorm and rain are really arriving here later. Rain had always been finally cancelled the couple last days.
Iām gotta go cool off my fingers now, theyāre swollen from the heat.
@bender@twtxt.net On twtxt, I follow all feeds that I can find (there are some exceptions, of course). Thereās so little going on in general, it hardly matters. š
And I just realized: Muttās layout helps a lot. Skimming over new twts is really easy and itās not a big loss if there are a couple of shitposts⢠in my ātimelineā. This is very different from Mastodon (both the default web UI and all clients Iāve tried), where the timeline is always huge. Posts take up a lot of space on screen. Makes me think twice if I want to follow someone or not. š
(I mostly only follow Hashtags on Mastodon anyway. Itās more interesting that way.)
The plan is coming together. I am making friends and Iām doing the LA gay shit. Iām going outside, Iām getting laid. Iām like a real person. I have an old friend back in my life even.
imo the only useful application would be so that I never have to get a new computer again unless mine breaks. i like being able to talk to people from around the world, so its going to have to include internet and video (yāall saw the impact tiktok had on the gaza situation, canāt deny that video is important)
Testing this. I will break this thread purposely, to see how to handle it under neomutt
. I have now edited this one. Letās go!
@bender@twtxt.net Hey, want to go in halfsies on one?
vim
cursor at the end of the first line on replies, and forks. I have tried adding to this to jenny
's configuration:
@movq@www.uninformativ.de hmm, I am already using au BufNewFile,BufRead jenny-posting.eml setl completefunc=jenny#CompleteMentions fo-=t wrap
, from jenny
. How would I go to incorporate that there?
vim
cursor at the end of the first line on replies, and forks. I have tried adding to this to jenny
's configuration:
@movq@www.uninformativ.de hmm, I guess I could do that too. I have startinsert
set on my .vimrc
, so I will either have to take it out, or exit insert, $
, then insert again. I think the way you do it would be the way to go.
I tried setting VISUAL
to be something like vim -c 'star!'
, which does the same thing, but no dice. :-/
@movq@www.uninformativ.de, maybe you can help me with this. I want to place the vim
cursor at the end of the first line on replies, and forks. I have tried adding to this to jenny
ās configuration:
"editor": "vim \"+normal $\"",
But that doesnāt work. How would you go about it?
fetch-context
branch. This integrates the whole thing into mutt/jenny.
I think Iām not going to query Yarn pods for the moment. Letās first see how often Iād actually need that. š¤
@bender@twtxt.net and I saw some conspiracy theory that he knew he was going to be arrested. He was working with French intelligence on a plea deal to defect. And now Russia is freaking out that Ukraine allies can have war comms access.
Yikes! If only they had salty.im!
There is a bug in yarnd
thatās been around for awhile and is still present in the current version Iām running that lets a person hit a constructed URL like
YOUR_POD/external?nick=lovetocode999&uri=https://socialmphl.com/story19510368/doujin
and see a legitimate-looking page on YOUR_POD, with an HTTP code 200 (success). From that fake page you can even follow an external feed. Try it yourself, replacing āYOUR_PODā with the URL of any yarnd
pod you know. Try following the feed.
I think URLs like this should return errors. They should not render HTML, nor produce legitimate-looking pages. This mechanism is ripe for DDoS attacks. My pod gets roughly 70,000 hits per day to URLs like this. Many are porn or other types of content I do not want. At this point, if itās not fixed soon I am going to have to shut down my pod. @prologic@twtxt.net please have a look.
Because I saw the nick on movq
(@prologic@twtxt.net, canāt mention anyone outside this pod, by the way), I looked the user up: https://tilde.pt/~marado/twtxt.txt. I wonder if the āhashesā they are using will work out of the box with jenny
.
Talking about jenny
, going to play with the latest now. Tata! :-)
You might have seen me popping up on IRC. This is how it looks:
Thatās EZirc from the 1990ies. (It says it needs Warp 4, but runs fine on Warp 3.)
Lots of this old stuff still works (technically), but as @lyse@lyse.isobeef.org said: A lot of it really is dead. Thereās not much going on anymore in Usenet.
oh dang. i think thats the go path not the github path.. missing the branch name. here is the pkg one: https://pkg.go.dev/github.com/quic-go/quic-go/http3
@movq@www.uninformativ.de A family member gave me their old (pseudo-)smart phone and it had all kinds of pre-installed BS that youāre not supposed to be able to uninstall, Xiaomi, FB, google⦠you name it. but guess what!? I already know about this Trick and then there is the Rethink DNS/Firewall app I have setup to block all traffic then allow the stuff I need with an Allow, Bypass or Exclude rule.
Youād be surprised to see how much traffic is going to blocked!! š¤£
159-196-9-199.9fc409.mel.nbn.aussiebb.net
Iām wrong! Both 404 and 410, among others, are considered dead feeds: https://git.mills.io/yarnsocial/yarn/src/branch/main/internal/cache.go#L1343 Whatever that actually means.
Pinellas County - Long Run: 10.03 miles, 00:09:47 average pace, 01:38:09 duration
felt great today! temp was down to 78F and 80% RH, but there was an ever so slight breeze so it did not feel sticky. carbo loaded the day before so maybe that had something to do with it too, but i really have not been tracking my nutrition at all. kept it easy the first five or so miles and then bumped it up ever so slightly for the remainder. probably could have gone an even two hours but running on new shoes (hoka mach 6) and really have not broken them in yet. lots of hot spots and a lot of troubleshooting on the go.
#running
for http3 there is
from my understanding.. i donāt know how the multiplexing works when its being proxied through another server. I know go has support for it if you call it out directly. https://pkg.go.dev/golang.org/x/net/http2
Its like old school TV but with youtube videos. Each channel has a subject and the channels play in a sort of realtime. so no going forward or back. Perfect for channel surfing.
Base: 6.00 miles, 00:09:43 average pace, 00:58:16 duration
i was suppose to go for another 30 minutes. my energy level is off and i may need to reassess some goals.
#running #treadmill
Celestial Event
ā Read more
Pinellas County - Long Run: 7.58 miles, 00:11:16 average pace, 01:25:22 duration
not as long as i would have liked. got a late start because, well, i was enjoying the sleep! then i saw at 0500 the rain was not scheduled anymore so i slept in. then it rained!
so this run was hot, no cloud cover, 90% RH and about 90F. it was brutal. but overall had to cut it short due to shivers all over the body. i was not going to push it when i may be overheating.
highlight: raced a youg boy in boca ciega park
#running
Definitely something going on here. Cloudflare is my main suspect.
Base: 6.21 miles, 00:09:30 average pace, 00:58:59 duration
physically i was worn out and my legs a bit tight, but the run was pretty easy in effort. wanted to go for 8 miles, but was bored to death and cut it off at 10km.
#running #treadmill
@aelaraji@aelaraji.com Ahh it might very well be a Clownflare thing as @lyse@lyse.isobeef.org eluded to 𤣠One of these days Iām going to get off Clownflare myself, when I do Iāll share it with you. My idea is to basically have a cheap VPS like @eldersnake@we.loveprivacy.club has and use Wireguard to tunnel out. The VPS becomes the Reverse Proxy that faces the internet. My home network then has in inbound whatsoever.