falsifian

www.falsifian.org

James Cook. Time-space trader and software hipster.

Recent twts from falsifian
In-reply-to » I'm in an article in Quanta Magazine! It's about the bizarre world of algorithms that re-use memory that's already full. https://www.quantamagazine.org/catalytic-computing-taps-the-full-power-of-a-full-hard-drive-20250218/ I'm the one with all the snow in the background.

@lyse@lyse.isobeef.org Thanks for taking a look, and for pointing out the mixture of tabs and spaces.

I think Iā€™ll leave reachability.c alone, since my intention there was to use an indent level of one tab, and the spaces are just there to line up a few extra things. I fixed reachability_with_stack.cc though.

ā¤‹ Read More
In-reply-to » I'm in an article in Quanta Magazine! It's about the bizarre world of algorithms that re-use memory that's already full. https://www.quantamagazine.org/catalytic-computing-taps-the-full-power-of-a-full-hard-drive-20250218/ I'm the one with all the snow in the background.

@lyse@lyse.isobeef.org I am a big fan of ā€œobviousā€ math facts that turn out to be wrong. If you want to understand how reusing space actually works, you are mostly stuck reading complexity theory papers right now. Ian wrote a good survey: https://iuuk.mff.cuni.cz/~iwmertz/papers/m23.reusing_space.pdf . Itā€™s written for complexity theorists, but some of will make sense to programmers comfortable with math. Alternatively, I wrote an essay a few years ago explaining one technique, with (math-loving) programmers as the intended audience: https://www.falsifian.org/blog/2021/06/04/catalytic/ .

ā¤‹ Read More
In-reply-to » It would appear that Google's web crawlers are ignoring the robots.txt that I have on https://git.mills.io/robots.txt with content:

@prologic@twtxt.net Have you tried Googleā€™s robots.txt report? https://support.google.com/webmasters/answer/6062598?hl=en . I would expect Google to be pretty good about this sort of thing. If you have the energy to dig into it and, for example, post on support.google.com, Iā€™d be curious to hear what you find out.

ā¤‹ Read More
In-reply-to » That was a super interesting talk, I can recommend it: https://media.ccc.de/v/38c3-microbes-vs-mars-a-hacker-s-guide-to-finding-alien-life

@lyse@lyse.isobeef.org Thanks for sharing. I really enjoyed it. The beginning part about the history of life on Earth was fun to watch having just read Dawkinā€™s old book The Selfish Geene, and now I want to read more about archaea. The end of the talk about what might be going on on Mars made me a bit hopeful someone will find some good evidence.

ā¤‹ Read More

It turns out my ISP supports ipv6. After 4-5 months with only ipv4, I thought to ask customer support, and they told me how to turn it on. (Iā€™m pretty happy with ebox so far. Low-priced fibre with no issues so far. Though all my traffic goes through Montreal, 500km away from me in Toronto, which adds a few ms to network latency.)

ā¤‹ Read More

@andros@twtxt.andros.dev Sorry I missed your messages to #twtxt on IRC. There are people there, but it can take several hours to get a response. E.g. I check it every day or two. I recommend using an IRC bouncer. To answer your question about registries, I used a couple of registries when I first started out, to try to find feeds to follow, but havenā€™t since then. I donā€™t remember which ones, but they were easy to find with web searches.

ā¤‹ Read More
In-reply-to » @cuaxolotl This is largely by accident and not on purpose:

@prologic@twtxt.net Iā€™m grateful for this accident. I find browsing twtxt.net useful even though I donā€™t have an account there. I do it when I canā€™t use Jenny because I only have my phone, or if I want to see messages I might have missed. I know itā€™s not guaranteed to catch everything, but itā€™s pretty good, even if itā€™s not intentional.

ā¤‹ Read More
In-reply-to » So I am really curious, now that I am building upon @sorenpeter's Timeline app, how other users write/add their twtxt, and how you follow conversations. Comment svp!

@Codebuzz@www.codebuzz.nl I use Jenny to add to a local copy of my twtxt.txt file, and then manually push it to my web servers. I prefer timestamps to end with ā€œZā€ rather than ā€œ+00:00ā€ so I modified Jenny to use that format. I mostly follow conversations using Jenny, but sometimes I check twtxt.net, which could catch twts I missed.

ā¤‹ Read More
In-reply-to » @bender @prologic 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".

@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

