# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 15156
# self = https://watcher.sour.is?uri=https://www.uninformativ.de/twtxt.txt&offset=12775
# next = https://watcher.sour.is?uri=https://www.uninformativ.de/twtxt.txt&offset=12875
# prev = https://watcher.sour.is?uri=https://www.uninformativ.de/twtxt.txt&offset=12675
@prologic Okay. So it goes like this:

My client fetches a feed. It builds a map/hashmap/dictionary of all twts: Timestamps map to twt hashes. It then stores/shows the twts. It also stores the hashmap.

On the next fetch operation, the client re-processes all twts in the feed. It must now compare each timestamp to the previously built hashmap: Aha, timestamp T has now a twt hash of B instead of A, so this is an edited twt.

Did I understand that correctly so far? šŸ¤”
@prologic Okay. So it goes like this:

My client fetches a feed. It builds a map/hashmap/dictionary of all twts: Timestamps map to twt hashes. It then stores/shows the twts. It also stores the hashmap.

On the next fetch operation, the client re-processes all twts in the feed. It must now compare each timestamp to the previously built hashmap: Aha, timestamp T has now a twt hash of B instead of A, so this is an edited twt.

Did I understand that correctly so far? šŸ¤”
@prologic Okay. So it goes like this:

My client fetches a feed. It builds a map/hashmap/dictionary of all twts: Timestamps map to twt hashes. It then stores/shows the twts. It also stores the hashmap.

On the next fetch operation, the client re-processes all twts in the feed. It must now compare each timestamp to the previously built hashmap: Aha, timestamp T has now a twt hash of B instead of A, so this is an edited twt.

Did I understand that correctly so far? šŸ¤”
@prologic Any more details on the edit stuff? šŸ¤”
@prologic Any more details on the edit stuff? šŸ¤”
@prologic Any more details on the edit stuff? šŸ¤”
@prologic Any more details on the edit stuff? šŸ¤”
I have no intention of dropping support for Gopher or Gemini from jenny.
I have no intention of dropping support for Gopher or Gemini from jenny.
I have no intention of dropping support for Gopher or Gemini from jenny.
I have no intention of dropping support for Gopher or Gemini from jenny.
I might actually end up doing this excercise with our apprentices at work. You can use this as a starting point to teach *a ton* of things. šŸ¤”
I might actually end up doing this excercise with our apprentices at work. You can use this as a starting point to teach *a ton* of things. šŸ¤”
I might actually end up doing this excercise with our apprentices at work. You can use this as a starting point to teach *a ton* of things. šŸ¤”
I might actually end up doing this excercise with our apprentices at work. You can use this as a starting point to teach *a ton* of things. šŸ¤”
@prologic When I first started using twtxt, I was fascinated by the fact that it’s just a simple text file. This is already undermined *a lot* today by us using multiline replies and Markdown and what not. Still, I would love to retain this property of it being just a file that needs very few external tools to maintain. (Jenny is quite bloated, one might argue. One of the reasons for even *starting* the jenny project was the calculation of hashes – I was using a smaller, simpler toolchest before.)

If we were to use (replyto:…), I could just copy and paste the required info into my text editor. With echo … | sha256sum | base64 (+ the truncation step), I have to open a new terminal, make sure the tab gets copied verbatim, make sure that there’s no trailing whitespace in the content, little details like that. It *is* more effort.

This probably isn’t the best argument for (replyto:…), but it is *an* argument.

Would people do all this manually? I don’t know. Probably not. But part of the fascination with twtxt is that you *could* do it.

I’m speaking from a point of extreme minimalism here and all this isn’t strictly only related to (reply:…). It just reflects my general view on twtxt. The more additional things we build on top, the less interesting twtxt becomes (for me). My goal would be to find solutions that require *less*. Like, don’t solve edits breaking threads by *adding* another protocol, but by rethinking the whole thing, finding the root cause, and maybe come up with something that doesn’t need another building block on top.

This is all I have to say for now. 😃 I’m gonna let things cool off for a while.
@prologic When I first started using twtxt, I was fascinated by the fact that it’s just a simple text file. This is already undermined *a lot* today by us using multiline replies and Markdown and what not. Still, I would love to retain this property of it being just a file that needs very few external tools to maintain. (Jenny is quite bloated, one might argue. One of the reasons for even *starting* the jenny project was the calculation of hashes – I was using a smaller, simpler toolchest before.)

If we were to use (replyto:…), I could just copy and paste the required info into my text editor. With echo … | sha256sum | base64 (+ the truncation step), I have to open a new terminal, make sure the tab gets copied verbatim, make sure that there’s no trailing whitespace in the content, little details like that. It *is* more effort.

This probably isn’t the best argument for (replyto:…), but it is *an* argument.

