# 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 4637
# self = https://watcher.sour.is?uri=https://twtxt.net/user/https://twtxt.net/user/prologic/twtxt.txt/twtxt.txt&offset=3137
# next = https://watcher.sour.is?uri=https://twtxt.net/user/https://twtxt.net/user/prologic/twtxt.txt/twtxt.txt&offset=3237
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/https://twtxt.net/user/prologic/twtxt.txt/twtxt.txt&offset=3037
@becrobinson86 πŸ€—
@oevl Very nice! Put your script up somewhere 😎
@oevl Cool! πŸ‘Œ
@oevl Hey πŸ‘‹
@xuu Ahh nice! Thatβ€˜lol make things even better! Can you put up a PR?
@xuu Okay... Let’s discuss scope 😁 ie: let’s not let it get to full blown feature rich wiki 🀣 We can also\nborrow code from https://github.com/prologic/wiki πŸ™ƒ
@er Hello! πŸ‘‹
@off_grid_living That Rigid looks good πŸ‘Œ
@off_grid_living Stephen said that they do come in much smaller models but maybe they don’t publish them on my website cc @hellson
@gareppa Yeah this community is all over the planet πŸ˜‚
@gareppa Hello! πŸ‘‹
@melyanna Good morning πŸ€—
@becrobinson86 My god how gross 😳
Or @birb-friend πŸ˜‚
Knd of looks like @birb 🀣
hmmm the app needs to grow the β€œpost as” feature for user feeds
@becrobinson86 yeah and I need at least three of them before I’ve fully woken up! 🀣
@vain Yeah it is!
@vivos cc @becrobinson86
@becrobinson86 oh hahaha πŸ˜πŸ˜‚πŸ˜πŸ˜‚
Forgot to post last weeks message from the local optometrist! 🀣🀣🀣
Hello friendly parrot! πŸ‘‹ 🦜
@xuu @adi it’ll certainly make things a bit easier for sure I think πŸ€”
@off_grid_living Haha πŸ˜‚πŸ€£
@off_grid_living Yeah this is what I’ve been saying about the market of DC appliances
@off_grid_living You have a good eye for detail ! πŸ™ƒ I can’t tell! 🀣
@xuu You mean we’d have an embedded wiki? 😳
@off_grid_living Looks good πŸ‘Œ
@off_grid_living we got none! πŸ˜₯
@xuu Oh wow! 😲 This is so cool! Can we integrate this into Twtxt’a backend?
@vain Aww c’mon πŸ˜‚
@felixp7 Yeah I agree with some of the statements and opinions here. Often-times you cannot really avoid just copying a piece of code, because you _actually_ do risk over generalising or worse adding so many layers of indirection you actually make it worse to reason about and later debug if things go wrong. Finding a balance between principles like DRY and SOLID programming is hard (_and I really wish we didn't have to keep coming up with these silly acronyms all the time!_)\n\nGood read πŸ‘Œ
@torresjrjr Hello! πŸ‘‹ Welcome to Twtxt! πŸ€—
Although.... πŸ€” It _might_ work as a way to link to one's Twt Blog posts? πŸ€”
I see, so its some sort of linking to wiki pages? This wouldn't work for us would it? πŸ€”
Yeah I don't actually understand the purpose of the !bangtag(s) 😒 Its not frequently used AFAICT.
I don't mind 🀣
@xuu Oh! Were you testing against twtxt.net? Because I follow the @twtxt bot so usually what happens is when a new account is created every user follows themselves by default and you get that first @twtxt Twt that basically tells you, "ooh look we have a new user" πŸ˜€
@xuu Yeah I've seen them before used by folks in the greater community, but I have _no idea_ what they're for (_I was told and I forget_). If you find out LMK as I don't think our backend supports them at all?
@asdf1 Hey! πŸ‘‹
@realdefi Hello! πŸ‘‹ Welcome to Twtxt! πŸ€—
@oevl Nice πŸ‘Œ
@michaelz Hello! πŸ‘‹
@xuu Ahhh! Yes this was one of the possible ways I explored as well. This is awesome! if this all works and you can cut a release from this, put the PR up and let's release a v1.0 πŸ˜€ Great work! πŸ™‡β€β™‚οΈ
@eveningwear Nice to see you active again mate πŸ˜€ -- Still enjoying your eveningwear.twt.social pod?
so in other words a subject matter expert? Or SME?! 🀣
Can anyone explain to me what a "thought leader" is? πŸ€”
@xuu The issue is that goreleaser is probably no longer a viable tool here to build binaries to attach to the release. It cross-compiles and that doesn't work now that we depend on some CGo libraires. So maybe the solution is to move the release process entirely into Github Actions and use different tools to build and upload the binaries to the release? (_I've just always done releases up until now with goreleaser..._)
If you have a read of the linked items in that issue you'll see what the problem is. Basically I have been doing the releases on my mac, and cross-compilation fails for various targets now due to various CGo dependencies used in the project. I'd like to continue using goreleaser if we can, but we might have to do the actual release builds in CI instead in a Github Action runner. But you _may_ still have to use the cross-cross complie magic referenced in that issue anyway to go from Linux -> other
So all my projects use Github Actions. You can see in .github/workflows/ The main issue with releasing a new version at the moment is building new binaries with goreleaser.
@eveningwear Do you want to spin up your own pod there too? πŸ˜€
@fadatinsl Hello! πŸ‘‹
hahaha 🀣
@xuu Yes but I was hoping to get this issue before releasing a v1.0 so we have proper prebuilt binaries against for various platforms. You any good at this type of thing? cross-platform builds/etc?
@freemancash Hello Qian Ziyou πŸ‘‹
sorry for anyone reading this conversation calmer I’ve gone and enabled a couple extra security options in the Signal App just in case I do leave my phone lying around for some unwanted person to pick up and view 😁\n\n
@kt84 I know I was so disgusted and so pissed off! I need to go and buy new shoes 😑 so disgusting πŸ€¦β€β™‚οΈπŸ˜³
@freemancash Hello! πŸ‘‹ Welcome to Twtxt! πŸ€—
so here’s the Github issue that discusses in detail how this so-called company allegedly broke the signal encryption hah\n\nhttps://github.com/signalapp/Signal-Android/issues/10277\n\nHint: They didn’t! They had full root access tto the phone and access to the key store on the device \n\nπŸ€¦β€β™‚οΈ
@slashdot This comment is precisely my thoughts too! Of course they can decode the contents of Signal data on a phone! By physically having access to and by opening up the phones device and having full access to the private keys stored on it d'uh\n\n
@xenopunk No worries! LMK if you have any q’s 😁
Grrr 😑 my shoe just picked up someone’s chewing gum! 🀬
@lahvak Why a subscription though? πŸ€”
@jack Hello! πŸ‘‹
@xenopunk Hi! πŸ‘‹
@xuu Yeah perhaps we should change the default?
@xuu \n\n> I’ll update the README with some instructions. One sec…\n\n[Done](https://github.com/prologic/cryptutils#)
@xuu I'll update the README with some instructions. One sec...
@xuu I _guess _ I need your public key salt -export - πŸ˜€\n\nHere's mine:\n\n
\n-----BEGIN CRYPTUTIL VERIFIED KEY-----\nMIHMBEBS3sgNEUEhGu8K7pgxT0b4cRpxdlRhteO8ZEsMawvJe7snRFMNThuOKnZo\nMEc+VvTOeLYGiw1ZFG6XbY9WyvQcBEBS3sgNEUEhGu8K7pgxT0b4cRpxdlRhteO8\nZEsMawvJe7snRFMNThuOKnZoMEc+VvTOeLYGiw1ZFG6XbY9WyvQcAgRf1h2qBECA\nlBBT/KRNLYmcD8YZAkb8DoEA/IdiH+0RmIDNPM87TVYme8rJ/8UGssPL4IX/1s+m\n7J6dL0izLNuVaANEDsgF\n-----END CRYPTUTIL VERIFIED KEY-----\n
\n\nAnd emailed you (_out-of-band_) the key's fingerprint for you to confirm/match :D\n\nsalt -u -import - to import
@xuu Looks legit :)
@adi What about this?\n\n
\n-----BEGIN CRYPTUTIL SIGNED AND ENCRYPTED MESSAGE-----\nHNVAUkSQ/sRljsRENHzBW8xF81kKVaZ4xzixRrOfIU3ZzsURSfcik8ObodK8LF3m\n4rsdUrL7JpbE0v7wvHm6YmpwPByvAtHGJQO1kQ/TcWHfrBex+yL1VmN8xS7HhfSb\nH85D8Ge6CuaXSWerjTz1LHo7dYk1o1Y83f7MGrjDJgghWA6uPMn660GOk73DbUaA\nHCQo0w3fiolLL5Y=\n-----END CRYPTUTIL SIGNED AND ENCRYPTED MESSAGE-----\n
For example, this is for @adi :\n\n
\n-----BEGIN CRYPTUTIL SIGNED AND ENCRYPTED MESSAGE-----\nM3QAfkSbutLPe58ALjY+ENO8kbpjne3EjXVu9kIivl0thk2hRqcL/ZhBkQBxivh6\nJXS507BO26UbUDz0vd2xGMl8TN/EcWNVtm4PGyTPh+BOolKTy+UR0d1++ZeXc2P4\n3TvaT9aV5eShx7gMps4TmNkcOGwSwLtBHxKicwkAj9Ox7f5EHdGnDQzAOJAW69c/\ns3iAdSIDdXgcumzy+LSg+QaDWdV4SEGhcpA9Ka+TNXbGzOIJ6oDk6P8wFk6JnwRR\nu+A=\n-----END CRYPTUTIL SIGNED AND ENCRYPTED MESSAGE-----\n
I _would_ need an out-of-band way to verify your public key's fingerprint though 🀣
@xii Alternatively we can decide that "group messages" are out-of-scope and then we don't have to do any extra work, the salt CLI tool in cryptutils _already_ does all the work we need. We just use the same functions and target multiple device public keys. If you install the CLI we can even do this over Twtxt to see how it plays out? :)
Yup pretty much. It's all supported in cryptutils and it _should_ be easy to port the same code _verbatim_ using TweetNaCL; which should then work nicely on the Web App (_client-side_) and Mobile App (_using Flutter_)
@lyxal Yeah we'll fix that soon πŸ˜€ And hide it behind a button like on the Mobile App.
Anyone notice all content disappear and reappear? 🀣 @xuu's PR got merged! @adi noticed πŸ˜›
@xuu\n\n> def would be a wider discussion on preventing the pod from adding its own key to a users device list\n\nCan we not have clients sign their own public keys before listing them on their Pod's account?
@adi @xuu I'm not sure this is something we can solve. The same problem exists with Signal, GPG and _ptobabpy_ any other kind of public key crypto protocol/system. If you lose your keys, you can no longer read old messages.
@xuu re encryption, that sounds reasonable actually. But instead of AES, let's use Salt/NaCL. I put together this library and tool which uses ED25519 for your "device key pair" / or "identity key pair" and uses Curve25519, Salsa20, and Poly1305 for the actual encryption (_normal box.Seal()_). The only downside at the moment is single recipient only (_I borrowed most of this code from someone else_). But this lets us use TweetNaCL
> 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?\n\nNo webmention(s) are only used to perform an internal event on a pod that causes the @twtxt bot to post about it.
There is.a _little_ overhead though as the archived twts are stored as .json blobs.
@vain No, this is not database overhead at all 🀣 This is _quite literally_ ~300k Twts archived over a period of months on this pod (_I consume a lot of news via feeds.twtxt.net :P_)~
@hecanjog But you don't follow me anyway 🀣 So you won't see this πŸ˜›
@hecanjog Not floowing my timeline at all πŸ˜€ Hiya! πŸ‘‹
@xuu Oh that would be nice! I think @adi has volunteered as well. Basically let's get a first version working that _actually works_β„’ πŸ˜€
I didn’t even notice until several days later so that means the pod performance works quite well πŸ‘Œ
Oh πŸ€¦β€β™‚οΈ I just worked out what that was! Ot was the new Twt hashing work you did @xuu which caused a en-mass re-archival to happen on my pod! 🀣
The interesting thing is that it's not really possible to do this as the cache limits what it fetches by config.MaxFetchlimit as seen [here](https://github.com/jointwt/twtxt/blob/2fe0d435a7ffadce412d82e23ae6e83739e9704e/internal/cache.go#) -- Unless (_assuming malicious here_) someone created a feed with ~80k old entries of nothing?~
My god! Here's the graph of it!\n\n \n\nCan't tell whether this was malicious or benign πŸ€”\n\n
\n$ dki -t --rm -v twtxt_twtxt:/data alpine /bin/sh\n/ # cd /data/archive/\n/data/archive # du -s -h .\n1.7G\t.\n/data/archive #\n
\n\n😲
Hmmm πŸ€” _Somehow_ we went from ~276k archives Twts on this pod (twtxt.net) to 356k 😲\n\nSee o7yktgq and cykifgq\n\nI guess someone followed a rather large feed containing 83k twts?! 😱 And we just archived them all?! 🀣~
This is what I have done so far...\n\n \n\nAnd:\n\n
If _only_ I had a way to privately message you πŸ€” I'm willing to fork out a few πŸ’΅ for someone to help, my RSI is getting quite bad nowadays 😒 Writing Go isn't all that hard and this is pretty simple stuff really, for a PoC I'm just going to borrow from something like what Lobsters does and worry about e2e crypto later (_Goal: privacy from Pod Owner's prying eyes, not necessarily NSA-proof messaging πŸ˜‹_) PM me on FreeNode if you like prologic or mail me at james οΌ  mills Β· io_
Anyone here good with Go and feel like helping me build our a "Direct Messages" feature? I was going to pay someone on Upwork to do this, but I've received very few applicants (_just one!_) and they aren't that good (_stock standard crappy Bootstrap experience and no evidence of any experience with Go_).
@xuu No worries πŸ€—
@off_grid_living Safe travels ! πŸ‘Œ
@xuu Just saw your PR, Thanks! I _think_ I've covered that change already in master πŸ˜€
Hello @kris451 ! πŸ‘‹ Welcome to Twtxt! πŸ€—
@lyxal What do you know or have learned that you feel you could contribute to? In non-tech contributions you _could_ spawn your own Pod, help me build more cross-pod features as a "beta" tester of said features. For example if you spawned your own Pod, it _is_ useful to be able to migrate your "feed" from one Pod to another.
@xuu Haha let’s keep it simple ! I always have two goals in mind a) compatibility with plain old Twtxt or simple enough to adopt and b) easy for the average non-technical person