# 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 1824
# self = https://watcher.sour.is?uri=https://twtxt.net/user/bender/twtxt.txt&offset=1124
# next = https://watcher.sour.is?uri=https://twtxt.net/user/bender/twtxt.txt&offset=1224
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/bender/twtxt.txt&offset=1024
@prologic yes, like they show here: https://ferengi.one/#uebsf7a
> Brisbane is coming onboard. Roosters are "singing" all around @prologic, and the dog is begging for the morning poo/pee walk. @prologic throws a slipper at the dog, as he turns around, and hides under his comforter.

😂😂😂
@prologic how would that line look like if the twtxt itself had ", and other "spurious" characters in it?
@prologic this works perfectly. Thanks!
@aelaraji yes, it is ignoring the template right now. I also test it. So, something's broken, @prologic.
@aelaraji this is my change on main.go (but it can be done on a template now, so no reason to touch the code):


                                 <time class="dt-published" datetime="{{ $twt.Created | date "2006-01-02T15:04:05Z07:00" }}">
                                        {{ $twt.Created | date "2006-01-02 15:04:05 MST" }}
                                  </time>


See https://ferengi.one. I am going to further customise things, but that's a start.
Never mind this one, figured it out. I am so silly! :-D
What's wrong with the timestamps, @prologic? See https://aelaraji.com/log.html, all are +0000 UTC+0000. Same on a local test I am running.

I tried changing {{ $twt.Created | date "2006-01-02T15:04:05Z07:00" }} to {{ $twt.Created | date "2006-01-02T15:04:05" }}, but no dice. I don't really care about the timezone. LOL.
How difficult will it be for you to modify this, so that can also spit out individual HTML files named after the twtxt hash, using a similar template?
@prologic ah! Something like this:


<!DOCTYPE html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
    <title>{{ .Title }}</title>
  </head>
\t<body class="preload">
\t  <main class="container">
\t\t{{ range $_, $twt := $.Twts }}
\t\t  <article id="{{ $twt.Hash }}" class="h-entry">
\t\t\t<div class="u-author h-card">
\t\t\t  <div class="dt-publish">
\t\t\t\t<a class="u-url" href="#{{ $twt.Hash }}">
\t\t\t\t  <time class="dt-published" datetime="{{ $twt.Created | date "2006-01-02T15:04:05Z07:00" }}">
\t\t\t\t\t{{ $twt.Created }}
\t\t\t\t  </time>
\t\t\t\t</a>
\t\t\t\t<span>&nbsp;{{ $twt.Created | time }}</span>
\t\t\t\t<a class="u-search" href="https://search.twtxt.net/twt/{{ $twt.Hash }}">(search)</a>
\t\t\t  </div>
\t\t\t</div>
\t\t\t<div class="e-content">
\t\t\t  {{ formatTwt $twt }}
\t\t\t</div>
\t\t  </article>
\t\t{{ end }}
\t  </main>
\t</body>
</html>
@prologic ah! Something like this:


<!DOCTYPE html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
    <title>{{ .Title }}</title>
  </head>
	<body class="preload">
	  <main class="container">
		{{ range $_, $twt := $.Twts }}
		  <article id="{{ $twt.Hash }}" class="h-entry">
			<div class="u-author h-card">
			  <div class="dt-publish">
				<a class="u-url" href="#{{ $twt.Hash }}">
				  <time class="dt-published" datetime="{{ $twt.Created | date "2006-01-02T15:04:05Z07:00" }}">
					{{ $twt.Created }}
				  </time>
				</a>
				<span>&nbsp;{{ $twt.Created | time }}</span>
				<a class="u-search" href="https://search.twtxt.net/twt/{{ $twt.Hash }}">(search)</a>
			  </div>
			</div>
			<div class="e-content">
			  {{ formatTwt $twt }}
			</div>
		  </article>
		{{ end }}
	  </main>
	</body>
</html>
@prologic how would a default template look like?
@aelaraji can you share the workflow you are using on jenny to convert twtxt.txt to HTML using @prologic's code?
@movq the thing is, the twtxt is in Maildir. When I reply to it, it doesn’t use the existing hash.
Trying to fetch the original (highlighting yours) with jenny renders this:

@movq the puzzle thickens:

@movq use @xuu pod as default instead, as he keeps the cache as long as I used to keep mine when I ran Yarn. @prologic's pod expires then way too soon.
Tangential, @prologic, mentioning is still broken in Yarn. See parent, @aelaraji is not linked (probably the mention on this twtxt will also be not linked).
Namely, the numbered list was wrong on the original twtxt, and the closing back ticks on the numbered list items were also wrong.
@quark @aelaraji, because a screenshot speaks better than a thousand words:

Original:



Modified:

@aelaraji fetch from the highlighted twtxt:

@mckinley based on @falsifian's findings (something we have talked about before on IRC as well), because collisions can occur now, maybe what you describe might not happen. It will be sort of... chaotic, for sure.
@prologic oh, I am sure crypto is innate... for some people. Not me! :-D
@prologic when it becomes innate. There was a time, I am sure (but don't know for sure, LOL), that all "we" heard about was electricity. No much these days, right?
@movq looks like a good compromise! Updating as soon as I reach home. Thank you!
Well, we can’t have it both ways! 😅 Should we assume twtxt are read by clients, and not worry about something humans won’t see? 🤭
The missing context makes it kind of hard to follow.
@prologic does it renders threads nicely, or is it a straight, flat, timeline.
Because it needs to be seeing bigger!

Lyse's sunset
@lyse pretty cool! No processing, those are the colours the camera saw, right? Amazing!
Order placed!

Now the wait starts. 😩😂
@prologic I will ping you on the 15th. Enjoy the weekend, mate! Don't worry, the Mills DC will continue to run 😂. Disconnect, and have fun!
@prologic you want this, https://key.sour.is/id/me@sour.is?
@aelaraji twtxt isn't one of the available proofs: https://docs.keyoxide.org/
Heck, fuck http too. https, or die.
I say fuck gemini, and gopher. 😅
The problem we are sporadically experiencing relates to content, specifically the editing of it. It breaks things.
@lyse talk about an epic adventure! :-D
@prologic yup.
@prologic iPhone 16 Pro Max for you, for sure. If significant other likes to take pictures as much as mine, then one for her too. That's $1,200 each (with 256GB storage).
Getting ready for the Apple Event. Are you watching it live, @prologic, or afterwards? :-P
@prologic any reason why there is salty, and salty-keygen? Why not both into one?
@prologic hey, what's the one liner to sign using an SSH key with salty?
I think I know what I did wrong. LOL. I used the wrong repository. Going for go install go.mills.io/salty/cmd/salty@latest instead. Duh!
@prologic So, I did go install go.salty.im/saltyim/cmd/salty-chat@latest, moved salty-chat to my bin as salty, and that one liner isn't working. What am I doing wrong?
@prologic can salty verify ed25519 signed messages? I asked on IRC, but never got a reply (or I missed it).
Wow, a blast from the past. Look at that Yarn version!
@lyse let’s do Drops of Jupiter too! (hopefully my markdown foo works, if not I am editing and breaking replies! 😅)

Video
@lyse let’s do Drops of Jupiter too! (hopefully my markdown foo works, if not I am editing and breaking replies! 😅)

https://youtu.be/7Xf-Lesrkuc
@lyse let’s do Drops of Jupiter too! (hopefully my markdown foo works, if not I am editing and breaking replies! 😅)

@lyse let’s do Drops of Jupiter too! (hopefully my markdown foo works, if not I am editing and breaking replies! 😅)

@lyse oooooh! That one looks lovely too! Let me know when there is something to alpha/beta test. I am volunteering! 😊
@lyse I just wanted to state that this is excellent news! Are you going to use some BubbleTea? 🙈
@prologic do the existing major clients today perform that verification, or is it simply “hey, there is that thingy let’s use it for reference!”?
@prologic about this:

> “I think Email Message-Id(s) only ever worked because typically you are exchanging emails with recipients you know and vice versa \n


Absolutely not! Maybe this is something best talked. 😅
@prologic about this:

> “I think Email Message-Id(s) only ever worked because typically you are exchanging emails with recipients you know and vice versa […]

Absolutely not! Maybe this is something best talked. 😅
@prologic about this:

> “I think Email Message-Id(s) only ever worked because typically you are exchanging emails with recipients you know and vice versa […]


Absolutely not! Maybe this is something best talked. 😅
@prologic I kind of want to think of twtxts as chalk text written on a board hanging in front of the user’s house. As the user is in full control of their own board, they can erase, and rewrite it as they deem fit.

So, how to reply, and engage with something that can potentially change? I think the email based message-id, and in-reply-to would work best, without the rigid boundary of a hash that’s bound to break on edit.
@prologic you wrote:

> “\n they can trust that the hash is a cryptographic representing of the thread they’re replying to, no matter what.”

It isn’t about trust, is it? There has to be some kind of check to verify the hash is valid, no?
@prologic you wrote:

> “[…] they can trust that the hash is a cryptographic representing of the thread they’re replying to, no matter what.”

It isn’t about trust, is it? There has to be some kind of check to verify the hash is valid, no?
@prologic “I’m now 100% certain this is what happened”, what exactly happened?
@lyse funny that you mention it. Sendgrid, for better or worse, cancels your account after X amount of inactivity. It does it in such way you can't reopen it, you must create a new one. So, I logged in on the account, but really couldn't do anything. Such predicament would have awaited for the would be phishers as well. So, you see, they were pre-destined to failure without even knowing it. LOL.
@prologic it is the attention to detail. Evidently no one from Australia tried to login on my Sendgrid account, but the IP the used correlates to the GeoIP DB.
Notice the detail on the IP address mentioned. It is one assigned to Australia: https://ipgeolocation.io/browse/ip/203.0.113.78
This happened yesterday:

Screenshot of an email, allegedly from Sendgrid

The first give away is the sender, sendgrid@autovitalsinc.com. Not Sengrid. Now, check the URL on the link provided to check the account activity:


https://u906946.ct.sendgrid.net/ls/click?upn=u001.eXk7eIEvNT22LuyWQ0fseoc5VY1jItvxPoavh2wfNVs292YMzvTAPj5D6nek1U6K7UfW_AsM5Hq3TBeAGlZrT-2F3g23iWCcJRPGZ-2B58DJxpgMgOTjgWklNQiAdGiHqmR6FFVhfWZJhnu1PSRslMuKGg1XNZs5e1lGu8kmdKhv7otlghl6qLMXiiXYZcvaUB5NruWwSBFcLdvi31NY-2Fru5oyrcrugm2iLYA0u5TiufyvA7SNTo3sDHx6WtS-2FmfEyN2svb9k1S4QGRFhuDseidMiFm0f9Q-3D-3D


I was curious, so I follow it on my dedicated VM for these kind of things. It took me to a page looking exactly like a Sendgrid login, with a sendgrid.net URL. Upon entering yourmotherisahamster@gmail.com, as username, and yourfathersmellsofelderberries as password, it sent me to https://screenprank.com/gandalf/.

It was well done. This morning the same link renders a blank page with a "Not found" link that takes you to a 404. Hmm...
@prologic well, that's a mighty reason not to do anything else! It has been already 8 hours, but I wish and hope you had a good night sleep. I woke up today, using 50% of my will power to do so.
@prologic come on, provide us with a one liner curl foo that does just that, don't be lazy! :-P
@prologic I don't. I will pay close attention on any oddity I see next time. Sorry!
@rrraksamam a few. :-) And thanks!
@rrraksamam which one? 😅
@rrraksamam ya, entiendo. Asi nos pasa a todos, creo. Vamos, que nos gusta, nos gusta! 🙂
Err, Garner, rather.
Somebody likes Jennifer Gardner... 😊
Oh, and about the "There’s so little going on in general, it hardly matters. 😅", the issue *I* have with it is that it is mostly one-way junk. Why to bother following that which never engages, or spews seemingly non-sense into the air (or both!)? 😅
@movq this is @quark's follow list:


anth http://a.9srv.net/tw.txt
bender https://twtxt.net/user/bender/twtxt.txt
johanbove https://johanbove.info/twtxt.txt
ionores https://twtxt.net/user/ionores/twtxt.txt
lyse https://lyse.isobeef.org/twtxt.txt
mckinley https://twtxt.net/user/mckinley/twtxt.txt
movq https://www.uninformativ.de/twtxt.txt
prologic https://twtxt.net/user/prologic/twtxt.txt
stigatle https://yarn.stigatle.no/user/stigatle/twtxt.txt
thecanine https://twtxt.net/user/thecanine/twtxt.txt
xuu https://txt.sour.is/user/xuu/twtxt.txt
abucci https://anthony.buc.ci/user/abucci/twtxt.txt
soren https://darch.dk/twtxt.txt
aelaraji https://aelaraji.com/twtxt.txt
dbucklin https://www.davebucklin.com/twtxt.txt
falsifian https://www.falsifian.org/twtxt.txt
off_grid https://twtxt.net/user/off_grid_living/twtxt.txt
yarn_police https://twtxt.net/user/yarn_police/twtxt.txt


And the Maildir size is 212MB. What size (not followers list) is yours?
@movq right, there is no way to forbid anyone from editing their text files. There is no hand holding here. :-D Thank you very much for shedding light into this "mystery"!
Weird, this just happened. It went away on page reload.