ā¤‹ Read More
In-reply-to » @prologic 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.

@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.

ā¤‹ Read More

I installed GrapheneOS for the first time on Wednesday last week on a used Pixel 7a, and Iā€™m impressed. Installation was almost seamless, and I was able to do it from another Android phone. Iā€™ve run into very few wrinkles, even using Googleā€™s proprietary apps with GrapheneOSā€™s ā€œsandboxedā€ version of Google Play Services. The main problems Iā€™ve noticed: I canā€™t cast, and Google Timeline doesnā€™t seem to work (though I imagine the intersection between people keen to use GrapheneOS and keen to have Google log their location history is pretty small).

ā¤‹ Read More
In-reply-to » @bender True, I'm just not sure we can have it both way? šŸ¤” I can turn smartypants off, but I do seem to recall you wanted it on šŸ¤£

@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.

ā¤‹ Read More
In-reply-to » Recent #scifi #reading: (1/4)

@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.

ā¤‹ Read More

Inversion by Aric McBay was another random library pick. Like The Fall of Io, itā€™s the most recent in a series, though I think this series is pretty loosely connected. In contrast, the villain in this book is simple and cartoonishly evil. The book presents a design for utopia which was interesting but a little cloying. Iā€™m not sure if Iā€™m supposed to want to live there, but I donā€™t think I do. I enjoyed the book as easy reading, and might try the others in the series some time. (4/4)

ā¤‹ Read More

Iā€™m enjoying Wesley Chuā€™s Tao and Io series. Spies, action, ancient aliens. Some funny parts, some interesting world-building parts, some action-filled parts. I picked up The Fall of Io at random from a library a few weeks ago, and it turned out to be the last in a series of six (technically two series), so after finishing that I read the first and am partway through the second. Usually I try to read series in order, but this way is interesting. One thing I liked about The Fall of Io was that it it followed many points of view with somewhat conflicting interests, some more evil than others, and I felt sympathy for most of them. (I was kind of hoping it would be about Jupiterā€™s moon Io, but it wasnā€™t, but Iā€™m satisfied with what I ended up with.) (2/4)

ā¤‹ Read More

Diving into mblaze, I think Iā€™ve nearly* reached peek email geek.

Just a bunch of shell commands I can pipe together to search, list, view and reply to email (after syncing it to a local Maildir).

EXAMPLES at https://git.vuxu.org/mblaze/tree/README

So far Iā€™m using most of the tools directly from the command line, but I might take inspiration from https://sr.ht/~rakoo/omail/ to make my workflow a bit more efficient.

*To get any closer, I think Iā€™d have to hand-craft my own SMTP client or something.

ā¤‹ Read More
In-reply-to » More thoughts about changes to twtxt (as if we haven't had enough thoughts):

@prologic@twtxt.net

See https://dev.twtxt.net

Yes, that is exactly what I meant. I like that collection and ā€œtwtxt v2ā€ feels like a departure.

Maybe thereā€™s an advantage to grouping it into one spec, but IMO that shouldnā€™t be done at the same time as introducing new untested ideas.

See https://yarn.social (especially this section: https://yarn.social/#self-host) ā€“ It really doesnā€™t get much simpler than this šŸ¤£

Again, I like this existing simplicity. (I would even argue you donā€™t need the metadata.)

That page says ā€œFor the best experience your client should also support some of the Twtxt Extensionsā€¦ā€ but it is clear you donā€™t need to. I would like it to stay that way, and publishing a big long spec and calling it ā€œtwtxt v2ā€ feels like a departure from that. (I think the content of the document is valuable; Iā€™m just carping about how itā€™s being presented.)

ā¤‹ Read More

Recent #fiction #scifi #reading:

  • The Memory Police by Yōko Ogawa. Lovely writing. Very understated; reminded me of Kazuo Ishiguro. Sort of like Nineteen Eighty-Four but not. (I first heard it recommended in comparison to that work.)

  • Subcutanean by Aaron Reed; https://subcutanean.textories.com/ . Every copy of the book is different, which is a cool idea. I read two of them (one from the library, actually not different from the other printed copies, and one personalized e-book). I donā€™t read much horror so managed to be a little creeped out by it, which was fun.

  • The Wind from Nowhere, a 1962 novel by J. G. Ballard. A random pick from the sci-fi section; I think I picked it up because it made me imagine some weird 4-dimensional effect (ā€œfrom nowhereā€ meaning not in a normal direction) but actually (spoiler) it was just about a lot of wind for no reason. The book was moderately entertaining but there was nothing special about it.

Currently reading Scale by Greg Egan and Inversion by Aric McBay.

ā¤‹ Read More

More thoughts about changes to twtxt (as if we havenā€™t had enough thoughts):

  1. 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.

  1. 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.

  2. 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.)

  3. 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.

