# 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 2172
# self = https://watcher.sour.is?uri=https://twtxt.net/user/mckinley/twtxt.txt&offset=572
# next = https://watcher.sour.is?uri=https://twtxt.net/user/mckinley/twtxt.txt&offset=672
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/mckinley/twtxt.txt&offset=472
History of the browser user-agent string
@prologic Did you bypass the character limit?
I'll dive into this some more tomorrow. It's 11 over here and my cognitive abilities are slipping.
From what I've heard about Telegram, you have to explicitly enable end-to-end encryption with another person and you can't do that in group chats. Shouldn't that be listed in the document?
It's very likely that I'm wrong in all this, can anyone familiar with Signal or Telegram confirm?
I am not familiar with the functionality of Telegram or Signal, but things I have heard about both make me skeptical of their entries in this document.
Signal requires a phone number to sign up, and I believe that you can connect it to your contact list on your phone to find other people using Signal. If this is the case, wouldn't they have to store at least a hash of your phone number? Hashed information is listed elsewhere in the document.
New icons? I like them!
RED ALERT: THE CAMPAIGN AGAINST MONERO HAS BEGUN
> And yes, you can argue that there are legal and moral reasons to use a privacy coin. But these coins are running up against the same problem as encryption and other technologies to protect privacy: They can’t allow for dissidents, activists, and people from marginalized communities to stay safe without also sheltering criminals and purveyors of hate.

https://slate.com/technology/2021/11/monero-privacy-coin-racists-cybercriminals.html
https://slate.com/technology/2021/11/monero-privacy-coin-racists-cybercriminals.html
RED ALERT: THE CAMPAIGN AGAINST MONERO HAS BEGUN
> ...yes, you can argue that there are legal and moral reasons to use a privacy coin. But these coins are running up against the same problem as encryption and other technologies to protect privacy: They can’t allow for dissidents, activists, and people from marginalized communities to stay safe without also sheltering criminals and purveyors of hate.

https://slate.com/technology/2021/11/monero-privacy-coin-racists-cybercriminals.html
https://slate.com/technology/2021/11/monero-privacy-coin-racists-cybercriminals.html
@fastidious @prologic I'm talking about the independent repair program that @eldersnake mentioned.
It's probably just a PR stunt like last time.
They're all just data collection companies with an apparently legitimate service attached, but this one takes the cake. https://www.latimes.com/business/story/2021-11-09/column-trader-joes-parking-app
Heh.
Twtxt and Yarn are designed as "Twitter style" systems. Perhaps twtxt can be adapted to a Facebook style system with that kind of access control and end-to-end encryption. Perhaps the result would be incredible. I am skeptical, however, of the idea that it would mix well with the current twtxt/Yarn ecosystem built on openness.
"Social media" can take several forms.
- A "Twitter style" open microblogging system that allows people to discard and create identities with little consequences
- A "Facebook style" closed-off system that is more focused on real people interacting with each other instead of their online personas
- An "Internet forum style" system that focuses on discussion above all else
Reading this thread, I see two things:
1. The example of image sharing can easily be solved by creating a private file hosting service that doesn't suck like @lyse said
2. We are getting close to the original purpose of Facebook here. A social media service based on identities rather than accounts and designed for people who know each other in meatspace to connect online. Facebook already does what we're talking about well; it has strong access controls to only show your content to people you choose. The only problem, of course, is that Facebook is evil.
@prologic I just don't have a good idea for one.
I think it would be a much harder sell to get people on a weird social media service they've never heard of and encrypted feeds (as well as signed feeds) would make clients much more complex. I always have the anti-feature view, though. Maybe there's something I'm not seeing.
@prologic Whenever I have some pictures I need to share with a few others, I just put them on a web page somewhere that isn't linked anywhere else and has <meta name="robots" content="noindex, ofollow"> on for good measure. Nobody I'm sharing it with has to sign up for anything, no entity outside my control is compressing the images, screwing with the metadata, or facially recognizing anyone, and you can just right click > save as if you want to download them.
@prologic *Nine* containers?!? What the hell does it do with them? A *gigabyte* of RAM? I don't even think my web browser is using that much right now!
That's not a bad idea, but I'm sure it would perpetuate the near-universal assumption that there is a favicon at /favicon.ico on any website. I wrote a whole blog post about it: Browsers: Please stop requesting /favicon.ico automatically.
@adi I just can't find the motivation to work on it. I really appreciate your help, though. I'll definitely be using your script as a template.
@prologic Good idea.
@lyse Looking forward to it. I know there's at least one PGP signed feed out there: https://domgoergen.com/twtxt/mdom.txt
@darch Got to love it when things work themselves out. I like the theme on your pod, by the way.
@stackeffect is sharing diffs and @movq is writing 600 word blog posts... What's next?
@darch What ended up fixing the problem?
@darch Your pod thinks that your other feed is an external feed at http://0.0.0.0:8000/user/darch2/twtxt.txt, try adding --base-url https://yarn.algorave.dk to your command line options for yarnd
I agree with @lyse There could be some confusion if posts appear in people's clients that are not on the master feed. What if the client keeps retrying and keeps getting the dummy feed over the course of several hours? It would clutter people's clients very quickly. This is a perfect use for the standard HTTP status codes, there's no reason to reinvent the wheel.
@prologic You should check out Teddit or Libreddit. They're privacy and freedom respecting, self-hostable frontends for Reddit.
@prologic Just about anything's better than WordPress. I'm all for it!
@slashdot No
@eldersnake The landing page for loveprivacy.club is awesome, nice CSS border trick there for the banner.
@prologic My apologies. I didn't interpret the specification correctly. The feeds are supposed to be distinct, with the url field used for hashing and hashing only. I got carried away with separate feeds becoming one and whatnot. Ignore everything I've written to this point. Perhaps I should go to bed.