Screenshot of Yarn.social showing duplicated headers.
@prologic it hasn't been solved, that's why we are here on this yarn, still. LOL. I believe the hash mismatch is happening because of an edited twtxt. I don't follow the OP, so I have no way to check (not that I am certain it could be possible), but I have seeing similar issues in the past as a result of an edit. That's one of the reasons I don't edit anymore. 😬
@prologic why would you think it is changed in jenny? Falsifian (I still can’t mention while on mobile) said jenny, and the manual calculation match. Yarn seems to be the one at odd.
@mckinley I used the official client, but logged on my PDS, running under my control.
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?
Hey, @prologic, allow the <u> tag, maybe?
Not even the slightest chance on the link. Like an absolute zero. On the hashtag, I subscribe.
@prologic so is Yarn. twtxt.net is a "top heavy" instance. :-P
@prologic you can run your own Personal Data Server (PDS), to which you login to, and your data is kept. If you use BlueSky servers, you are at their mercy.
I understand now. I figured it would be something like this, because zooming in on pixelated fonts makes them “blocky”, and overall unreadable.

We sure have come a long way to make things better for people with far from perfect vision. It also makes me appreciate the vision I have.

Which font do you use at the Terminal?
@prologic really? Are you talking about the website design, or the font itself? The font is a monospaced variant, relatively good looking for a pixel font.
@prologic it’s a font. An awesome font. 😊
I figure most of you might have seeing this, but nevertheless: https://departuremono.com/ is awesome!
@prologic and this is why I think “good day!” is the most accurate greeting. It refers to the 24 hours period of time, regardless of what hour it might be. 🤭
@prologic if you do anything about those two protocols, please consider implementing something for UUCP. 😏
@aelaraji thank you! Having seeing Google’s Play, of whatever name they call their App Store these days, which is a mess, makes me very wary about using a third party one.

Back to the original topic, I use an iPhone. I am one of those who is perfectly fine with the Apple App Store. 😊
@darren I don’t get it (I don’t use Android). What do you mean?
@prologic errors are made everyday. Also, many developers try to get around the rules, and they get caught. Nothing to see here, moving on. 🤭
@lyse not even your phone? I can't go anywhere without mine, but wouldn't be surprised if not everybody did the same.
@lyse I love it! I love German! 😊
@prologic consider yourself lucky it is "winter" now, right? LOL. On a more serious note, it is upsetting that the smartest animals on the planet are at fault, and there is very little being done about it.
@movq it might be a neomutt thing. Let's see now.
@quark this is how it shows:

Screenshot of jenny/neomutt with thread joined
OK. @quark did not see this update, but should see this reply now, as broken.