# 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 1336
# self = https://watcher.sour.is?uri=https://txt.sour.is/user/xuu/twtxt.txt&offset=136
# next = https://watcher.sour.is?uri=https://txt.sour.is/user/xuu/twtxt.txt&offset=236
# prev = https://watcher.sour.is?uri=https://txt.sour.is/user/xuu/twtxt.txt&offset=36
@prologic have you tried using the macos github build environment? looks like they have a windows one too.
@prologic have you tried using the macos github build environment? looks like they have a windows one too.
more or less. :D
what are you using to ci/cd? i dont see a travisci/circleci/etc in the repo.. i can put something together to bump the patch level on master branch merges.
more or less. :D\nwhat are you using to ci/cd? i dont see a travisci/circleci/etc in the repo.. i can put something together to bump the patch level on master branch merges.
more or less. :D
what are you using to ci/cd? i dont see a travisci/circleci/etc in the repo.. i can put something together to bump the patch level on master branch merges.
There is.. but we lost the transform file to make it legible.
There is.. but we lost the transform file to make it legible.
@prologic you think its time the version to get bumped? :)
@xuu @prologic had to up my twt size a bit.
@xuu @prologic had to up my twt size a bit.
@prologic \n

-----BEGIN CRYPTUTIL ENCRYPTED MESSAGE-----
l0GwFAQpx3ed+bZlcQ+pexbynFzZOm8EI/FivGbWQ16whyTkToVv8S2GSAjrsJoT
37MdaBDpoitli/f/aP130b6O6SnK/LdHHJ1DTvWgxB14sq9b4mRtk7HvYzA=
-----END CRYPTUTIL ENCRYPTED MESSAGE-----
@prologic

-----BEGIN CRYPTUTIL ENCRYPTED MESSAGE-----
l0GwFAQpx3ed+bZlcQ+pexbynFzZOm8EI/FivGbWQ16whyTkToVv8S2GSAjrsJoT
37MdaBDpoitli/f/aP130b6O6SnK/LdHHJ1DTvWgxB14sq9b4mRtk7HvYzA=
-----END CRYPTUTIL ENCRYPTED MESSAGE-----
@prologic

-----BEGIN CRYPTUTIL ENCRYPTED MESSAGE-----
l0GwFAQpx3ed+bZlcQ+pexbynFzZOm8EI/FivGbWQ16whyTkToVv8S2GSAjrsJoT
37MdaBDpoitli/f/aP130b6O6SnK/LdHHJ1DTvWgxB14sq9b4mRtk7HvYzA=
-----END CRYPTUTIL ENCRYPTED MESSAGE-----
i have no clue how salt works :|
@xuu @prologic This? Fingerprint: 161c614f08e4ed4d1c8e5410f8c457e6878574dbab7c9ac25d474de67db1bdad
@xuu @prologic This? Fingerprint: 161c614f08e4ed4d1c8e5410f8c457e6878574dbab7c9ac25d474de67db1bdad
@prologic I use https://key.sour.is/id/me@sour.is\n\n> I would need an out-of-band way to verify your public key’s fingerprint though 🤣
@prologic I use https://key.sour.is/id/me@sour.is

> I would need an out-of-band way to verify your public key’s fingerprint though 🤣
@prologic I use https://key.sour.is/id/me@sour.is

> I would need an out-of-band way to verify your public key’s fingerprint though 🤣
@prologic Ok.. so using NaCL boxes. yeah its just a combo of using secretbox with a generated key/nonce. and then using the pubkey box to encrypt the key/nonce for each device.
@prologic Ok.. so using NaCL boxes. yeah its just a combo of using secretbox with a generated key/nonce. and then using the pubkey box to encrypt the key/nonce for each device.
@prologic
> Can we not have clients sign their own public keys before listing them on their Pod’s account?

Yeah.. we probably could. when they setup an account they create a master key that signs any subsequent keys. or chain of signatures like keybase does.
@prologic \n> Can we not have clients sign their own public keys before listing them on their Pod’s account?\n\nYeah.. we probably could. when they setup an account they create a master key that signs any subsequent keys. or chain of signatures like keybase does.
@prologic
> Can we not have clients sign their own public keys before listing them on their Pod’s account?

Yeah.. we probably could. when they setup an account they create a master key that signs any subsequent keys. or chain of signatures like keybase does.
@prologic def would be a wider discussion on preventing the pod from adding its own key to a users device list. Or using device keys to authenticate instead of user/pass.
@prologic def would be a wider discussion on preventing the pod from adding its own key to a users device list. Or using device keys to authenticate instead of user/pass.
@prologic pod should probably track revocation of device keys and delete the encryptedkeys that are paired with revoked keys
@prologic pod should probably track revocation of device keys and delete the encryptedkeys that are paired with revoked keys
@prologic device gets the cypertext and uses it's device key to decrypt one of the keys and then decrypts the cypertext.
@prologic device gets the cypertext and uses it's device key to decrypt one of the keys and then decrypts the cypertext.
@prologic sender generates an AES key encrypts message. gets the device list for user and encrypts key for each device. sends the encryptedkeys+cypertext.
@prologic sender generates an AES key encrypts message. gets the device list for user and encrypts key for each device. sends the encryptedkeys+cypertext.
@prologic for encryption. we can have browser/app generate ec25519 keypair. store the private on device and add pub to list of devices for the user on pod.
@prologic for encryption. we can have browser/app generate ec25519 keypair. store the private on device and add pub to list of devices for the user on pod.
i am guessing you are using some form of webmention to notify the target of the DM? which loads it into a store for the user to read?
i am guessing you are using some form of webmention to notify the target of the DM? which loads it into a store for the user to read?
@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.