ā¤‹ Read More

#fzf is the new emacs: a tool with a simple purpose that has evolved to include an #email client. https://sr.ht/~rakoo/omail/

Iā€™m being a little silly, of course. fzf doesnā€™t actually check your email, but it appears to be basically the whole user interface for that mail program, with #mblaze wrangling the emails.

Iā€™ve been thinking about how I handle my email, and am tempted to make something similar. (When I originally saw this linked the author was presenting it as an example tweaked to their own needs, encouraging people to make their own.)

This approach could surely also be combined with #jenny, taking the place of (neo)mutt. For example mblazeā€™s mthread tool presents a threaded discussion with indentation.

ā¤‹ Read More
In-reply-to » @prologic Thanks for writing that up!

@bender@twtxt.net

Sorry, youā€™re right, I should have used numbers!

Iā€™m donā€™t understand what ā€œpreserve the original hashā€ could mean other than ā€œmake sure thereā€™s still a twt in the feed with that hashā€. Maybe the text could be clarified somehow.

Iā€™m also not sure what you mean by markdown already being part of it. Of course people can already use Markdown, just like presumably nothing stopped people from using (twt subjects) before they were formally described. But itā€™s not universal; e.g. as a jenny user I just see the plain text.

ā¤‹ Read More
In-reply-to » Yeah I'm curious to find out too beyond just "here say". But regardless of whether we should or shouldn't care about this or should or shouldn't comply. We should IMO. I'd have to build something that horrendously violates someone's rights in another country.

@prologic@twtxt.net Do you feel the same about published vs. privately stored data?

For me thereā€™s a distinction. I feel very strongly that I should be able to retain whatever private information I like. On the other hand, I do have some sympathy for requests not to publish or propagate (though I personally feel itā€™s still morally acceptable to ignore such requests).

ā¤‹ Read More
In-reply-to » LOl šŸ˜‚ Not only have a tried to write up a full Twtxt v2 specification, I've also written a Bash shell script that implements the new spec šŸ˜…

@lyse@lyse.isobeef.org Iā€™d suggest making the whole content-type thing a SHOULD, to accommodate people just using some hosting service they donā€™t have much control over. (The same situation could make detecting followers hard, but IMO ā€œplease email me if you follow meā€ is still legit twtxt, even if inconvenient.)

ā¤‹ Read More
In-reply-to » Okay folks, I've spent all day on this today, and I think its in "good enough"ā„¢ shape to share:

@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.

ā¤‹ Read More
In-reply-to » @falsifian Do you have specifics about the GRPD law about this?

@prologic@twtxt.net I have no specifics, only hopes. (I have seen some articles explaining the GDPR doesnā€™t apply to a ā€œpurely personal or household activityā€ but I donā€™t really know what that means.)

I donā€™t know if itā€™s worth giving much thought to the issue unless either you expect to get big enough for the GDPR to matter a lot (I imagine making money is a prerequisite) or someone specifically brings it up. Unless you enjoy thinking through this sort of thing, of course.

ā¤‹ Read More
In-reply-to » @prologic Do you have a link to some past discussion?

@david@collantes.us Thanks, thatā€™s good feedback to have. I wonder to what extent this already exists in registry servers and yarn pods. I havenā€™t really tried digging into the past in either one.

How interested would you be in changes in metadata and other comments in the feeds? Iā€™m thinking of just permanently saving every version of each twtxt file that gets pulled, not just the twts. It wouldnā€™t be hard to do (though presenting the information in a sensible way is another matter). Compression should make storage a non-issue unless someone does something weird with their feed like shuffle the comments around every time I fetch it.