> As I'm typing it, though, it seems like an extremely complicated solution to a problem that isn't all that bad.

Poor wording. Feedjacking would be a pretty bad problem. I meant that it might be best to keep things as they are without adding any crazy url switching.
\n> As I'm typing it, though, it seems like an extremely complicated solution to a problem that isn't all that bad.\n\nPoor wording. Feedjacking would be a pretty bad problem. I meant that it might be best to keep things as they are without adding any crazy url switching.
@prologic
> Hijack it how?

Wouldn't they be able to make their own posts that would appear as having come from your account?
@prologic \n> Hijack it how?\n\nWouldn't they be able to make their own posts that would appear as having come from your account?
How about this: The url field is replaced by a canonical field and an alternate field. If the location that the client has of Feed A doesn't match what it says in Feed A's canonical field, the client downloads the canonical feed, Feed B, once to make sure that the location of Feed A appears in Feed B's alternate tags. If so, the client will continue to follow Feed A but it will use the canonical URL for hashing.\nAs I'm typing it, though, it seems like an extremely complicated solution to a problem that isn't all that bad.
How about this: The url field is replaced by a canonical field and an alternate field. If the location that the client has of Feed A doesn't match what it says in Feed A's canonical field, the client downloads the canonical feed, Feed B, once to make sure that the location of Feed A appears in Feed B's alternate tags. If so, the client will continue to follow Feed A but it will use the canonical URL for hashing.
As I'm typing it, though, it seems like an extremely complicated solution to a problem that isn't all that bad.
Hold on. If the standard was implemented verbatim, couldn't anyone could hijack your feed by adding # url = https://twtxt.net/user/prologic/twtxt.txt to their feed?
@prologic Yeah, isn't the idea to make sure twts from the same feed at different locations have the same hash by specifying a canonical feed url? That should solve the http:// https:// problem *and* the twtxt twtxt-25 problem if the standard is widely adopted.
@prologic Man, you're really killing me with these quick replies.
@prologic Ah, I finished editing my post after you already saw it.\n> I understand how this can create confusion. Does Yarn respect url metadata entries as specified on dev.twtxt.net?
@prologic Ah, I finished editing my post after you already saw it.
> I understand how this can create confusion. Does Yarn respect url metadata entries as specified on dev.twtxt.net?
You're correct, but those are actually separate feeds. Green is /twtxt.txt, my "canonical" feed with all my posts. Blue is /twtxt-25.txt, the one with only the most recent 25 posts.
@prologic You're correct, but those are actually separate feeds. Green is /twtxt.txt, my "canonical" feed with all my posts. Blue is /twtxt-25.txt, the one with only the most recent 25 posts. I understand how this can create confusion. Does Yarn respect url metadata entries as specified on dev.twtxt.net?
https://twtxt.net/conv/tuhu7ra
At least we aren't calling them "toots".
I had to do the same a few weeks ago :/
@eldersnake Isn't a Windows UA part of privacy.resistFingerprinting?
Anyone with the name "Chetan Kunte" has to have a good sense of humor, no matter how it's supposed to be pronounced.
@prologic @slashdot\n> The Times reports that Peter Brown, a professor at the University of Western Ontario, places the odds of a meteor crashing into someone's bed at 1 in 100 billion.\n\nI would really like to hear Peter Brown tell us how he came to that conclusion.
@prologic @slashdot
> The Times reports that Peter Brown, a professor at the University of Western Ontario, places the odds of a meteor crashing into someone's bed at 1 in 100 billion.