Would people do all this manually? I don’t know. Probably not. But part of the fascination with twtxt is that you *could* do it.

I’m speaking from a point of extreme minimalism here and all this isn’t strictly only related to (reply:…). It just reflects my general view on twtxt. The more additional things we build on top, the less interesting twtxt becomes (for me). My goal would be to find solutions that require *less*. Like, don’t solve edits breaking threads by *adding* another protocol, but by rethinking the whole thing, finding the root cause, and maybe come up with something that doesn’t need another building block on top.

This is all I have to say for now. 😃 I’m gonna let things cool off for a while.
@prologic When I first started using twtxt, I was fascinated by the fact that it’s just a simple text file. This is already undermined *a lot* today by us using multiline replies and Markdown and what not. Still, I would love to retain this property of it being just a file that needs very few external tools to maintain. (Jenny is quite bloated, one might argue. One of the reasons for even *starting* the jenny project was the calculation of hashes – I was using a smaller, simpler toolchest before.)

If we were to use (replyto:…), I could just copy and paste the required info into my text editor. With echo … | sha256sum | base64 (+ the truncation step), I have to open a new terminal, make sure the tab gets copied verbatim, make sure that there’s no trailing whitespace in the content, little details like that. It *is* more effort.

This probably isn’t the best argument for (replyto:…), but it is *an* argument.

Would people do all this manually? I don’t know. Probably not. But part of the fascination with twtxt is that you *could* do it.

I’m speaking from a point of extreme minimalism here and all this isn’t strictly only related to (reply:…). It just reflects my general view on twtxt. The more additional things we build on top, the less interesting twtxt becomes (for me). My goal would be to find solutions that require *less*. Like, don’t solve edits breaking threads by *adding* another protocol, but by rethinking the whole thing, finding the root cause, and maybe come up with something that doesn’t need another building block on top.

This is all I have to say for now. 😃 I’m gonna let things cool off for a while.
@prologic When I first started using twtxt, I was fascinated by the fact that it’s just a simple text file. This is already undermined *a lot* today by us using multiline replies and Markdown and what not. Still, I would love to retain this property of it being just a file that needs very few external tools to maintain. (Jenny is quite bloated, one might argue. One of the reasons for even *starting* the jenny project was the calculation of hashes – I was using a smaller, simpler toolchest before.)

If we were to use (replyto:…), I could just copy and paste the required info into my text editor. With echo … | sha256sum | base64 (+ the truncation step), I have to open a new terminal, make sure the tab gets copied verbatim, make sure that there’s no trailing whitespace in the content, little details like that. It *is* more effort.

This probably isn’t the best argument for (replyto:…), but it is *an* argument.

Would people do all this manually? I don’t know. Probably not. But part of the fascination with twtxt is that you *could* do it.

I’m speaking from a point of extreme minimalism here and all this isn’t strictly only related to (reply:…). It just reflects my general view on twtxt. The more additional things we build on top, the less interesting twtxt becomes (for me). My goal would be to find solutions that require *less*. Like, don’t solve edits breaking threads by *adding* another protocol, but by rethinking the whole thing, finding the root cause, and maybe come up with something that doesn’t need another building block on top.

This is all I have to say for now. 😃 I’m gonna let things cool off for a while.
@prologic

> Location-based addressing is vulnerable to the content changing. If the content changes the "location" is no longer valid. This is a problem if you build systems that rely on this.

What you’re mentioning is *the primary reason*, imho, *for* location-based addressing. You’re referencing a certain entry in a feed by its timestamp and the author is free to edit it. This solves the problem of broken threads after edits. And editing ā€œrawā€ twtxt files is a very natural thing to do in the twtxt world (just not in *Yarn*’s world). It’s one of the core aspects and main selling points: You just have a file that you can edit with vi or whatever, done.

If you think changing content is a *vulnerability* of location-based addressing, then I get the feeling that there’s some kind of big misunderstanding going on here. šŸ¤” Either on your end or on mine/ours. šŸ¤”
@prologic

> Location-based addressing is vulnerable to the content changing. If the content changes the "location" is no longer valid. This is a problem if you build systems that rely on this.

What you’re mentioning is *the primary reason*, imho, *for* location-based addressing. You’re referencing a certain entry in a feed by its timestamp and the author is free to edit it. This solves the problem of broken threads after edits. And editing ā€œrawā€ twtxt files is a very natural thing to do in the twtxt world (just not in *Yarn*’s world). It’s one of the core aspects and main selling points: You just have a file that you can edit with vi or whatever, done.

If you think changing content is a *vulnerability* of location-based addressing, then I get the feeling that there’s some kind of big misunderstanding going on here. šŸ¤” Either on your end or on mine/ours. šŸ¤”
@prologic

