# 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 1328
# self = https://watcher.sour.is?uri=https://txt.sour.is/user/xuu/twtxt.txt&offset=19
# next = https://watcher.sour.is?uri=https://txt.sour.is/user/xuu/twtxt.txt&offset=119
@prologic 👋 I can take a stab at it when I am done with the changes I am working on.
@prologic 👋 I can take a stab at it when I am done with the changes I am working on.
@prologic my bad.. my next one is more fun.
@prologic my bad.. my next one is more fun.
@prologic I see.. so using an ec25519 key as identity? and some kind of certificate to define the location of a feed? or maybe a DHT like Kademlia? TwTorrent ;)
@prologic I see.. so using an ec25519 key as identity? and some kind of certificate to define the location of a feed? or maybe a DHT like Kademlia? TwTorrent ;)
@prologic kinda like how MX records work.
@prologic kinda like how MX records work.
@prologic My thoughts on it being if they switched from a different way of hosting the file or multiple locations for redundancy..

I have an idea of using something like SRV records where they can define weighted url endpoints to reach.
@prologic My thoughts on it being if they switched from a different way of hosting the file or multiple locations for redundancy..

I have an idea of using something like SRV records where they can define weighted url endpoints to reach.
@prologic My thoughts on it being if they switched from a different way of hosting the file or multiple locations for redundancy..\n\nI have an idea of using something like SRV records where they can define weighted url endpoints to reach.
@prologic just an off the wall question about hashes. why not use the time+message as it was in the original twtxt.txt file? is it because it's just not store anyplace?

also how set in stone is using user+url? vs user@domain? the latter would mean the url could change without invalidating the hash.
@prologic just an off the wall question about hashes. why not use the time+message as it was in the original twtxt.txt file? is it because it's just not store anyplace?\n\nalso how set in stone is using user+url? vs user@domain? the latter would mean the url could change without invalidating the hash.
@prologic when i get the code up to a shareable level ill ping with what i have.
@prologic when i get the code up to a shareable level ill ping with what i have.
@prologic so.. convert the 4 attributes in the struct to private, add getters plus some the other methods that make sense.

o
type Twt interface {
\tTwter()        Twter
\tText()         string
\tMarkdownText() string
\tCreated()      time.Time
    ... 
}
@prologic so.. convert the 4 attributes in the struct to private, add getters plus some the other methods that make sense.

o
type Twt interface {
	Twter()        Twter
	Text()         string
	MarkdownText() string
	Created()      time.Time
    ... 
}
@prologic so.. convert the 4 attributes in the struct to private, add getters plus some the other methods that make sense.

o
type Twt interface {
	Twter()        Twter
	Text()         string
	MarkdownText() string
	Created()      time.Time
    ... 
}
@prologic so.. convert the 4 attributes in the struct to private, add getters plus some the other methods that make sense.\n\n
o
type Twt interface {
\tTwter()        Twter
\tText()         string
\tMarkdownText() string
\tCreated()      time.Time
    ... 
}
@prologic yeah I do.

It seems a bit wonky that it imports from your packages in some places. I'm guessing that's some legacy bits that need updates?
@prologic yeah I do. \n\nIt seems a bit wonky that it imports from your packages in some places. I'm guessing that's some legacy bits that need updates?
@prologic yeah I do.