ā¤‹ Read More
In-reply-to » One distinct disadvantage of (replyto:ā€¦) over (edit:#): (replyto:ā€¦) relies on clients always processing the entire feed ā€“ otherwise they wouldnā€™t even notice when a twt gets updated. a) This is more expensive, b) you cannot edit twts once they get rotated into an archived feed, because there is nothing signalling clients that they have to re-fetch that archived feed.

@movq@www.uninformativ.de I donā€™t think it has to be like that. Just make sure the new version of the twt is always appended to your current feed, and have some convention for indicating itā€™s an edit and which twt it supersedes. Keep the original twt as-is (or delete it if you donā€™t want new followers to see it); doesnā€™t matter if itā€™s archived because you arenā€™t changing that copy.

ā¤‹ Read More
In-reply-to » @prologic I wouldn't want my client to honour delete requests. I like my computer's memory to be better than mine, not worse, so it would bug me if I remember seeing something and my computer can't find it.

@prologic@twtxt.net Do you have a link to some past discussion?

Would the GDPR would apply to a one-person client like jenny? I seriously hope not. If someone asks me to delete an email they sent me, I donā€™t think I have to honour that request, no matter how European they are.

I am really bothered by the idea that someone could force me to delete my private, personal record of my interactions with them. Would I have to delete my journal entries about them too if they asked?

Maybe a public-facing client like yarnd needs to consider this, but that also bothers me. I was actually thinking about making an Internet Archive style twtxt archiver, letting you explore past twts, including long-dead feeds, see edit histories, deleted twts, etc.

ā¤‹ Read More
In-reply-to » I wrote some code to try out non-hash reply subjects formatted as (replyto ), while keeping the ability to use the existing hash style.

@david@collantes.us Well, I wouldnā€™t recommend using my code for your main jenny use anyway. If you want to try it out, set XDG_CONFIG_HOME and XDG_CACHE_HOME to some sandbox directories and only run my code there. If @movq@www.uninformativ.de is interested in any of this getting upstreamed, Iā€™d be happy to try rebasing the changes, but otherwise itā€™s a proof of concept and fun exercise.

ā¤‹ Read More
In-reply-to » I wrote some code to try out non-hash reply subjects formatted as (replyto ), while keeping the ability to use the existing hash style.

BTW this code doesnā€™t incorporate existing twts into jennyā€™s database. Itā€™s best used starting from scratch. Iā€™ve been testing it using a custom XDG_CACHE_HOME and XDG_CONFIG_HOME to avoid messing with my ā€œrealā€ jenny data.

ā¤‹ Read More

I wrote some code to try out non-hash reply subjects formatted as (replyto ), while keeping the ability to use the existing hash style.

I donā€™t think we need to decide all at once. If clients add support for a new method then people can use it if they like. The downside of course is that this costs developer time, so I decided to invest a few hours of my own time into a proof of concept.

With apologies to @movq@www.uninformativ.de for corrupting jennyā€™s beautiful code. I donā€™t write this expecting you to incorporate the patch, because it does complicate things and might not be a direction you want to go in. But if you like any part of this approach feel free to use bits of it; I release the patch under jennyā€™s current LICENCE.

Supporting both kinds of reply in jenny was complicated because each email can only have one Message-Id, and because itā€™s possible the target twt will not be seen until after the twt referencing it. The following patch uses an sqlite database to keep track of known (url, timestamp) pairs, as well as a separate table of (url, timestamp) pairs that havenā€™t been seen yet but are wanted. When one of those ā€œwantedā€ twts is finally seen, the mail file gets rewritten to include the appropriate In-Reply-To header.

Patch based on jenny commit 73a5ea81.

https://www.falsifian.org/a/oDtr/patch0.txt

Not implemented:

  • Composing twts using the (replyto ā€¦) format.
  • Probably other important things Iā€™m forgetting.

ā¤‹ Read More
In-reply-to » @quark My money is on a SHA1SUM hash encoding to keep things much simpler:

@prologic@twtxt.net Wikipedia claims sha1 is vulnerable to a ā€œchosen-prefix attackā€, which I gather means I can write any two twts I like, and then cause them to have the exact same sha1 hash by appending something. I guess a twt ending in random junk might look suspcious, but perhaps the junk could be worked into an image URL like

Image

. If thatā€™s not possible now maybe it will be later.

git only uses sha1 because theyā€™re stuck with it: migrating is very hard. There was an effort to move git to sha256 but I donā€™t know its status. I think there is progress being made with Game Of Trees, a git clone that uses the same on-disk format.

I canā€™t imagine any benefit to using sha1, except that maybe some very old software might support sha1 but not sha256.

ā¤‹ Read More
In-reply-to » (replyto http://darch.dk/twtxt.txt 2024-09-15T12:50:17Z) @sorenpeter I like this idea. Just for fun, I'm using a variant in this twt. (Also because I'm curious how it non-hash subjects appear in jenny and yarn.)

@movq@www.uninformativ.de Agreed that hashes have a benefit. I came up with a similar example where when I twted about an 11-character hash collision. Perhaps hashes could be made optional somehow. Like, you could use the ā€œreplytoā€ idea and then additionally put a hash somewhere if you want to lock in which version of the twt you are replying to.

ā¤‹ Read More
In-reply-to » An alternate idea for supporting (properly) Twt Edits is to denoate as such and extend the meaning of a Twt Subject (which would need to be called something better?); For example, let's say I produced the following Twt:

@quark@ferengi.one Oh, sure, it would be nice if edits didnā€™t break threads. I was just pondering the circumstances under which I get annoyed about data being irrecoverably deleted or otherwise lost.

ā¤‹ Read More
In-reply-to » An alternate idea for supporting (properly) Twt Edits is to denoate as such and extend the meaning of a Twt Subject (which would need to be called something better?); For example, let's say I produced the following Twt:

@quark@ferengi.one I donā€™t really mind if the twt gets edited before I even fetch it. I think itā€™s the idea of my computer discarding old versions itā€™s fetched, especially if itā€™s shown them to me, that bugs me.

But I do like @movq@www.uninformativ.deā€™s suggestion on this thread that feeds could contain both the original and the edited twt. I guess it would be up to the author.

ā¤‹ Read More
In-reply-to » An alternate idea for supporting (properly) Twt Edits is to denoate as such and extend the meaning of a Twt Subject (which would need to be called something better?); For example, let's say I produced the following Twt:

@prologic@twtxt.net I wouldnā€™t want my client to honour delete requests. I like my computerā€™s memory to be better than mine, not worse, so it would bug me if I remember seeing something and my computer canā€™t find it.

ā¤‹ Read More
In-reply-to » Taking the last n characters of a base32 encoded hash instead of the first n can be problematic for several reasons:

@prologic@twtxt.net

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

ā¤‹ Read More
In-reply-to » (replyto http://darch.dk/twtxt.txt 2024-09-15T12:50:17Z) Hmm, but yarnd also isn't showing these twts as being part of a thread. @prologic you said yarnd respects customs subjects. Shouldn't these twts count as having a custom subject, and get threaded together?

@quark@ferengi.one It looks like the part about traditional topics has been removed from that page. Here is an old version that mentions it: https://web.archive.org/web/20221211165458/https://dev.twtxt.net/doc/twtsubjectextension.html . Still, I donā€™t see any description of what is actually allowed between the parentheses. May be worth noting that twtxt.net is displaying the twts with the subject stripped, so some piece of code is recognizing it as a subject (or, at least, something to be removed).

ā¤‹ Read More

@sorenpeter@darch.dk I like this idea. Just for fun, Iā€™m using a variant in this twt. (Also because Iā€™m curious how it non-hash subjects appear in jenny and yarn.)

URLs can contain commas so I suggest a different character to separate the url from the date. Is this twt Iā€™ve used space (also after ā€œreplytoā€, for symmetry).

I think this solves:

  • Changing feed identities: although @mckinley@twtxt.net points out URLs can change, I think this syntax should be okay as long as the feed at that URL can be fetched, and as long as the current canonical URL for the feed lists this one as an alternate.
  • editing, if you donā€™t care about message integrity
  • finding the root of a thread, if youā€™re not following the author

An optional hash could be added if message integrity is desired. (E.g. if you donā€™t trust the feed author not to make a misleading edit.) Other recent suggestions about how to deal with edits and hashes might be applicable then.

People publishing multiple twts per second should include sub-second precision in their timestamps. As you suggested, the timestamp could just be copied verbatim.

ā¤‹ Read More
In-reply-to » Now WTF!? Suddenly, @falsifian'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.

@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.

ā¤‹ Read More
In-reply-to » @prologic Yeah, that thing with (#hash;#originalHash) would also work.

@movq@www.uninformativ.de

Maybe Iā€™m being a bit too purist/minimalistic here. As I said before (in one of the 1372739 posts on this topic ā€“ or maybe I didnā€™t even send that twt, I donā€™t remember šŸ˜…), I never really liked hashes to begin with. They arenā€™t super hard to implement but they are kind of against the beauty of the original twtxt ā€“ because you need special client support for them. Itā€™s not something that you could write manually in your twtxt.txt file. With @sorenpeter@darch.dkā€™s proposal, though, that would be possible.

Tangentially related, I was a bit disappointed to learn that the twt subject extension is now never used except with hashes. Manually-written subjects sounded so beautifully ad-hoc and organic as a way to disambiguate replies. Maybe Iā€™ll try it some time just for fun.

ā¤‹ Read More
In-reply-to » @falsifian TLS won't help you if you change your domain name. How will people know if it's really you? Maybe that's not the biggest problem for something with such low stakes as twtxt, but it's a reasonable concern that could be solved using signatures from an unchanging cryptographic key.

@prologic@twtxt.net

(#w4chkna) @falsifian@www.falsifian.org You mean the idea of being able to inline # url = changes in your feed?

Yes, that one. But @lyse@lyse.isobeef.org pointed out suffers a compatibility issue, since currently the first listed url is used for hashing, not the last. Unless your feed is in reverse chronological order. Heh, I guess another metadata field could indicate which version to use.

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?

I donā€™t think itā€™s that likely my feed url will change.

ā¤‹ Read More
In-reply-to » @falsifian TLS won't help you if you change your domain name. How will people know if it's really you? Maybe that's not the biggest problem for something with such low stakes as twtxt, but it's a reasonable concern that could be solved using signatures from an unchanging cryptographic key.

@mckinley@twtxt.net Yes, changing domains is be a problem if you tie your identity to an https url. But I also worry about being stuck with a key I canā€™t rotate. Whatever gets used, it would be nice to be able to rotate identities. I like @lyse@lyse.isobeef.orgā€™s idea for that.

ā¤‹ Read More
In-reply-to » @prologic earlier you suggested extending hashes to 11 characters, but here's an argument that they should be even longer than that.

@prologic@twtxt.net Brute force. I just hashed a bunch of versions of both tweets until I found a collision.

I mostly just wanted an excuse to write the program. I donā€™t know how I feel about actually using super-long hashes; could make the twts annoying to read if you prefer to view them untransformed.

ā¤‹ Read More

@prologic@twtxt.net earlier you suggested extending hashes to 11 characters, but hereā€™s an argument that they should be even longer than that.

Imagine I found this twt one day at https://example.com/twtxt.txt :

2024-09-14T22:00Z Useful backup command: rsync -a ā€œ$HOMEā€ /mnt/backup

Image

and I responded with ā€œ(#5dgoirqemeq) Thanks for the tip!ā€. Then Iā€™ve endorsed the twt, but it could latter get changed to

2024-09-14T22:00Z Useful backup command: rm -rf /some_important_directory

Image

which also has an 11-character base32 hash of 5dgoirqemeq. (Iā€™m using the existing hashing method with https://example.com/twtxt.txt as the feed url, but Iā€™m taking 11 characters instead of 7 from the end of the base32 encoding.)

Thatā€™s what I meant by ā€œspoofingā€ in an earlier twt.

I donā€™t know if preventing this sort of attack should be a goal, but if it is, the number of bits in the hash should be at least two times log2(number of attempts we want to defend against), where the ā€œtwo timesā€ is because of the birthday paradox.

Side note: current hashes always end with ā€œaā€ or ā€œqā€, which is a bit wasteful. Maybe we should take the first N characters of the base32 encoding instead of the last N.

Code I used for the above example: https://fossil.falsifian.org/misc/file?name=src/twt_collision/find_collision.c
I only needed to compute 43394987 hashes to find it.

ā¤‹ Read More
In-reply-to » Interesting.. QUIC isn't very quick over fast internet.

@prologic@twtxt.net

Theyā€™re in Section 6:

  • Receiver should adopt UDP GRO. (Something about saving CPU processing UDP packets; Iā€™m a but fuzzy about it.) And they have suggestions for making GRO more useful for QUIC.

  • Some other receiver-side suggestions: ā€œsending delayed QUICK ACKsā€; ā€œusing recvmsg to read multiple UDF packets in a single system callā€.

  • Use multiple threads when receiving large files.

ā¤‹ Read More
In-reply-to » @prologic Some criticisms and a possible alternative direction:

@mckinley@twtxt.net

HTTPS is supposed to do [verification] anyway.

TLS provides verification that nobody is tampering with or snooping on your connection to a server. It doesnā€™t, for example, verify that a file downloaded from server A is from the same entity as the one from server B.

I was confused by this response for a while, but now I think I understand what youā€™re getting at. You are pointing out that with signed feeds, I can verify the authenticity of a feed without accessing the original server, whereas with HTTPS I canā€™t verify a feed unless I download it myself from the origin server. Is that right?

I.e. if the HTTPS origin server is online and I donā€™t mind taking the time and bandwidth to contact it, then perhaps signed feeds offer no advantage, but if the origin server might not be online, or I want to download a big archive of lots of feeds at once without contacting each server individually, then I need signed feeds.

feed locations [being] URLs gives some flexibility

It does give flexibility, but perhaps we should have made them URIs instead for even more flexibility. Then, you could use a tag URI, urn:uuid:*, or a regular old URL if you wanted to. The spec seems to indicate that the url tag should be a working URL that clients can use to find a copy of the feed, optionally at multiple locations. Iā€™m not very familiar with IP{F,N}S but if it ensures you own an identifier forever and that identifier points to a current copy of your feed, it could be a great way to fix it on an individual basis without breaking any specs :)

Iā€™m also not very familiar with IPFS or IPNS.

I havenā€™t been following the other twts about signatures carefully. I just hope whatever you smart people come up with will be backwards-compatible so it still works if Iā€™m too lazy to change how I publish my feed :-)

ā¤‹ Read More
In-reply-to » Interesting.. QUIC isn't very quick over fast internet.

@xuu Thanks for the link. I found a pdf on one of the authorsā€™ home pages: https://ahmadhassandebugs.github.io/assets/pdf/quic_www24.pdf . I wonder how the protocol was evaluated closer to the time it became a standard, and whether anything has changed. I wonder if network speeds have grown faster than CPU speeds since then. The paper says the performance is around the same below around 600 Mbps.

To be fair, I donā€™t think QUIC was ever expected to be faster for transferring a single stream of data. I think QUIC is supposed to reduce the impact of a dropped packet by making sure it only affects the stream itā€™s part of. I imagine QUIC still has that advantage, and this paper is showing the other side of a tradeoff.

ā¤‹ Read More
In-reply-to » @prologic Some criticisms and a possible alternative direction:

@lyse@lyse.isobeef.org This looks like a nice way to do it.

Another thought: if clients canā€™t agree on the url (for example, if we switch to this new way, but some old clients still do it the old way), that could be mitigated by computing many hashes for each twt: one for every url in the feed. So, if a feed has three URLs, every twt is associated with three hashes when it comes time to put threads together.

A client stills need to choose one url to use for the hash when composing a reply, but this might add some breathing room if thereā€™s a period when clients are doing different things.

(From what I understand of jenny, this would be difficult to implement there since each pseudo-email can only have one msgid to match to the in-reply-to headers. I donā€™t know about other clients.)

ā¤‹ Read More
In-reply-to » All this hash breakage made me wonder if we should try to introduce ā€œmessage IDsā€ after all. šŸ˜…

@movq@www.uninformativ.de Another idea: just hash the feed url and time, without the message content. And donā€™t twt more than once per second.

Maybe you could even just use the time, and rely on @-mentions to disambiguate. Not sure how that would work out.

Though I kind of like the idea of twts being immutable. At least, itā€™s clear which version of a twt youā€™re replying to (assuming nobody is engineering hash collisions).

ā¤‹ Read More
In-reply-to » On the Subject of Feed Identities; I propose the following:

In fact, maybe your public key idea is compatible with my last point. Just come up with a url scheme that means ā€œthis feedā€™s primary URL is actually a public keyā€, and then feed authors can optionally switch to that.

ā¤‹ Read More
In-reply-to » On the Subject of Feed Identities; I propose the following:

@prologic@twtxt.net Some criticisms and a possible alternative direction:

  1. 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.

  2. 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.)

ā¤‹ Read More
In-reply-to » All this hash breakage made me wonder if we should try to introduce ā€œmessage IDsā€ after all. šŸ˜…

@movq@www.uninformativ.de @prologic@twtxt.net Another option would be: when you edit a twt, prefix the new one with (#[old hash]) and some indication that itā€™s an edited version of the original tweet with that hash. E.g. if the hash used to be abcd123, the new version should start ā€œ(#abcd123) (redit)ā€.

What I like about this is that clients that donā€™t know this convention will still stick it in the same thread. And I feel itā€™s in the spirit of the old pre-hash (subject) convention, though thatā€™s before my time.

I guess it may not work when the edited twt itself is a reply, and there are replies to it. Maybe that could be solved by letting twts have more than one (subject) prefix.

But the great thing about the current system is that nobody can spoof message IDs.

I donā€™t think twtxt hashes are long enough to prevent spoofing.

ā¤‹ Read More
In-reply-to » Serious open (for anyone) question: what makes you follow someone on twtxt? Will you just follow anyone that you come across, simply because that someone using the "decentralised, minimalist microblogging service for hackers" microblog?

@bender@twtxt.net So far Iā€™ve been following feeds fairly liberally. Iā€™ll check to see if we have anything in common and lean toward following, just because this is new to me and it feels like a small community. But Iā€™m still figuring out what I want. Later Iā€™ll probably either trim my follower list or come up with some way to prioritize the feeds Iā€™m more interested in.

ā¤‹ Read More
In-reply-to » I guess I can configure neomutt to hide the feeds I don't care about.

@prologic@twtxt.net One of your twts begins with (#st3wsda): https://twtxt.net/twt/bot5z4q

Based on the twtxt.net web UI, it seems to be in reply to a twt by @cuaxolotl@sunshinegardens.org which begins ā€œIā€™ve been sketching outā€¦ā€.

But jenny thinks the hash of that twt is 6mdqxrq. At least, thereā€™s a very twt in their feed with that hash that has the same text as appears on yarn.social (except with ā€˜ instead of ā€™).

Based on this, it appears jenny and yarnd disagree about the hash of the twt, or perhaps the twt was edited (though I canā€™t see any difference, assuming ā€™ vs ā€™ is just a rendering choice).

ā¤‹ Read More
In-reply-to » @movq Is there a good way to get jenny to do a one-off fetch of a feed, for when you want to fill in missing parts of a thread? I just added @slashdot to my private follow file just because @prologic keeps responding to the feed :-P and I want to know what he's commenting on even though I don't want to see every new slashdot twt.

@prologic@twtxt.net I believe you when you say registries as designed today do not crawl. But when I first read the spec, it conjured in my mind a search engine. Now I donā€™t know how things work out in practice, but just based on reading, I donā€™t see why it canā€™t be an API for a crawling search engine. (In fact I donā€™t see anything in the spec indicating registry servers shouldnā€™t crawl.)

(I also noticed that https://twtxt.readthedocs.io/en/latest/user/registry.html recommends ā€œThe registries should sync each others user list by using the users endpointā€. If I understood that right, registering with one should be enough to appear on others, even if they donā€™t crawl.)

Does yarnd provide an API for finding twts? Is it similar?

ā¤‹ Read More
In-reply-to » @movq Is there a good way to get jenny to do a one-off fetch of a feed, for when you want to fill in missing parts of a thread? I just added @slashdot to my private follow file just because @prologic keeps responding to the feed :-P and I want to know what he's commenting on even though I don't want to see every new slashdot twt.

@prologic@twtxt.net I guess I thought they were search engines. Anyway, the registry API looks like a decent one for searching for tweets. Could/should yarn.social pods implement the same API?

ā¤‹ Read More
In-reply-to » I guess I can configure neomutt to hide the feeds I don't care about.

I just manually followed the steps at https://dev.twtxt.net/doc/twthashextension.html and got 6mdqxrq. I wonder what happened. Did @cuaxolo@sunshinegardens.org edit the twt in some subtle way after twtxt.net downloaded it? I couldnā€™t spot a diff, other than ā€˜ appearing as ā€™ on yarn.social, which I assume is a transformation done by twtxt.net.

ā¤‹ Read More
In-reply-to » @movq Is there a good way to get jenny to do a one-off fetch of a feed, for when you want to fill in missing parts of a thread? I just added @slashdot to my private follow file just because @prologic keeps responding to the feed :-P and I want to know what he's commenting on even though I don't want to see every new slashdot twt.

@prologic@twtxt.net Whatā€™s the difference between search.twtxt.net and the /api/plain/tweets endpoint of a registry? In my mind, a registry is a twtxt search engine. Or are registries not supposed to do their own crawling to discover new feeds?

ā¤‹ Read More