> Location-based addressing is vulnerable to the content changing. If the content changes the "location" is no longer valid. This is a problem if you build systems that rely on this.

What you’re mentioning is *the primary reason*, imho, *for* location-based addressing. You’re referencing a certain entry in a feed by its timestamp and the author is free to edit it. This solves the problem of broken threads after edits. And editing ā€œrawā€ twtxt files is a very natural thing to do in the twtxt world (just not in *Yarn*’s world). It’s one of the core aspects and main selling points: You just have a file that you can edit with vi or whatever, done.

If you think changing content is a *vulnerability* of location-based addressing, then I get the feeling that there’s some kind of big misunderstanding going on here. šŸ¤” Either on your end or on mine/ours. šŸ¤”
@prologic

> Location-based addressing is vulnerable to the content changing. If the content changes the "location" is no longer valid. This is a problem if you build systems that rely on this.

What you’re mentioning is *the primary reason*, imho, *for* location-based addressing. You’re referencing a certain entry in a feed by its timestamp and the author is free to edit it. This solves the problem of broken threads after edits. And editing ā€œrawā€ twtxt files is a very natural thing to do in the twtxt world (just not in *Yarn*’s world). It’s one of the core aspects and main selling points: You just have a file that you can edit with vi or whatever, done.

If you think changing content is a *vulnerability* of location-based addressing, then I get the feeling that there’s some kind of big misunderstanding going on here. šŸ¤” Either on your end or on mine/ours. šŸ¤”
@aelaraji rsync -zaXAP is what I use all the time. But that’s all – for the rest, I have to consult the manual. šŸ˜…
@aelaraji rsync -zaXAP is what I use all the time. But that’s all – for the rest, I have to consult the manual. šŸ˜…
@aelaraji rsync -zaXAP is what I use all the time. But that’s all – for the rest, I have to consult the manual. šŸ˜…
@aelaraji rsync -zaXAP is what I use all the time. But that’s all – for the rest, I have to consult the manual. šŸ˜…
@lyse Yeah, it’s different for everone. šŸ˜… I, for one, am not particularly interested (yet) in the underlying hardware. Logic gates and stuff like that, that’s not my kind of thing. Maybe in the future, but there’s still more than enough to explore in the world of software. 😃
@lyse Yeah, it’s different for everone. šŸ˜… I, for one, am not particularly interested (yet) in the underlying hardware. Logic gates and stuff like that, that’s not my kind of thing. Maybe in the future, but there’s still more than enough to explore in the world of software. 😃
@lyse Yeah, it’s different for everone. šŸ˜… I, for one, am not particularly interested (yet) in the underlying hardware. Logic gates and stuff like that, that’s not my kind of thing. Maybe in the future, but there’s still more than enough to explore in the world of software. 😃
@lyse Yeah, it’s different for everone. šŸ˜… I, for one, am not particularly interested (yet) in the underlying hardware. Logic gates and stuff like that, that’s not my kind of thing. Maybe in the future, but there’s still more than enough to explore in the world of software. 😃
@eapl.me Aww. Well, I gave you a Follow on Mastodon (although that appears to be moastly Spanish šŸ¤”).
@eapl.me Aww. Well, I gave you a Follow on Mastodon (although that appears to be moastly Spanish šŸ¤”).
@eapl.me Aww. Well, I gave you a Follow on Mastodon (although that appears to be moastly Spanish šŸ¤”).
@eapl.me Aww. Well, I gave you a Follow on Mastodon (although that appears to be moastly Spanish šŸ¤”).
@falsifian You had me there for a second. šŸ˜…

I have to admit, even though I knew they existed, I never had a look at Leah’s mail tools. Just gave mthread a spin and this is crazy fast. 🤯 Tempting!
@falsifian You had me there for a second. šŸ˜…

I have to admit, even though I knew they existed, I never had a look at Leah’s mail tools. Just gave mthread a spin and this is crazy fast. 🤯 Tempting!
@falsifian You had me there for a second. šŸ˜…

I have to admit, even though I knew they existed, I never had a look at Leah’s mail tools. Just gave mthread a spin and this is crazy fast. 🤯 Tempting!
@falsifian You had me there for a second. šŸ˜…

I have to admit, even though I knew they existed, I never had a look at Leah’s mail tools. Just gave mthread a spin and this is crazy fast. 🤯 Tempting!
@lyse Gut festhalten!
@lyse Gut festhalten!
@lyse Gut festhalten!
@lyse Gut festhalten!
Someone recommended a nice (German) talk:

https://media.ccc.de/v/ds24-394-linux-hello-world-nur-mit-einem-hex-editor

Luckily, everythingā„¢ is easierā„¢ on DOS with .COM files. A fun little time killer to make a HELLO.COM using only a hex editor, the Intel docs and the DOS interrupt list.