It seems a bit wonky that it imports from your packages in some places. I'm guessing that's some legacy bits that need updates?
@prologic I have some ideas to improve on twtxt. figure I can contribute some. 😁 bit more work and it will almost be a drop in replacement for [ParseFile](https://github.com/jointwt/twtxt/blob/master/internal/twt.go#)

Kinda wish [types.Twt](https://github.com/jointwt/twtxt/blob/master/types/twt.go#) was an interface. it's sooo close.
@prologic I have some ideas to improve on twtxt. figure I can contribute some. 😁 bit more work and it will almost be a drop in replacement for [ParseFile](https://github.com/jointwt/twtxt/blob/master/internal/twt.go#) \n\nKinda wish [types.Twt](https://github.com/jointwt/twtxt/blob/master/types/twt.go#) was an interface. it's sooo close.
@prologic I have some ideas to improve on twtxt. figure I can contribute some. 😁 bit more work and it will almost be a drop in replacement for ParseFile](https://github.com/jointwt/twtxt/blob/master/internal/twt.go# https://txt.sour.is/search?tag=L284>) \n\nKinda wish types.Twt](https://github.com/jointwt/twtxt/blob/master/types/twt.go# https://txt.sour.is/search?tag=L53>) was an interface. it's sooo close.
@prologic I have some ideas to improve on twtxt. figure I can contribute some. 😁 bit more work and it will almost be a drop in replacement for [ParseFile](https://github.com/jointwt/twtxt/blob/master/internal/twt.go#)

Kinda wish [types.Twt](https://github.com/jointwt/twtxt/blob/master/types/twt.go#) was an interface. it's sooo close.
@lyxal @prologic yah. the service can have a flag for allowing non-TLS for development. but by default ignores.

are there some users that use alternative protos for twtxt? like ftp/gopher/dnsfs 🤔
@lyxal @prologic yah. the service can have a flag for allowing non-TLS for development. but by default ignores.

are there some users that use alternative protos for twtxt? like ftp/gopher/dnsfs 🤔
@lyxal @prologic yah. the service can have a flag for allowing non-TLS for development. but by default ignores. \n\nare there some users that use alternative protos for twtxt? like ftp/gopher/dnsfs 🤔
My latest work over the last few days. a twtxt parser. so far looking promising. Faster and less memory than the regex version. 😁
@prologic @lyxal blocking http would be a good start
@prologic @lyxal blocking http would be a good start
@admin @lyxal hax?
@admin @lyxal hax?
@prologic ❤️
@prologic ❤️
@prologic an added benefit of the avatar: would be the user could put their gravatar/libravatar image url like https://key.sour.is/avatar/01bc6186d015218c23dec55447e502e669ca4c61c7566dfcaa1cac256108dff0
@prologic an added benefit of the avatar: would be the user could put their gravatar/libravatar image url like https://key.sour.is/avatar/01bc6186d015218c23dec55447e502e669ca4c61c7566dfcaa1cac256108dff0
@prologic Could the config be embeded into the head comment of the twtxt.txt file and parsed out? If it also had an avatar: field that pointed to where the avatar image is located it can be almost all self contained.
@prologic Could the config be embeded into the head comment of the twtxt.txt file and parsed out? If it also had an avatar: field that pointed to where the avatar image is located it can be almost all self contained.
New Blog Post Test Blog by @xuu 📝
New Blog Post Test Blog by @xuu 📝
@lyxal @prologic if we edit the txt file does it update on web?
@lyxal @prologic if we edit the txt file does it update on web?
@prologic the HKP is http keyserver protocol. it's what happens when you do gpg --send-keys

makes a POST to the keyserver with your pubkey.
@prologic the HKP is http keyserver protocol. it's what happens when you do gpg --send-keys

makes a POST to the keyserver with your pubkey.
@prologic the HKP is http keyserver protocol. it's what happens when you do gpg --send-keys\n\nmakes a POST to the keyserver with your pubkey.
@prologic looking through the drafts it looks like it actually used SRV records as recently as 2018 😵
@prologic looking through the drafts it looks like it actually used SRV records as recently as 2018 😵
@prologic Web Key Directory: a way to self host your public key. instead of using a central system like pgp.mit.net or OpenPGP.org you have your key on a server you own.

it takes an email@address.com hashes the part before the @ and turns it into [openpgpkey.]address.com/.well-known/openpgpkey[/address.com]/<hash>
@prologic Web Key Directory: a way to self host your public key. instead of using a central system like pgp.mit.net or OpenPGP.org you have your key on a server you own.

it takes an email@address.com hashes the part before the @ and turns it into [openpgpkey.]address.com/.well-known/openpgpkey[/address.com]/<hash>
@prologic Web Key Directory: a way to self host your public key. instead of using a central system like pgp.mit.net or OpenPGP.org you have your key on a server you own. \n\nit takes an email@address.com hashes the part before the @ and turns it into [openpgpkey.]address.com/.well-known/openpgpkey[/address.com]/<hash>
@xuu With SRV you can set what hostname to be used (and port/priority/etc)
@xuu With SRV you can set what hostname to be used (and port/priority/etc)
@xuu Not too happy with WKD's use of CNAME over SRV for discovery of openpgpkey.. That breaks using SNI pretty quick. I suppose it was setup as a temporary workaround anyhow in the [RFC..](https://tools.ietf.org/html/draft-koch-openpgp-webkey-service-11#.1)
@xuu Not too happy with WKD's use of CNAME over SRV for discovery of openpgpkey.. That breaks using SNI pretty quick. I suppose it was setup as a temporary workaround anyhow in the [RFC..](https://tools.ietf.org/html/draft-koch-openpgp-webkey-service-11#.1)
@xuu Not too happy with WKD's use of CNAME over SRV for discovery of openpgpkey.. That breaks using SNI pretty quick. I suppose it was setup as a temporary workaround anyhow in the RFC..](https://tools.ietf.org/html/draft-koch-openpgp-webkey-service-11# https://txt.sour.is/search?tag=section-3>.1)
Did some work on WKD handling. Can update keys with HKP posts :) Ugh need to work on docs and unit tests. Boooorrring.
Happy Friday.
@prologic also :)
@prologic also :)
@adi @prologic One reservation about using it with a small community would be the expectation that the discussions at some level stay within the circle as opposed to the internet at large.
@adi @prologic One reservation about using it with a small community would be the expectation that the discussions at some level stay within the circle as opposed to the internet at large.
@prologic @twtxt I have noticed that I will get some duplicate web mention notifications. some kind of dedup would be helpful.
@prologic @twtxt I have noticed that I will get some duplicate web mention notifications. some kind of dedup would be helpful.
@prologic (#gqg3gea) ha yeah. COVID makes for a timey-wimey mish-mash. Worked on some WKD and fought with my XMPP client a bit.
@prologic (#gqg3gea) ha yeah. COVID makes for a timey-wimey mish-mash. Worked on some WKD and fought with my XMPP client a bit.
@prologic Herro! 👋
@prologic Herro! 👋
@prologic well nice chat. it's off to bed for me.
@prologic well nice chat. it's off to bed for me.
@prologic do you think twt will ever add ActivityPub integration?
@prologic do you think twt will ever add ActivityPub integration?
@prologic Yep! installed it yesterday. I like the simplicity of twt. I am quite happy with how little memory the pod seems to use. Mastodon and the "lightweight" Pleroma don't work well in small VMs.
@prologic Yep! installed it yesterday. I like the simplicity of twt. I am quite happy with how little memory the pod seems to use. Mastodon and the "lightweight" Pleroma don't work well in small VMs.
@prologic
> That way at least we can form some kind of cryptographic “identity” without having to involve the users that much, it just works™

i like some of the work that keys.pub is doing with ed25519 crypto keys with something like that.
@prologic \n> That way at least we can form some kind of cryptographic “identity” without having to involve the users that much, it just works™\n\ni like some of the work that keys.pub is doing with ed25519 crypto keys with something like that.
@prologic
> That way at least we can form some kind of cryptographic “identity” without having to involve the users that much, it just works™

i like some of the work that keys.pub is doing with ed25519 crypto keys with something like that.
@prologic huh.. true.. the email is md5/sha256 before storing.. if twtxt acted as provider you would store that hash and point the SRV record to the pod. .. to act as a client it would need to store the hash and the server that hosts the image.
@prologic huh.. true.. the email is md5/sha256 before storing.. if twtxt acted as provider you would store that hash and point the SRV record to the pod. .. to act as a client it would need to store the hash and the server that hosts the image.
@xuu @prologic something that would be interesting would be libravatar for the user image. i made one that does the same for a profile cover image.
@xuu @prologic something that would be interesting would be libravatar for the user image. i made one that does the same for a profile cover image.
@xuu @prologic The gpg command line leaves much to be desired...
@xuu @prologic The gpg command line leaves much to be desired...
@prologic it is some interesting work to decentralize all the things.. tricky part is finding tooling. i am using a self hacked version of the go openpgp library. A tool to add and remove notations would need to be local since it needs your private key.
@prologic it is some interesting work to decentralize all the things.. tricky part is finding tooling. i am using a self hacked version of the go openpgp library. A tool to add and remove notations would need to be local since it needs your private key.
@prologic this is a go version of Keyoxide.org that runs all server side. which is based on work from https://metacode.biz/openpgp/

OpenPGP has a part of the self signature reserved for notatinal data. which is basically a bunch of key/values.

this site tries to emulate the identity proofs of keybase but in a more decentralized/federation way.

my next steps are to have this project host WKD keys which is kinda like a self hosting of your pgp key that are also discoverable with http requests.

then to add a new notation for following other keys. where you can do a kind of web of trust.
@prologic this is a go version of Keyoxide.org that runs all server side. which is based on work from https://metacode.biz/openpgp/\n\nOpenPGP has a part of the self signature reserved for notatinal data. which is basically a bunch of key/values. \n\nthis site tries to emulate the identity proofs of keybase but in a more decentralized/federation way. \n\nmy next steps are to have this project host WKD keys which is kinda like a self hosting of your pgp key that are also discoverable with http requests. \n\nthen to add a new notation for following other keys. where you can do a kind of web of trust.
@prologic this is a go version of Keyoxide.org that runs all server side. which is based on work from https://metacode.biz/openpgp/

OpenPGP has a part of the self signature reserved for notatinal data. which is basically a bunch of key/values.

this site tries to emulate the identity proofs of keybase but in a more decentralized/federation way.

my next steps are to have this project host WKD keys which is kinda like a self hosting of your pgp key that are also discoverable with http requests.

then to add a new notation for following other keys. where you can do a kind of web of trust.
This is an OpenPGP proof that connects my OpenPGP key to this Twtxt account. See https://key.sour.is/id/me@sour.is for more.

\n
This is an OpenPGP proof that connects my OpenPGP key to this Twtxt account. See https://key.sour.is/id/me@sour.is for more.

[Verifying my OpenPGP key: openpgp4fpr:20AE2F310A74EA7CEC3AE69F8B3B0604F164E04F]
This is an OpenPGP proof that connects my OpenPGP key to this Twtxt account. See https://key.sour.is/id/me@sour.is for more.\n\nVerifying my OpenPGP key: openpgp4fpr:20AE2F310A74EA7CEC3AE69F8B3B0604F164E04F]\n2020-12-02T02:03:05Z\t@https://twtxt.net/user/prologic/twtxt.txt> (#jmgdkdq) this is a go version of Keyoxide.org that runs all server side. which is based on work from https://metacode.biz/openpgp/\n\nOpenPGP has a part of the self signature reserved for notatinal data. which is basically a bunch of key/values. \n\nthis site tries to emulate the identity proofs of keybase but in a more decentralized/federation way. \n\nmy next steps are to have this project host WKD keys which is kinda like a self hosting of your pgp key that are also discoverable with http requests. \n\nthen to add a new notation for following other keys. where you can do a kind of web of trust.
This is an OpenPGP proof that connects my OpenPGP key to this Twtxt account. See https://key.sour.is/id/me@sour.is for more.

[Veriying my OpenPGP key: openpgp4fpr:20AE2F310A74EA7CEC3AE69F8B3B0604F164E04F]
This is an OpenPGP proof that connects my OpenPGP key to this Twtxt account. See https://key.sour.is/id/me@sour.is for more.\n\n[Verifying my OpenPGP key: openpgp4fpr:20AE2F310A74EA7CEC3AE69F8B3B0604F164E04F]\n2020-12-02T02:03:05Z\t@https://twtxt.net/user/prologic/twtxt.txt> (#jmgdkdq) this is a go version of Keyoxide.org that runs all server side. which is based on work from https://metacode.biz/openpgp/\n\nOpenPGP has a part of the self signature reserved for notatinal data. which is basically a bunch of key/values. \n\nthis site tries to emulate the identity proofs of keybase but in a more decentralized/federation way. \n\nmy next steps are to have this project host WKD keys which is kinda like a self hosting of your pgp key that are also discoverable with http requests. \n\nthen to add a new notation for following other keys. where you can do a kind of web of trust.
@prologic Oh snap. that's what i get for copy paste! ill just have to repost and update my key.
@prologic Oh snap. that's what i get for copy paste! ill just have to repost and update my key.
@xuu can i notify myself?
@prologic this is a very curious project. I would love to see how it manages to do its federation between pods.
@prologic this is a very curious project. I would love to see how it manages to do its federation between pods.
hello twt!