# 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=12875
# next = https://watcher.sour.is?uri=https://www.uninformativ.de/twtxt.txt&offset=12975
# prev = https://watcher.sour.is?uri=https://www.uninformativ.de/twtxt.txt&offset=12775
@anth (I’m also a bit confused by the UTF-8 topic. I thought that the original twtxt spec has *always* mandated UTF-8 for the content. Why’s that an issue now? 😅 Granted, my client also got this wrong in the past, but it has been fixed ~3 years ago.)~
@anth (I’m also a bit confused by the UTF-8 topic. I thought that the original twtxt spec has *always* mandated UTF-8 for the content. Why’s that an issue now? 😅 Granted, my client also got this wrong in the past, but it has been fixed ~3 years ago.)~
@lyse That looks like lovely weather. We had nothing but rain. 🥴
@lyse That looks like lovely weather. We had nothing but rain. 🥴
@lyse That looks like lovely weather. We had nothing but rain. 🥴
@lyse That looks like lovely weather. We had nothing but rain. 🥴
@bender So you stayed? Fingers crossed 🤞😵
@bender So you stayed? Fingers crossed 🤞😵
@bender So you stayed? Fingers crossed 🤞😵
@bender So you stayed? Fingers crossed 🤞😵
I hope you guys in the US get safely through the *next* storm. 😳
I hope you guys in the US get safely through the *next* storm. 😳
I hope you guys in the US get safely through the *next* storm. 😳
I hope you guys in the US get safely through the *next* storm. 😳
Going through some old CDs.
[Jam & Spoon - Angel (DJ Misjah Remix)](https://www.youtube.com/watch?v=CWYF5lZ1nAM)
I’ve always liked this track, but ~30 years ago I didn’t have good headphones. Now I do and only now do I realize how “dense” the atmosphere of this track is. 😳 Guess my speakers back then simply didn’t render most of the bass … 🤦~
Going through some old CDs.
[Jam & Spoon - Angel (DJ Misjah Remix)](https://www.youtube.com/watch?v=CWYF5lZ1nAM)
I’ve always liked this track, but ~30 years ago I didn’t have good headphones. Now I do and only now do I realize how “dense” the atmosphere of this track is. 😳 Guess my speakers back then simply didn’t render most of the bass … 🤦~
Going through some old CDs.
[Jam & Spoon - Angel (DJ Misjah Remix)](https://www.youtube.com/watch?v=CWYF5lZ1nAM)
I’ve always liked this track, but ~30 years ago I didn’t have good headphones. Now I do and only now do I realize how “dense” the atmosphere of this track is. 😳 Guess my speakers back then simply didn’t render most of the bass … 🤦~
Going through some old CDs.
[Jam & Spoon - Angel (DJ Misjah Remix)](https://www.youtube.com/watch?v=CWYF5lZ1nAM)
I’ve always liked this track, but ~30 years ago I didn’t have good headphones. Now I do and only now do I realize how “dense” the atmosphere of this track is. 😳 Guess my speakers back then simply didn’t render most of the bass … 🤦~
@lyse Did someone call perror()
after something that does not change errno
? 🥴
@lyse Did someone call perror()
after something that does not change errno
? 🥴
@lyse Did someone call perror()
after something that does not change errno
? 🥴
@lyse Did someone call perror()
after something that does not change errno
? 🥴
@bender As for stability, yes. As for “easy to understand”: Probably depends on how well you hide things like lists or hash maps behind library functions. 🥴
@bender As for stability, yes. As for “easy to understand”: Probably depends on how well you hide things like lists or hash maps behind library functions. 🥴
@bender As for stability, yes. As for “easy to understand”: Probably depends on how well you hide things like lists or hash maps behind library functions. 🥴
@bender As for stability, yes. As for “easy to understand”: Probably depends on how well you hide things like lists or hash maps behind library functions. 🥴
@xuu Yes, of course. This has been blown out of proportion anyway. All I originally wanted to say is that the b2sum
program isn’t very widely available.
It would help to know how many different clients there actually are. I suspect that number is very close to 3.
@xuu Yes, of course. This has been blown out of proportion anyway. All I originally wanted to say is that the b2sum
program isn’t very widely available.
It would help to know how many different clients there actually are. I suspect that number is very close to 3.
@xuu Yes, of course. This has been blown out of proportion anyway. All I originally wanted to say is that the b2sum
program isn’t very widely available.
It would help to know how many different clients there actually are. I suspect that number is very close to 3.
@xuu Yes, of course. This has been blown out of proportion anyway. All I originally wanted to say is that the b2sum
program isn’t very widely available.
It would help to know how many different clients there actually are. I suspect that number is very close to 3.
@quark This message of yours was another reason for writing 2hex
and 2bin
. It made me realize my existing hex2bin
script was buggy. So now I have that portable version in C which runs pretty much everywhere: https://movq.de/v/31843f7317/s.png 🥳
@quark This message of yours was another reason for writing 2hex
and 2bin
. It made me realize my existing hex2bin
script was buggy. So now I have that portable version in C which runs pretty much everywhere: https://movq.de/v/31843f7317/s.png 🥳
@quark This message of yours was another reason for writing 2hex
and 2bin
. It made me realize my existing hex2bin
script was buggy. So now I have that portable version in C which runs pretty much everywhere: https://movq.de/v/31843f7317/s.png 🥳
@quark This message of yours was another reason for writing 2hex
and 2bin
. It made me realize my existing hex2bin
script was buggy. So now I have that portable version in C which runs pretty much everywhere: https://movq.de/v/31843f7317/s.png 🥳
@bender Yup, that’s where my web search ended up as well. 🥴
@bender Yup, that’s where my web search ended up as well. 🥴
@bender Yup, that’s where my web search ended up as well. 🥴
@bender Yup, that’s where my web search ended up as well. 🥴
@cuaxolotl Ah, I see. Thanks for the explanation. 👌
@cuaxolotl Ah, I see. Thanks for the explanation. 👌
@cuaxolotl Ah, I see. Thanks for the explanation. 👌
@cuaxolotl Ah, I see. Thanks for the explanation. 👌
@xuu @prologic You clearly have very different goals for twtxt and view it from a very different perspective. I don’t have the mental energy for these discussions. I’m gonna take a break.
@xuu @prologic You clearly have very different goals for twtxt and view it from a very different perspective. I don’t have the mental energy for these discussions. I’m gonna take a break.
@xuu @prologic You clearly have very different goals for twtxt and view it from a very different perspective. I don’t have the mental energy for these discussions. I’m gonna take a break.
@xuu @prologic You clearly have very different goals for twtxt and view it from a very different perspective. I don’t have the mental energy for these discussions. I’m gonna take a break.
@bender The example @prologic posted is missing the base32 dance and the length should be 256 instead of 32. This thing prints the correct hash:
printf '%s\\n%s\\n%s' 'https://example.com/twtxt.txt' '2020-12-09T15:38:42Z' 'The twt hash now uses the RFC 3339 timestamp format.' | b2sum -l 256 | awk '{ print $1 }' | xxd -r -p | base32 | sed -E 's/=//g; s/.*(.{7})$/\\1/' | tr '[A-Z]' '[a-z]'
(xxd
is part of Vim.)
@bender The example @prologic posted is missing the base32 dance and the length should be 256 instead of 32. This thing prints the correct hash:
printf '%s\n%s\n%s' 'https://example.com/twtxt.txt' '2020-12-09T15:38:42Z' 'The twt hash now uses the RFC 3339 timestamp format.' | b2sum -l 256 | awk '{ print $1 }' | xxd -r -p | base32 | sed -E 's/=//g; s/.*(.{7})$/\1/' | tr '[A-Z]' '[a-z]'
(xxd
is part of Vim.)
@bender The example @prologic posted is missing the base32 dance and the length should be 256 instead of 32. This thing prints the correct hash:
printf '%s\n%s\n%s' 'https://example.com/twtxt.txt' '2020-12-09T15:38:42Z' 'The twt hash now uses the RFC 3339 timestamp format.' | b2sum -l 256 | awk '{ print $1 }' | xxd -r -p | base32 | sed -E 's/=//g; s/.*(.{7})$/\1/' | tr '[A-Z]' '[a-z]'
(xxd
is part of Vim.)
@bender The example @prologic posted is missing the base32 dance and the length should be 256 instead of 32. This thing prints the correct hash:
printf '%s\n%s\n%s' 'https://example.com/twtxt.txt' '2020-12-09T15:38:42Z' 'The twt hash now uses the RFC 3339 timestamp format.' | b2sum -l 256 | awk '{ print $1 }' | xxd -r -p | base32 | sed -E 's/=//g; s/.*(.{7})$/\1/' | tr '[A-Z]' '[a-z]'
(xxd
is part of Vim.)
@bender The example @prologic posted is missing the base32 dance and the length should be 256 instead of 32. This thing prints the correct hash:
printf '%s\\n%s\\n%s' 'https://example.com/twtxt.txt' '2020-12-09T15:38:42Z' 'The twt hash now uses the RFC 3339 timestamp format.' | b2sum -l 256 | awk '{ print $1 }' | xxd -r -p | base32 | sed -E 's/=//g; s/.*(.{7})$/\\1/' | tr '\n' '\n'
(xxd
is part of Vim.)
@prologic I’m sure you can *somehow* install *something* that calculates blake2b on OpenBSD. But it’s not part of the base system as a standalone CLI tool, there only appear to be Perl modules for it. The other SHA tools do exist.
@prologic I’m sure you can *somehow* install *something* that calculates blake2b on OpenBSD. But it’s not part of the base system as a standalone CLI tool, there only appear to be Perl modules for it. The other SHA tools do exist.
@prologic I’m sure you can *somehow* install *something* that calculates blake2b on OpenBSD. But it’s not part of the base system as a standalone CLI tool, there only appear to be Perl modules for it. The other SHA tools do exist.
@prologic I’m sure you can *somehow* install *something* that calculates blake2b on OpenBSD. But it’s not part of the base system as a standalone CLI tool, there only appear to be Perl modules for it. The other SHA tools do exist.
@prologic I was about to post the same a few days ago, but b2sum is a GNU thing and not available on OpenBSD, for example.
@prologic I was about to post the same a few days ago, but b2sum is a GNU thing and not available on OpenBSD, for example.
@prologic I was about to post the same a few days ago, but b2sum is a GNU thing and not available on OpenBSD, for example.
@prologic I was about to post the same a few days ago, but b2sum is a GNU thing and not available on OpenBSD, for example.
@prologic I wanted to wait for things to settle down. It’s still unclear to me in which direction we’re going – and if that new/different stuff is even possible to implement in jenny. That said, I’ve been really busy with private stuff these last few days, I’ve lost track of most of what you’re discussing. 🥴
@prologic I wanted to wait for things to settle down. It’s still unclear to me in which direction we’re going – and if that new/different stuff is even possible to implement in jenny. That said, I’ve been really busy with private stuff these last few days, I’ve lost track of most of what you’re discussing. 🥴
@prologic I wanted to wait for things to settle down. It’s still unclear to me in which direction we’re going – and if that new/different stuff is even possible to implement in jenny. That said, I’ve been really busy with private stuff these last few days, I’ve lost track of most of what you’re discussing. 🥴
@prologic I wanted to wait for things to settle down. It’s still unclear to me in which direction we’re going – and if that new/different stuff is even possible to implement in jenny. That said, I’ve been really busy with private stuff these last few days, I’ve lost track of most of what you’re discussing. 🥴
@prologic If I understand correctly, then this means that twt hashes no longer uniquely refer to one specific twt. When someone talks about #1234567
, it could refer to the original or some edit of it. It is up to clients to find out what this hash could mean (by keeping a historical database of all feed versions, basically).
Isn’t this *essentially* the same as only including url
and timestamp
in the hash?
@prologic If I understand correctly, then this means that twt hashes no longer uniquely refer to one specific twt. When someone talks about #1234567
, it could refer to the original or some edit of it. It is up to clients to find out what this hash could mean (by keeping a historical database of all feed versions, basically).
Isn’t this *essentially* the same as only including url
and timestamp
in the hash?
@prologic If I understand correctly, then this means that twt hashes no longer uniquely refer to one specific twt. When someone talks about #1234567
, it could refer to the original or some edit of it. It is up to clients to find out what this hash could mean (by keeping a historical database of all feed versions, basically).
Isn’t this *essentially* the same as only including url
and timestamp
in the hash?
@prologic If I understand correctly, then this means that twt hashes no longer uniquely refer to one specific twt. When someone talks about #1234567
, it could refer to the original or some edit of it. It is up to clients to find out what this hash could mean (by keeping a historical database of all feed versions, basically).
Isn’t this *essentially* the same as only including url
and timestamp
in the hash?
@lyse The view from the top of the “mountains” never gets old. 😊
@lyse The view from the top of the “mountains” never gets old. 😊
@lyse The view from the top of the “mountains” never gets old. 😊
@lyse The view from the top of the “mountains” never gets old. 😊
@prologic So this hinges on clients keeping a history of the twt hashes. Clients that clean their cache or simply start following a feed later on have no way of reconstructing older twt hash versions and thus no way of reconstructing existing threads. Right?
@prologic So this hinges on clients keeping a history of the twt hashes. Clients that clean their cache or simply start following a feed later on have no way of reconstructing older twt hash versions and thus no way of reconstructing existing threads. Right?
@prologic So this hinges on clients keeping a history of the twt hashes. Clients that clean their cache or simply start following a feed later on have no way of reconstructing older twt hash versions and thus no way of reconstructing existing threads. Right?
@prologic So this hinges on clients keeping a history of the twt hashes. Clients that clean their cache or simply start following a feed later on have no way of reconstructing older twt hash versions and thus no way of reconstructing existing threads. Right?
@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? 🤔