That ModR/M stuff is easy in the end, but it took me quite some time to understand it. 🄓

(I’m still new to DOS on this level and didn’t know that all segment registers are initialized to the same values, apparently, so copying CS to DS was not necessary. Too lazy to update the screenshot. File size shrinks by 4 bytes.)

https://movq.de/v/0139fbaabc/doshello.png
Someone recommended a nice (German) talk:

https://media.ccc.de/v/ds24-394-linux-hello-world-nur-mit-einem-hex-editor

Luckily, everythingā„¢ is easierā„¢ on DOS with .COM files. A fun little time killer to make a HELLO.COM using only a hex editor, the Intel docs and the DOS interrupt list.

That ModR/M stuff is easy in the end, but it took me quite some time to understand it. 🄓

(I’m still new to DOS on this level and didn’t know that all segment registers are initialized to the same values, apparently, so copying CS to DS was not necessary. Too lazy to update the screenshot. File size shrinks by 4 bytes.)

https://movq.de/v/0139fbaabc/doshello.png
Someone recommended a nice (German) talk:

https://media.ccc.de/v/ds24-394-linux-hello-world-nur-mit-einem-hex-editor

Luckily, everythingā„¢ is easierā„¢ on DOS with .COM files. A fun little time killer to make a HELLO.COM using only a hex editor, the Intel docs and the DOS interrupt list.

That ModR/M stuff is easy in the end, but it took me quite some time to understand it. 🄓

(I’m still new to DOS on this level and didn’t know that all segment registers are initialized to the same values, apparently, so copying CS to DS was not necessary. Too lazy to update the screenshot. File size shrinks by 4 bytes.)

https://movq.de/v/0139fbaabc/doshello.png
Someone recommended a nice (German) talk:

https://media.ccc.de/v/ds24-394-linux-hello-world-nur-mit-einem-hex-editor

Luckily, everythingā„¢ is easierā„¢ on DOS with .COM files. A fun little time killer to make a HELLO.COM using only a hex editor, the Intel docs and the DOS interrupt list.

That ModR/M stuff is easy in the end, but it took me quite some time to understand it. 🄓

(I’m still new to DOS on this level and didn’t know that all segment registers are initialized to the same values, apparently, so copying CS to DS was not necessary. Too lazy to update the screenshot. File size shrinks by 4 bytes.)

https://movq.de/v/0139fbaabc/doshello.png
@prologic A factor of 5 is hard to believe, to be honest. Especially disk usage. I know nothing about the internals of yarnd, but still.

If this constitutes a hard ā€œnoā€ to the proposal, then I think we don’t need to discuss it further.
@prologic A factor of 5 is hard to believe, to be honest. Especially disk usage. I know nothing about the internals of yarnd, but still.

If this constitutes a hard ā€œnoā€ to the proposal, then I think we don’t need to discuss it further.
@prologic A factor of 5 is hard to believe, to be honest. Especially disk usage. I know nothing about the internals of yarnd, but still.

If this constitutes a hard ā€œnoā€ to the proposal, then I think we don’t need to discuss it further.
@prologic A factor of 5 is hard to believe, to be honest. Especially disk usage. I know nothing about the internals of yarnd, but still.

If this constitutes a hard ā€œnoā€ to the proposal, then I think we don’t need to discuss it further.
@prologic What’s that in absolute numbers? My ~/Mail/twt is currently 26 MB in size. Increase that by 20% and we get 31.2 MB.

I don’t buy the argument with 2025 bytes. This worst case scenario is not relevant in practice.
@prologic What’s that in absolute numbers? My ~/Mail/twt is currently 26 MB in size. Increase that by 20% and we get 31.2 MB.

I don’t buy the argument with 2025 bytes. This worst case scenario is not relevant in practice.
@prologic What’s that in absolute numbers? My ~/Mail/twt is currently 26 MB in size. Increase that by 20% and we get 31.2 MB.

I don’t buy the argument with 2025 bytes. This worst case scenario is not relevant in practice.
@prologic What’s that in absolute numbers? My ~/Mail/twt is currently 26 MB in size. Increase that by 20% and we get 31.2 MB.