I would really like to hear Peter Brown tell us how he came to that conclusion.
@prologic Great addition, thank you.
@prologic If the client isn't tweaked to accommodate "full threading" then the fork function shouldn't be used for replies. I've always treated it as an "off-topic response" button.
\n> Let’s just say, I’ve seen this happen with multiple products at work: Step 1, someone builds something which doesn’t support a “reply” feature at all. Step 2, the thing grows, now people want “reply”. Step 3, it gets confusing with all the linear replies and now people want “full threading”. 😁 That’s also basically what happened to twtxt/yarn. Maybe, over time, everything evolves into Usenet. 🤣\n\n@https://www.uninformativ.de/twtxt.txt> was right.

> Let’s just say, I’ve seen this happen with multiple products at work: Step 1, someone builds something which doesn’t support a “reply” feature at all. Step 2, the thing grows, now people want “reply”. Step 3, it gets confusing with all the linear replies and now people want “full threading”. 😁 That’s also basically what happened to twtxt/yarn. Maybe, over time, everything evolves into Usenet. 🤣

@movq was right.
I like the 4th.
@adi ?
@slashdot \n> Not only is it free to use, but I no longer have to worry about trust, because the operator of the technology is me.\n\nOf course Amazon would never snoop on what you're doing with the service they provide to you for free. They wouldn't do that! They're a "reputable and widely trusted cloud provider" based in a Five Eyes country known for their data security!\nNobody told this guy about Mullvad or iVPN. Plus, if you're doing it right, you don't need that Netflix subscription.
@slashdot
> Not only is it free to use, but I no longer have to worry about trust, because the operator of the technology is me.

Of course Amazon would never snoop on what you're doing with the service they provide to you for free. They wouldn't do that! They're a "reputable and widely trusted cloud provider" based in a Five Eyes country known for their data security!
Nobody told this guy about Mullvad or iVPN. Plus, if you're doing it right, you don't need that Netflix subscription.
@eldersnake> Maybe they'll need to migrate it to a Chromium base

I'm sure it would be more profitable for them to do so. That just makes me wonder why they haven't done it already. I wonder if there's Google money involved (like the default search engine deal with Mozilla) so they can claim they aren't a monopoly.
@eldersnake> Maybe they'll need to migrate it to a Chromium base\n\nI'm sure it would be more profitable for them to do so. That just makes me wonder why they haven't done it already. I wonder if there's Google money involved (like the default search engine deal with Mozilla) so they can claim they aren't a monopoly.
This is a much appreciated change, excellent work.
@eldersnake I've seen a lot of very impressive things done with awk.
@adi Oops, I think we just hijacked another thread. Sorry about that @prologic and co.
@adi Nevermind, I just found it.
printf "* [%s: %s](%s)\n", Y, tmrsl[trm], f

