main.go
(but it can be done on a template now, so no reason to touch the code):
@quark@ferengi.one It’s a good thin yarnd
makes this user configurable via a preference 🤣 And displays both 😅
@quark@ferengi.one LOL 😂 Thanks!
yarnd
(at least) doesn't support creating such a custom TwtSubject, but it will reply and respect and thread one if one was constructed.
@quark@ferengi.one You are right, whilst it technically works, its not well supported. Too much of the code would have to change to support that, and it’s not worth the value.
So yeah no, whilst it technically works, neither jenny
nor yarnd
support it very well. Only at a very basic level.
It actually has treated this as a thread, but it gets a bit weird, because we thread based on the content address of a root twt.
@movq@www.uninformativ.de for oncall?
jenny,
ttand
yarnd...
@movq@www.uninformativ.de Haha 🤣
@movq@www.uninformativ.de this is why I don’t have a work phone 🤣
-T/--template
in case you need a custom template 👌
@bender@twtxt.net I should put the template that is used by default as a file in the repo. Look at the source for now and you’ll see 😅
jenny,
ttand
yarnd...
@movq@www.uninformativ.de I never implemented UI support for their creation 🤣
Just that yarnd
(at least) doesn’t support creating such a custom TwtSubject, but it will reply and respect and thread one if one was constructed.
@falsifian@www.falsifian.org You will actually find that they work perfectly fine. They just tend to have little value I think. Most of our clients do support them, jenny,
ttand
yarnd...
At least you took the time to file an issue on a decentralised Git server 💪 Thank you! 🙏
@movq@www.uninformativ.de (#3xpygsq) @movq@www.uninformativ.de I have a slightly different but compatible view:
What makes twtxt unique is its radical technical simplicity. And that means you have to be a tech-savvy person to appreciate twtxt and that means mass-appeal is pretty much out of the question to begin with. 😅
You see, if you recall my old man ain’t all that great with tech these days, though he used to be and that’s how I got into it, encouraged as a young lad. Anyway… I built yarnd
for that purpose, so a) I could use it as my daily driver (think of it like Jenny/tt but for the web with a little server) and b) so others could use it too (admitedly that hasn’t been well adopted because reasons)
Anyway my view is that Yarn/Twtxt is designed to be a slow social media without distraction. I like that a lot. Forget the simplicity for a second, if you think about how we use this, and how damn well fucking effective it is, without all the ads, tracking, god knows what useless-ass features, all the nonsense multi-Megabytes your browser has to download, just to post what you ate for breakfast, I like what we’ve built 😅
@aelaraji@aelaraji.com If you’re talking about me, I’m notorious for typos 🤣 I type too fast, and I think I need a new keyboard, these keys are getting stuck 😅 Either that or I need to take my blowvac to it and clean the dust, skin and muck under the butterfly keys 🎹
@aelaraji@aelaraji.com I just added support for passing a custom template file via -T/--template
in case you need a custom template 👌
prologic@JamessMacStudio
Wed Sep 18 01:27:29
~/Projects/yarnsocial/twtxt2html
(main) 130
$ ./twtxt2html --help
Usage: twtxt2html [options] FILE|URL
twtxt2html converts a twtxt feed to a static HTML page
-d, --debug enable debug logging
-l, --limit int limit number ot twts (default all) (default -1)
-n, --noreldate do now show twt relative dates
-r, --reverse reverse the order of twts (oldest first)
-T, --template string path to template file
-t, --title string title of generated page (default "Twtxt Feed")
-v, --version display version information
pflag: help requested
@movq@www.uninformativ.de Oh! 🤣 For some reason I thought my first feed was lost and gone 🤣 Hahahaha it’s been there the whole time 😅 Fuck we write good specs and software 🥳
@falsifian@www.falsifian.org I like this idea too as a completing solution to the “identify problem”:
Or maybe url changes could somehow be combined with the archive feeds extension? Could the url metadata field be local to each archive file, so that to switch to a new url all you need to do is archive everything you’ve got and start a new file at the new url?
👌
One thing that’s on my mind over the last few days about all this Twt editing and identity stuff we’ve been having hot debates over is this…
I don’t really have a problem with editing twts, or someone changing their feed’s URL.
Personally I think the folks that do are rightfully pedantic and like a good user experience, which I don’t blame ‘em. I would expect the same too. Anyway, just wanted to get that out there, I believe we can support editing and identity in a way that is still simple, as long as we bring clients along for the ride with us. The old/legacy original client though will have to remain well, ya know 😅
@movq@www.uninformativ.de Well at this point I think I’m going to try to combine @lyse@lyse.isobeef.org’s idea for supporting moving your feed to a different URL and this idea for supporting editing. I’ll spec it up and see if what we think from there…
@aelaraji@aelaraji.com Btw, I’m also open to ideas for this tool and welcome any contributions 👌
It would mean clients that support the TwtSubject and TwtHash extension, should also indicate the previous version of their Twt when editing.
Ultimately I think we just need to agree on a way to represent an edit and the previous version of a Twt in a way that makes sense. I like one of the ideas presented earlier in some other thread (god only knows which one haha 😝); That is: <timestamp> (#hash;#originalHash) <content>
For example.
@movq@www.uninformativ.de I think if Git can solve the same problem of branching, forking, patching and merging, so can we 🤣
ssh-keygen -Y sign
or ssh-keygen -Y verify
tools already available? Maybe in combination with @xuu 's idea of generating a random unique ID for your feed, say # id =
and signing it with your ED25519 key? 🔑
@movq@www.uninformativ.de No that’s okay. I happen to agree with you really, I just wanted to get a bit of a vibe on using cryptography in general and the idea of signing feeds. It’s not particularly about a problem being solved, just gauging your opinions/thoughts on this 👌
@aelaraji@aelaraji.com We just have to write better clients 🤣 I have figured out how to detect edits FWIW, but haven’t gone from R&D phase to an actual design and implementation. But it is possible to detect an edit as well as a similarity score and the matching Twts.
o6dsrga
, but I can't find the source for it (the raw file). I reset everything, and re-fetched fresh feeds (allegedly including archives). Where is it?
@quark@ferengi.one I think I may have lost my original feed because it was written with the old software before Yarn social became a thing.
@sorenpeter@darch.dk not really you’re really forming a cryptographic chain of twts, that are cryptographically provable by anyone, at least in one direction ). It’s called content addressing. Your propose scheme while simple doesn’t do this.
@lyse@lyse.isobeef.org and @movq@www.uninformativ.de and possibly @aelaraji@aelaraji.com and even @cuaxolotl – I’m very curious to understand and hear thoughts, pros and cons or other feelings about introducing the notation of a feed’s identify using cryptography? If we were to keep things simple, and use what’s commonly available, for example SSH ED25519 keys? using the ssh-keygen -Y sign
or ssh-keygen -Y verify
tools already available? Maybe in combination with @xuu@txt.sour.is ’s idea of generating a random unique ID for your feed, say # id =
and signing it with your ED25519 key? 🔑
@falsifian@www.falsifian.org You mean the idea of being able to inline # url =
changes in your feed?
Whatever gets used, it would be nice to be able to rotate identities. I like @lyse@lyse.isobeef.org’s idea for that.
This scheme also only support threading off a specific Twt of someone’s feed. What if you’re not replying to anyone in particular?
Noting that this scheme cannot support disjoint threads that should be merged together once either party discovers each other 😅
@movq@www.uninformativ.de It does now as of several weeks ago or so 👌
@lyse@lyse.isobeef.org Yea I think your idea of inclining url changes in the feed works perfectly as long as folks remember to do so I guess? 🤔
@bender@twtxt.net Seems to have used the hash correctly here 🤣
Holy shot! what an old thread 🤣
@cuaxolotl@sunshinegardens.org Gitea is plenty fast for me 👌 Even with a SQLite database 🤣
I dunno whether any of this is actually true 🤷♂️ The LLM 🤖could have made (hallucinated) this shit up 🤣
WiscKey’s approach to handling key-value pairs in SSDs offers several advantages:
- It minimizes I/O amplification by separating keys and values, allowing for more efficient storage and retrieval.
- The design leverages the SSD’s performance characteristics, utilizing sequential writes and parallel random reads to enhance throughput and reduce latency.
- WiscKey maintains excellent insert and lookup performance while improving SSD lifespan by reducing the number of erase cycles required.
WiscKey minimizes CPU usage compared to LevelDB by eliminating the log file, which reduces the CPU cost associated with encoding and writing key-value pairs. While LevelDB has higher CPU usage due to its single writer protocol and background compaction using one thread, WiscKey’s architecture allows for garbage collection to be decoupled and performed later, minimizing its impact on foreground performance. Consequently, WiscKey generally exhibits lower CPU usage during workloads, except when utilizing multiple background threads for prefetching.
The four critical ideas in the design of WiscKey are:
- Separation of keys from values, with only keys stored in the LSM-tree and values in a separate log file.
- Utilization of the parallel random-read characteristic of SSD devices to handle unsorted values during range queries.
- Implementation of unique crash-consistency techniques to manage the value log efficiently.
- Optimization of performance by removing the LSM-tree log without sacrificing consistency, reducing system-call overhead from small writes.
Summary of WiscKey: Separating Keys from Values in SSD-Conscious Storage
- Authors: Lanyue Lu, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau
- Conference: 14th USENIX Conference on File and Storage Technologies (FAST ‘16)
- Key Concept: WiscKey is a key-value store that separates keys from values to minimize I/O amplification, optimizing performance for SSDs.
- Performance: WiscKey outperforms LevelDB and RocksDB in various workloads, achieving up to 111× faster loading and improved random lookup speeds.
- Design Goals: Focus on low write/read amplification, SSD optimization, and support for modern features like range queries.
@quark@ferengi.one Meh I lost the plot ages ago 🤣
--fetch-context
thingy: It can now ask Yarn pods for twt hashes.
@movq@www.uninformativ.de Bah you’re right, that’s a mistake and easily fixed 😅
@movq@www.uninformativ.de I tend to agree too, I think the focus should be on fixing and supporting Edits first 👌
@quark@ferengi.one We will fix this soon™ 🔜
@aelaraji@aelaraji.com So what is it about @sorenpeter@darch.dk’s feed that’s screwed with your client? (Jenny?) 🤔 Kind of curious now 🤣
@aelaraji@aelaraji.com Yes, according to the spec we wrote for Archived Extension:
The second value of prev is a name relative to the base directory of the feed’s URL in url (more specifically, in the URL that the client used to retrieve the feed). In the example above, prev would evaluate to the full URL https://example.com/twtxt-2021-10-18.txt for HTTPS and gopher://example.com/0/twtxt-2021-10-18.txt for Gopher.
@aelaraji@aelaraji.com LOL 😂
--fetch-context
thingy: It can now ask Yarn pods for twt hashes.
@quark@ferengi.one It would also be possible to use the search engine here too I think 🤔 i.e: https://search.twtxt.net
--fetch-context
thingy: It can now ask Yarn pods for twt hashes.
@quark@ferengi.one Looks like that would work according to the patch I just read 👌
These then become useful in filters like what you see here:
It’s useful to know however that such feeds are actually marked as type=rss
(e.g: https://feeds.twtxt.net/slashdot/twtxt.txt), just as feeds like @tiktok@feeds.twtxt.net are marked as type=bot
@aelaraji@aelaraji.com Ahh that’s interesting! 🧐 One of my original goals when I started out building Yarn.social was to also be a source of news, blogs, and whatever else that could be roughly/easily translated into a Twtxt feed. I’m not sure if others do something similar, but that’s why I built feeds.twtxt.net, which consumes RSS/Atom and produces Twtxt feeds.
My only desire one day is to build a “Feed Builder” of sorts that allows one to say, for example, construct a Slashdot feed but without AI hype, or as another example, a BBC/ABC feed that’s a digest once or twice per day.
@bender@twtxt.net Ack 👌
@aelaraji@aelaraji.com Good man 🤣 I keep getting this bloody AI hype from various news feeds I subscribe to via Twtxt like Slashdot cough 🤦♂️
@bender@twtxt.net Hahahahaha 🤣 Me neither 🤮
@bender@twtxt.net you’re probably right, but by that argument, cryptocurrency should be innate too right? as we no longer hear about that gold awful hype, right? 🤔
@movq@www.uninformativ.de Thanks mate! 🤗
@movq@www.uninformativ.de Haha same and I’m sick of it! It’s ruining innovation in anything else 🤦♂️
--fetch-context
thingy: It can now ask Yarn pods for twt hashes.
@movq@www.uninformativ.de Nice one 👌
@aelaraji@aelaraji.com it’s definitely your social bubble. 🤣 you need to use twtxt more as your daily driver 🤣
That’s an interesting side effect to the new Discover feature that I added sometime ago that only displays one post per feed. That is when you’re not logged in and viewing my pod’s front page. You can pretty easily and roughly see what the monthly active view account is just by looking at the pager size. 🤔
Amazingly though it seems to be slightly better to VPN in. 🤔
But you know speedtest.net I believe is a bit of a liar and I’m quite sure they do something to make sure the speed test come up good even remote areas the real speed test my actual surfer infrastructure is quite piss poor 🤣
Even though we’re quite a ways from any suburban areas, even with the Internet access via cell towers this poor, using my pod is still very snappy. 👌
When will the AI hype die down?
@lyse@lyse.isobeef.org Thanks!
@falsifian@www.falsifian.org One of the nice things I think is that you can almost assuredly trust that the hash is a correct representation of the thread because it was computed via our content, addressing in the first place, so all you need to do yes copy it 👌
@falsifian@www.falsifian.org Yeah that’s why we made them short 😅
@falsifian@www.falsifian.org I think I wrote a very similar program and go myself actually and you’re right we do have to change the way we encode hashes.
@falsifian@www.falsifian.org All very good points 👌 by the way, how did you find two pieces of content that hash the same when taking the last N characters of the base32 and coded hash?
@off_grid_living@twtxt.net Aww thanks! 🤗
There are certainly improvements that can be made to this tool.🤞
@aelaraji@aelaraji.com Have you considered https://git.mills.io/yarnsocial/twtxt2html
@bender@twtxt.net Thanks! 🤗 – I know it will 🤣
Out camping with the family this weekend for my birthday 🥳
I think so 😅 Thanks$!🙇♂️
@aelaraji@aelaraji.com Hah interesting 🤔
@xuu@txt.sour.is What’s the keyoxide thingy you wrote/built? 🤔 What’s your URI/profile? 🤔
@aelaraji@aelaraji.com Sounds like it would work 👌 Though I’ve not tried or invested anytime into proofs and claims type things so far 🤔
@aelaraji@aelaraji.com Nice write up!
@aelaraji@aelaraji.com how would that work exactly? Does that mean then that every user is required to have a cox side profile? Who maintains cox site? Is it centralized or decentralized can be relied upon?
Ford, the company can honestly go fuck themselves! No one ever asked or even thought to themselves:
Gee I wish my car would listen to my in-car conversations and serve me ads.
@slashdot@feeds.twtxt.net i’ll get fucked! The US patent office should ban this immediately.
@xuu@txt.sour.is True 😅 I guess it comes down to our risk appetite and the attack vectors we’re trying to solve for 🤔
@bender@twtxt.net yes I agree.
url
field in the feed to define the URL for hashing. It should have been the last encountered one. Then, assuming append-style feeds, you could override the old URL with a new one from a certain point on:
@bender@twtxt.net there is a certain simplicity to that. 😅
@xuu@txt.sour.is it’s not really strictly required if we’re just talking about identity though right? If we’re talking about encryption then yes I agree rotate and keys becomes very important if you want to have attributes like perfect forward secrecy.
@xuu@txt.sour.is that could work too, but that requires a random value, a set of keys and signature verification of the value, which I don’t really have a problem with.
@xuu@txt.sour.is yes I’m less concerned about solving the integrity part of the problem of whether we can trust that the content of a feed is actually written by certain author, however, that’s not to say that we shouldn’t think about also leveraging keys to be able to do that maybe it’s an optional feature?
What were the recommended mitigations?
IMO we just have to fix the identity problem and figure out how to detect or support edits.
@sorenpeter@darch.dk No, this is what I want to avoid. For many reasons I stated before, content addressing or hashing is far better here for threading in a decentralized way.
@lyse@lyse.isobeef.org I personally think that we just go with a magic timestamp approach. It’s simpler and easier to implement across the major clients that are still actively developed.
The question is how much time do we give ourselves as we’re all a bit time poor and I can’t imagine we would do this quickly.
@movq@www.uninformativ.de if you do win the lottery, don’t forget to include us so we can all join in and share the things that we like to tinker with instead of this whole rat race. 🤣
@bender@twtxt.net Big photo capability upgrade?