I don’t buy the argument with 2025 bytes. This worst case scenario is not relevant in practice.
It’s a different story when you just publish a twtxt file, I think. The question here is: When you publish a twt and don’t like it anymore and want to delete it, do you have the *right* to *force* others to delete it? (Not in a technical manner, but by sueing them.) What does the GDPR have to say about that? Not a clue. šŸ˜‚
It’s a different story when you just publish a twtxt file, I think. The question here is: When you publish a twt and don’t like it anymore and want to delete it, do you have the *right* to *force* others to delete it? (Not in a technical manner, but by sueing them.) What does the GDPR have to say about that? Not a clue. šŸ˜‚
It’s a different story when you just publish a twtxt file, I think. The question here is: When you publish a twt and don’t like it anymore and want to delete it, do you have the *right* to *force* others to delete it? (Not in a technical manner, but by sueing them.) What does the GDPR have to say about that? Not a clue. šŸ˜‚
It’s a different story when you just publish a twtxt file, I think. The question here is: When you publish a twt and don’t like it anymore and want to delete it, do you have the *right* to *force* others to delete it? (Not in a technical manner, but by sueing them.) What does the GDPR have to say about that? Not a clue. šŸ˜‚
@xuu I *think* it is more tricky than that.

https://commission.europa.eu/law/law-topic/data-protection/reform/rules-business-and-organisations/application-regulation/who-does-data-protection-law-apply_en

ā€œA company *or entity* ā€¦ā€

Also, as I understand it, ā€œpersonal or household activityā€ (as you called it) is rather strict: An example could be you uploading photos to a webspace behind HTTP basic auth and sending that link to a friend. So, yes, a webserver is involved and you process your friend’s data (e.g., when did he access your files), but it’s just between you and him. But if you were to publish these photos publicly on a webserver that anyone can access, then it’s a different story – even though you could say that ā€œthis is just my personal hobby, not related to any job or moneyā€.

If you operate a public Yarn pod and *if you accept registrations from other users*, then I’m pretty sure the GDPR applies. šŸ¤” You process personal data and you don’t really know these people. It’s not a personal/private thing anymore.
@xuu I *think* it is more tricky than that.

https://commission.europa.eu/law/law-topic/data-protection/reform/rules-business-and-organisations/application-regulation/who-does-data-protection-law-apply_en

ā€œA company *or entity* ā€¦ā€

Also, as I understand it, ā€œpersonal or household activityā€ (as you called it) is rather strict: An example could be you uploading photos to a webspace behind HTTP basic auth and sending that link to a friend. So, yes, a webserver is involved and you process your friend’s data (e.g., when did he access your files), but it’s just between you and him. But if you were to publish these photos publicly on a webserver that anyone can access, then it’s a different story – even though you could say that ā€œthis is just my personal hobby, not related to any job or moneyā€.

If you operate a public Yarn pod and *if you accept registrations from other users*, then I’m pretty sure the GDPR applies. šŸ¤” You process personal data and you don’t really know these people. It’s not a personal/private thing anymore.
@xuu I *think* it is more tricky than that.

https://commission.europa.eu/law/law-topic/data-protection/reform/rules-business-and-organisations/application-regulation/who-does-data-protection-law-apply_en

ā€œA company *or entity* ā€¦ā€

Also, as I understand it, ā€œpersonal or household activityā€ (as you called it) is rather strict: An example could be you uploading photos to a webspace behind HTTP basic auth and sending that link to a friend. So, yes, a webserver is involved and you process your friend’s data (e.g., when did he access your files), but it’s just between you and him. But if you were to publish these photos publicly on a webserver that anyone can access, then it’s a different story – even though you could say that ā€œthis is just my personal hobby, not related to any job or moneyā€.

If you operate a public Yarn pod and *if you accept registrations from other users*, then I’m pretty sure the GDPR applies. šŸ¤” You process personal data and you don’t really know these people. It’s not a personal/private thing anymore.
@xuu I *think* it is more tricky than that.

https://commission.europa.eu/law/law-topic/data-protection/reform/rules-business-and-organisations/application-regulation/who-does-data-protection-law-apply_en

ā€œA company *or entity* ā€¦ā€

Also, as I understand it, ā€œpersonal or household activityā€ (as you called it) is rather strict: An example could be you uploading photos to a webspace behind HTTP basic auth and sending that link to a friend. So, yes, a webserver is involved and you process your friend’s data (e.g., when did he access your files), but it’s just between you and him. But if you were to publish these photos publicly on a webserver that anyone can access, then it’s a different story – even though you could say that ā€œthis is just my personal hobby, not related to any job or moneyā€.