Makes sense now.
@adi Nevermind, I just found it. \n
printf "* [%s: %s](%s)\\n", Y, tmrsl[trm], f
\nMakes sense now.
@adi Yes, I got smu installed to run the script and I figured that markdown was being generated somewhere but I don't know where that is or what purpose it serves.
It looks like I just have no idea what I'm doing, and that's partially true, but those are the best solutions I was able to get while conforming to POSIX (without awk). I'll take the time at some point to learn more about awk and come up with a better solution for this.
My template (most recent copy) attempts to solve the latter two problems, but I think it's another job for awk to avoid the dumpster fire below. \n
\ntimestamp=$(echo "$line" | grep -Eo '^[0-9]{4}-[01][0-9]-[0-3][0-9][Tt][0-2][0-9]:[0-5][0-9]:[0-5][0-9](\\.[0-9]+)?([+-][0-2][0-9]:[0-5][0-9]|Zz)')\ntwt=$(echo "$line" | sed -e 's/"/\\"/g; s/
/\\/g' | cut -f 2- -)\nhyperlinked=$(echo "$twt" | sed 's|http://[^ ]*[^ ,.;:)>}!]|<a href="&">&</a>|g; s|https://[^ ]*[^ ,.;:)>}!]|<a href="&">&</a>|g')\n
My template (most recent copy) attempts to solve the latter two problems, but I think it's another job for awk to avoid the dumpster fire below.

timestamp=$(echo "$line" | grep -Eo '^[0-9]{4}-[01][0-9]-[0-3][0-9][Tt][0-2][0-9]:[0-5][0-9]:[0-5][0-9](\.[0-9]+)?([+-][0-2][0-9]:[0-5][0-9]|Zz)')
twt=$(echo "$line" | sed -e 's/"/\"/g; s/
/\ -) hyperlinked=$(echo "$twt" | sed 's|http://[^ ]*[^ ,.;:)>}!]|<a href="&">&</a>|g; s|https://[^ ]*[^ ,.;:)>}!]|<a href="&">&</a>|g')
I don't see much a difference between the new version and the old version. There are a couple of small bugs I've seen. "2021: January-April" is hard-coded into the twt page template as well as the date "27 April 2021 01:04" for each twt. The timestamps are also printed along with the twt because it just copies the line through. What is smu used for?
@adi
> I assumed all lines start with a date

So did I in my attempt, but even after a quick grep -v '^#' it would still break everything.
I'm trying out the newer version now. Will report back.
@adi\n> I assumed all lines start with a date\n\nSo did I in my attempt, but even after a quick grep -v '^#' it would still break everything.\nI'm trying out the newer version now. Will report back.
@adi If I stuck with that shell script abomination I have no doubt I could have hacked something together but it was already taking half a second to process my feed and nearly a minute to process @prologic's feed, although that one completely broke the script and mangled the output.
@adi Thank you very much for your help, I'll take a look at it in a few minutes.
You can re-enable persistent history and session data if you want, I know I've seen it in the settings somewhere. Kudos on forcing yourself to switch to a proper password manager. I don't think many people know that that their passwords are so insecure when stored in a browser. I believe even now, in the year of our lord 2021, the default behavior in both Duopoly browsers is an unencrypted database. Correct me if I'm wrong.
Gotta love Tool.
This weekend, I'm setting up a private XMPP server for a small group of people. They will insist on connecting using tracking devices, so I'm looking for clients on both Android and iOS. Conversations on Android and SiskinIM on iOS seem like they would be a good fit. Both are under GPLv3, both support OMEMO, etc.
Do any of you gentlemen have experience with those clients? Please tell me what you think of them, or if I would be better off recommending something else. Thank you.
This weekend, I'm setting up a private XMPP server for a small group of people. They will insist on connecting using tracking devices, so I'm looking for clients on both Android and iOS. Conversations on Android and SiskinIM on iOS seem like they would be a good fit. Both are under GPLv3, both support OMEMO, etc.\nDo any of you gentlemen have experience with those clients? Please tell me what you think of them, or if I would be better off recommending something else. Thank you.
@adi I fully agree with their stance, but it's weird to see an extension present in BSD coreutils but not GNU.
@adi I fully agree with their stance, but it's weird to see an extension present in BSD coreutils but not GNU.
@adi Impressive, I should learn awk at some point.
Funnily enough, GNU tail has no -r option: https://www.gnu.org/software/coreutils/manual/html_node/tail-invocation
> GNU tail can output any amount of data (some other versions of tail cannot). It also has no -r option (print in reverse), since reversing a file is really a different job from printing the end of a file; BSD tail (which is the one with -r) can only reverse files that are at most as large as its buffer, which is typically 32 KiB. A more reliable and versatile way to reverse files is the GNU tac command.
@adi Impressive, I should learn awk at some point.\nFunnily enough, GNU tail has no -r option: https://www.gnu.org/software/coreutils/manual/html_node/tail-invocation\n> GNU tail can output any amount of data (some other versions of tail cannot). It also has no -r option (print in reverse), since reversing a file is really a different job from printing the end of a file; BSD tail (which is the one with -r) can only reverse files that are at most as large as its buffer, which is typically 32 KiB. A more reliable and versatile way to reverse files is the GNU tac command.
Yes they did. The command line options --help, --version, --extended-regexp, --traditional, --loose-exit-status, --restricted, and --verbose in GNU ed are not specified in the POSIX standard. Interestingly, GNU also added --longer-option-names for the standard -p and -s. https://www.gnu.org/software/ed/manual/ed_manual.html#Invoking-ed https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/ed.html
Yes they did. The command line options --help, --version, --extended-regexp, --traditional, --loose-exit-status, --restricted, and --verbose in GNU ed are not specified in the POSIX standard. Interestingly, GNU also added --longer-option-names for the standard -p and -s. https://www.gnu.org/software/ed/manual/ed_manual.html#Invoking-ed https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/ed.html
@eldersnake Yes, I've been using it for a little while now and it's served my needs very well. The only thing is that you only get one page of results. 99% of the time, though, the 20 or so results on that page are close enough to what I'm looking for.
The image search is very nice. The image resolution is printed right there on the image matrix. There are good search options available like a "Transparent" image type which I've only seen on DuckDuckGo before.
Searching for text is completely usable with JavaScript disabled but it needs to be enabled for image search.
@eldersnake Yes, I've been using it for a little while now and it's served my needs very well. The only thing is that you only get one page of results. 99% of the time, though, the 20 or so results on that page are close enough to what I'm looking for.\nThe image search is very nice. The image resolution is printed right there on the image matrix. There are good search options available like a "Transparent" image type which I've only seen on DuckDuckGo before.\nSearching for text is completely usable with JavaScript disabled but it needs to be enabled for image search.
@papz Welcome to twtxt.net :)\nThere isn't much information on the home page and the links at the bottom go to pages that require far too much JavaScript to load. Is this just a personal wiki service that functions like a centralized TiddlyWiki or is there something more?
@papz Welcome to twtxt.net :)
There isn't much information on the home page and the links at the bottom go to pages that require far too much JavaScript to load. Is this just a personal wiki service that functions like a centralized TiddlyWiki or is there something more?
@eldersnake Librewolf is the answer, at least for now.
@eldersnake Librewolf is the answer, at least for now.
@prologic @slashdot The suicide of Firefox continues... https://lunduke.substack.com/p/mozilla-firefox-now-shows-advertisements
@prologic @slashdot The suicide of Firefox continues... https://lunduke.substack.com/p/mozilla-firefox-now-shows-advertisements
@prologic \n> I think I have a cold\n\nShhh, don't let the government know! ;)
@prologic
> I think I have a cold

Shhh, don't let the government know! ;)
@adi Uh, yeah. Why?
@adi Uh, yeah. Why?