If you operate a public Yarn pod and *if you accept registrations from other users*, then I’m pretty sure the GDPR applies. šŸ¤” You process personal data and you don’t really know these people. It’s not a personal/private thing anymore.
@lyse Wet and warm, yeah. 🫤 There were flies everywhere, lots of them, on all windows of the apartment. Never seen anything like that. 😳🪰 Like the building was a dead carcass. šŸ˜‚
@lyse Wet and warm, yeah. 🫤 There were flies everywhere, lots of them, on all windows of the apartment. Never seen anything like that. 😳🪰 Like the building was a dead carcass. šŸ˜‚
@lyse Wet and warm, yeah. 🫤 There were flies everywhere, lots of them, on all windows of the apartment. Never seen anything like that. 😳🪰 Like the building was a dead carcass. šŸ˜‚
@lyse Wet and warm, yeah. 🫤 There were flies everywhere, lots of them, on all windows of the apartment. Never seen anything like that. 😳🪰 Like the building was a dead carcass. šŸ˜‚
There are *so many* insects this year. Flies, ants, bugs. This isn’t normal. It’s almost like the ecosystem is getting out of balance.
There are *so many* insects this year. Flies, ants, bugs. This isn’t normal. It’s almost like the ecosystem is getting out of balance.
There are *so many* insects this year. Flies, ants, bugs. This isn’t normal. It’s almost like the ecosystem is getting out of balance.
There are *so many* insects this year. Flies, ants, bugs. This isn’t normal. It’s almost like the ecosystem is getting out of balance.
@prologic You can’t. The timestamps have to be unique. Including milliseconds or nanoseconds would be an easy way out, that’s allowed in RFC3339: https://datatracker.ietf.org/doc/html/rfc3339#section-5.6
@prologic You can’t. The timestamps have to be unique. Including milliseconds or nanoseconds would be an easy way out, that’s allowed in RFC3339: https://datatracker.ietf.org/doc/html/rfc3339#section-5.6
@prologic You can’t. The timestamps have to be unique. Including milliseconds or nanoseconds would be an easy way out, that’s allowed in RFC3339: https://datatracker.ietf.org/doc/html/rfc3339#section-5.6
@prologic You can’t. The timestamps have to be unique. Including milliseconds or nanoseconds would be an easy way out, that’s allowed in RFC3339: https://datatracker.ietf.org/doc/html/rfc3339#section-5.6
@prologic

> This scope of changes is much easier to implement for yarnd and *I suspect jenny too.*

No, (edit:) is a lot of work for jenny and also adds a lot of overhead.

Right now, jenny itself has no idea which twt hashes are present on which feed, because it doesn’t need to. This information only exists in the mail files. This means I can’t check if an (edit:) operation is legal. jenny will have to get an sqlite database (or read/parse/write 1-2 MB of JSON on every invocation, which isn’t great either).

I’ve already spent several hours this morning rewriting the feed fetching/parsing code in an effort to pave the way to even be *able* to support any of this. I’ll spare you the details. Until now, twts were individual items in a feed, they could be processed in any order and they didn’t reference each other *from jennys point of view*. A lot of the heavy lifting happens in the mail client.

Honestly, the database thing bugs me the most. The whole concept of ā€œjust create some mail filesā€ doesn’t really work anymore. I now have to duplicate state between the mail files and an internal database. This is a big ā€œmehā€.

Of course, if we were to switch to location-based addressing, then *you* would have to do a lot of work. There’s no easy way out.

Maybe I could say jenny does not support (edit:) for now. That’s the good thing about this proposal: I don’t have to implement it right away. Users will see spurious twts (or I could hide them as a workaround) and they won’t see twt updates, but nothing will break.
@prologic

> This scope of changes is much easier to implement for yarnd and *I suspect jenny too.*

No, (edit:) is a lot of work for jenny and also adds a lot of overhead.

Right now, jenny itself has no idea which twt hashes are present on which feed, because it doesn’t need to. This information only exists in the mail files. This means I can’t check if an (edit:) operation is legal. jenny will have to get an sqlite database (or read/parse/write 1-2 MB of JSON on every invocation, which isn’t great either).

I’ve already spent several hours this morning rewriting the feed fetching/parsing code in an effort to pave the way to even be *able* to support any of this. I’ll spare you the details. Until now, twts were individual items in a feed, they could be processed in any order and they didn’t reference each other *from jennys point of view*. A lot of the heavy lifting happens in the mail client.

Honestly, the database thing bugs me the most. The whole concept of ā€œjust create some mail filesā€ doesn’t really work anymore. I now have to duplicate state between the mail files and an internal database. This is a big ā€œmehā€.

Of course, if we were to switch to location-based addressing, then *you* would have to do a lot of work. There’s no easy way out.

Maybe I could say jenny does not support (edit:) for now. That’s the good thing about this proposal: I don’t have to implement it right away. Users will see spurious twts (or I could hide them as a workaround) and they won’t see twt updates, but nothing will break.
@prologic

> This scope of changes is much easier to implement for yarnd and *I suspect jenny too.*

No, (edit:) is a lot of work for jenny and also adds a lot of overhead.

Right now, jenny itself has no idea which twt hashes are present on which feed, because it doesn’t need to. This information only exists in the mail files. This means I can’t check if an (edit:) operation is legal. jenny will have to get an sqlite database (or read/parse/write 1-2 MB of JSON on every invocation, which isn’t great either).

I’ve already spent several hours this morning rewriting the feed fetching/parsing code in an effort to pave the way to even be *able* to support any of this. I’ll spare you the details. Until now, twts were individual items in a feed, they could be processed in any order and they didn’t reference each other *from jennys point of view*. A lot of the heavy lifting happens in the mail client.

Honestly, the database thing bugs me the most. The whole concept of ā€œjust create some mail filesā€ doesn’t really work anymore. I now have to duplicate state between the mail files and an internal database. This is a big ā€œmehā€.

Of course, if we were to switch to location-based addressing, then *you* would have to do a lot of work. There’s no easy way out.

Maybe I could say jenny does not support (edit:) for now. That’s the good thing about this proposal: I don’t have to implement it right away. Users will see spurious twts (or I could hide them as a workaround) and they won’t see twt updates, but nothing will break.
@prologic

> This scope of changes is much easier to implement for yarnd and *I suspect jenny too.*

No, (edit:) is a lot of work for jenny and also adds a lot of overhead.

Right now, jenny itself has no idea which twt hashes are present on which feed, because it doesn’t need to. This information only exists in the mail files. This means I can’t check if an (edit:) operation is legal. jenny will have to get an sqlite database (or read/parse/write 1-2 MB of JSON on every invocation, which isn’t great either).

I’ve already spent several hours this morning rewriting the feed fetching/parsing code in an effort to pave the way to even be *able* to support any of this. I’ll spare you the details. Until now, twts were individual items in a feed, they could be processed in any order and they didn’t reference each other *from jennys point of view*. A lot of the heavy lifting happens in the mail client.

Honestly, the database thing bugs me the most. The whole concept of ā€œjust create some mail filesā€ doesn’t really work anymore. I now have to duplicate state between the mail files and an internal database. This is a big ā€œmehā€.

Of course, if we were to switch to location-based addressing, then *you* would have to do a lot of work. There’s no easy way out.

Maybe I could say jenny does not support (edit:) for now. That’s the good thing about this proposal: I don’t have to implement it right away. Users will see spurious twts (or I could hide them as a workaround) and they won’t see twt updates, but nothing will break.
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 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) @prologic 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) @shreyan Ahh šŸ‘Œ]
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 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) @prologic 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) @shreyan Ahh šŸ‘Œ]
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 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) @prologic 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) @shreyan Ahh šŸ‘Œ]
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 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) @prologic 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) @shreyan Ahh šŸ‘Œ]
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
\n \n [(#pmuqoca) @prologic 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
\n \n [(#bqq6fxq) It's handled by blue Monday]

And:

$ jenny -D https://twtxt.net/user/thecanine/twtxt.txt | grep ntnakqa
\n \n [(#2wh7r4q) @prologic 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
\n \n [(#otuupfq) @shreyan Ahh šŸ‘Œ]
@sorenpeter No, we don’t need both. They are competing proposals and only one of them should get merged. 😃 The format (#<DATETIME URL>) would also work, yeah.
@sorenpeter No, we don’t need both. They are competing proposals and only one of them should get merged. 😃 The format (#<DATETIME URL>) would also work, yeah.
@sorenpeter No, we don’t need both. They are competing proposals and only one of them should get merged. 😃 The format (#<DATETIME URL>) would also work, yeah.
@sorenpeter No, we don’t need both. They are competing proposals and only one of them should get merged. 😃 The format (#<DATETIME URL>) would also work, yeah.
@sorenpeter Yes, fully agreed.

Personally, I am not really concerned about malicious actors here. Some may see that as naive. But if someone turns out to be an idiot, I unfollow their feed and delete my replies to them, done. (Something like (replyto:…) would even make it trivial to find all my replies to a particular feed and nuke them. Could be done with sed.)

For the same reason, GPG signed feeds never took off. It just doesn’t matter. twtxt is small and nieche and that won’t change anytime soon, I think. We only have to make sure that we don’t open the gates for *massive spam* and I think we’re safe on that.

It’s easy to get lost in these scenarios and overshoot the target.
@sorenpeter Yes, fully agreed.

Personally, I am not really concerned about malicious actors here. Some may see that as naive. But if someone turns out to be an idiot, I unfollow their feed and delete my replies to them, done. (Something like (replyto:…) would even make it trivial to find all my replies to a particular feed and nuke them. Could be done with sed.)

For the same reason, GPG signed feeds never took off. It just doesn’t matter. twtxt is small and nieche and that won’t change anytime soon, I think. We only have to make sure that we don’t open the gates for *massive spam* and I think we’re safe on that.

It’s easy to get lost in these scenarios and overshoot the target.
@sorenpeter Yes, fully agreed.

Personally, I am not really concerned about malicious actors here. Some may see that as naive. But if someone turns out to be an idiot, I unfollow their feed and delete my replies to them, done. (Something like (replyto:…) would even make it trivial to find all my replies to a particular feed and nuke them. Could be done with sed.)

For the same reason, GPG signed feeds never took off. It just doesn’t matter. twtxt is small and nieche and that won’t change anytime soon, I think. We only have to make sure that we don’t open the gates for *massive spam* and I think we’re safe on that.

It’s easy to get lost in these scenarios and overshoot the target.
@sorenpeter Yes, fully agreed.

Personally, I am not really concerned about malicious actors here. Some may see that as naive. But if someone turns out to be an idiot, I unfollow their feed and delete my replies to them, done. (Something like (replyto:…) would even make it trivial to find all my replies to a particular feed and nuke them. Could be done with sed.)

For the same reason, GPG signed feeds never took off. It just doesn’t matter. twtxt is small and nieche and that won’t change anytime soon, I think. We only have to make sure that we don’t open the gates for *massive spam* and I think we’re safe on that.

It’s easy to get lost in these scenarios and overshoot the target.
@prologic Yeah. I guess no matter what we do, either one of us has to do a lot of work on his respective software. šŸ˜… The (absolute) impact on Yarn is probably bigger than that on jenny, simply because Yarn is a much larger piece of software to begin with.

I’ll begin experimenting in jenny with Update Commands and see how bad it gets. I’ve already determined that my storage model wouldn’t work anymore. It’s all *doable*, but, like you, I’m not that happy with all the consequences. šŸ˜‚
@prologic Yeah. I guess no matter what we do, either one of us has to do a lot of work on his respective software. šŸ˜… The (absolute) impact on Yarn is probably bigger than that on jenny, simply because Yarn is a much larger piece of software to begin with.

I’ll begin experimenting in jenny with Update Commands and see how bad it gets. I’ve already determined that my storage model wouldn’t work anymore. It’s all *doable*, but, like you, I’m not that happy with all the consequences. šŸ˜‚
@prologic Yeah. I guess no matter what we do, either one of us has to do a lot of work on his respective software. šŸ˜… The (absolute) impact on Yarn is probably bigger than that on jenny, simply because Yarn is a much larger piece of software to begin with.

I’ll begin experimenting in jenny with Update Commands and see how bad it gets. I’ve already determined that my storage model wouldn’t work anymore. It’s all *doable*, but, like you, I’m not that happy with all the consequences. šŸ˜‚
@prologic Yeah. I guess no matter what we do, either one of us has to do a lot of work on his respective software. šŸ˜… The (absolute) impact on Yarn is probably bigger than that on jenny, simply because Yarn is a much larger piece of software to begin with.

I’ll begin experimenting in jenny with Update Commands and see how bad it gets. I’ve already determined that my storage model wouldn’t work anymore. It’s all *doable*, but, like you, I’m not that happy with all the consequences. šŸ˜‚
Alright, let’s call attention to this fact and let’s hear your opinions on this:

With the (replyto:…) proposal, clients cannot indicate that a twt was edited *in the long run*. Clients can, of course, show that *right now*, but when they clean their cache and refetch feeds, the information is lost. This can be abused by malicious actors *if sufficient time has passed* (clients must have purged their cache): Malicious actors can change root twts and thus change the meaning of thread/replies.

Is this a showstopper for you? šŸ¤”
Alright, let’s call attention to this fact and let’s hear your opinions on this:

With the (replyto:…) proposal, clients cannot indicate that a twt was edited *in the long run*. Clients can, of course, show that *right now*, but when they clean their cache and refetch feeds, the information is lost. This can be abused by malicious actors *if sufficient time has passed* (clients must have purged their cache): Malicious actors can change root twts and thus change the meaning of thread/replies.

Is this a showstopper for you? šŸ¤”
Alright, let’s call attention to this fact and let’s hear your opinions on this:

With the (replyto:…) proposal, clients cannot indicate that a twt was edited *in the long run*. Clients can, of course, show that *right now*, but when they clean their cache and refetch feeds, the information is lost. This can be abused by malicious actors *if sufficient time has passed* (clients must have purged their cache): Malicious actors can change root twts and thus change the meaning of thread/replies.

Is this a showstopper for you? šŸ¤”
Alright, let’s call attention to this fact and let’s hear your opinions on this:

With the (replyto:…) proposal, clients cannot indicate that a twt was edited *in the long run*. Clients can, of course, show that *right now*, but when they clean their cache and refetch feeds, the information is lost. This can be abused by malicious actors *if sufficient time has passed* (clients must have purged their cache): Malicious actors can change root twts and thus change the meaning of thread/replies.

Is this a showstopper for you? šŸ¤”