# 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=3537
# next = https://watcher.sour.is?uri=https://twtxt.net/user/https://twtxt.net/user/prologic/twtxt.txt/twtxt.txt&offset=3637
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/https://twtxt.net/user/prologic/twtxt.txt/twtxt.txt&offset=3437
@adi Good Morning! 😴
@lazarus SPAM is easy to deal with. Just delete the offending accounts β€” there’s a user interface for this for the admin user under settings and then pod management
@lazarus although we haven’t released any pre-built binaries recently so I would build from source for now
@lazarus Yes
@lazarus \n\n> I’m not sure I know enough to implement OAuth2. I’m still considering that twt in combination with say XMMP for private dm and group chat could work for a local community.\n\nI haven't tried to implemented OAuth2 at this stage, it might be interesting, especially if you have an existing OAuth2 provider (_ideally self-hosted_). We did build an experimental DM that's based around the old "mbox" format and exposes an SMTP and POP3 services.
@lazarus \n\n> Is twtxt.net setup to hash user’s passwords and emails? You have the ability for users to retrieve passwords but you mention you don’t keep emails. I’m curious as I have just realized that the ejabberd server I setup stores passwords as plain text and I need to research this more.\n\nPasswords are encrypted with scrypt.\n\nEmails are not stored, only a hash is. If you need to recover your account for any reason (_password reset_) you must supply the same email used on signup, if the hash matches the backend will happily send a reset token.
@lazarus \n\n> So a pod owner can turn off open registrations and open profiles. I’m feeling dumb but what does disabling open profiles mean for users?\n\nIt simply means you have to have an account to see that user's profile. i.e: anonymous access is disabled at that point.
@Anthony_Sorace What language is it written in? πŸ€”
Hello @wer πŸ‘‹ Welcome to Twtxt! πŸ€—
@adi Yeah that's fair. A library I _really_ like for this type of stuff is Morphdom
@adi If you're familiar with simple libs like this, would you be interested in helping build a new web app? Heard of and/or used MithrilJS and familiar with Progressive Web Apps (PWA)?
Ahahahaha that's brilliant! 🀣
Hello @gugod πŸ‘‹
@xuu Nope, I'm not crawling any twtxt feeds over gopher at the moment, colly doesn't support it 🀣\n\n@https://lyse.isobeef.org/twtxt.txt> Yeah I haven't really taken that into account I don't think. Hmmm πŸ€”\n\n@https://txt.sour.is/user/xuu/twtxt.txt> Where should we take this next? I _really_ think_ we should build a Twtxt Search Engine πŸ˜€ It _might_ help a lot with the "discovery" aspects/problems Twtxt always had back in the day (~2016)?~_
@jlj Another Twter from the future! 😳
Ahh very nice! Have to say, really appreciate the hard work you've put into this! πŸ™‡β€β™‚οΈ
There’s a low res version for you too @off_grid_living β€” Just click on the cog wheel and select the 320p version πŸ‘Œ
I mean you gotta watch this video too! 😁
@adi Yeah I use Sh as glue too and pull out Go for more complex work
@adi Perhaps Rob Pike might want to join Twtxt instead? πŸ€”
@sjkelleyjr Not at all! It’s a little nuts 😳
Twtxt is still very much alive and well. I just wrote a quick tool to crawl as much of the Twtxt network as I could and here's what the results are:\n\n
\nCrawled 516 feeds\nFound 52464 twts\n
\n\nThat means there are >500 unique Twtxt feeds/users, and over ~52k Twts posted to date. 😳~
As a quick experiment, I modified my code to remove the domain restrictions and low and behold:\n\n
\nAll done!\nCrawled 516 feeds\nFound 52464 twts\nFound 736 feeds\n
\n\nThe Twtxt network is larger than I thought. A significant no. of feeds no longer work obviously, but that's okay, we can prune dead feeds out.
@Anthony_Sorace Make sure you also teach your client how to deal with Twt Subjects and Twt Hashes. Documented at dev.twtxt.net. LMK if you have questions.
@xuu This is true!
Accessing Docker Remote API over SSH
There _were_ / _are_ also future design considerations to create a "kid friendly" social media (_i.e: under aged children_) which would strictly require the "network" to be "closed" and "protected" but that's an entirely different project altogether and I don't have the bandwidth for that right now. I do worry about how software can be used and abused both ways, but then again there's nothing stopping anyone from running a Pod or two behind an OAuth2 authentication layer/proxy or similar anyway, so ... πŸ€·β€β™‚οΈ I am open to ideas however...
@lazarus @xuu 's profile not showing as much detail here on my pod is just a missing cross-pod feature which is captured in this issue
@lazarus So couple of things... The only "privacy" toggles are two-fold:\n\nUser-level:\n \nA user can toggle whether or not their followers or followings are display.\n\nPod-Level:\n \nA Pod Owner / Operator can decide to toggle "open registrations" or "open profiles".\n\nThe twtxt.txt URI however is open by design. I'm open to feedback however, this wasn't designed to be a "closed system".\n\nThe reason @xuu 's profile doesn't display much is a different issue.
@sjkelleyjr That's pretty impressive. Good work! πŸ˜€ Before long you'll have a large audience of readers πŸ‘Œ
@adi That's the time I was up till last night too 😒 Now I'm just tired 😴
Wait... So you actually wrote a more elaborate crawler without taking a shortcut like I did using colly (_not that it really helps much_) Hmmm? πŸ€” Can we take it a bit further, make a daemon/server out of it, a web interface to search what it crawls using bleve and some tools (_API, Web UI_) to let people add more "feeds" to crawl? πŸ€”
> It’s just a reply, don’t think a lot of people saw it 😝 \n\n*phew* that's good! 😌 I'd hate for twtxt.net to get overrun or overwhelmed 🀣
@adi Do you _ever_ sleep?! 😳
I'm not sure who Tim Pool is but Twtxt and the software behind twtxt.net (jointwt/twtxt) just got talked about on Twitter here 😳 This guy (_Tim Pool_) has like ~700k followers! Looks like a journalist πŸ€”~
It _might_ be worthwhile combining the two approaches and _actually_ building a goodness to gracious search engine and crawler for twtxt? πŸ€” 🀣
Ahh I don't think your code actually _crawls_ the Twtxt space right? Just parses urls given to it and adds it to a database file?
@xuu I _think_ what I have put together last night is a little different... πŸ€” https://gist.github.com/prologic/c64a00affbf14eb3a508ce43ffce1cbb. -- What you've got is a lot more code and looks way more polished πŸ€— At a high-level what does yours do?
@sjkelleyjr Cool I’ll have a look πŸ‘Œ
@lyse @xuu Hmmm very interesting ! Let me put my code up somewhere
G'night Twtizens 😴
@lazarus Ahh I see. Yeah you can _totally_ do that and in fact I encourage it! You are right about the problems of "human socialism at scale", it doesn't scale. Keeping pods small is important in my humble opinion, but a large interconnected network of pods that is diverse is okay. There are no possible ways to create "echo chambers" here, no retweets, no likes, no algorithms. I try to keep things as simple as as "real" as possible, if that makes sense?
@prologic @etux @xuu Now I want to remove the "domain" restriction, add a rate-limit and _try_ to crawl as much of the Twtxt wider network as I can and see how deep it goes πŸ€”
@prologic @etux @xuu This is the result so far in this veery quick piece of code:\n\n
\n$ ./twtxt-search-engine\n...\nAll done!\nFound 14909 twts in 344 feeds\n
@lazarus A counter-example to this are the pods owned by @xuu and @etux where we (_especially @xuu_) frequently converse across pods on various topics of interest to us πŸ˜€
@lazarus \n\n> and if one ran their own server, can they pick and choose which instances to join with, or choose to exist completely isolated and private; msgs only visible to logged in accounts?\n\nCurious, what's your use-case? A pod can exist completely on its own, it only interacts with Twtxt feeds. If no users on _that_ pod follows any other users on any other pods, then yeah it'll be pretty isolated.
@adi All good πŸ˜€ The #hashtag is more generalised and I _beliee_ we wrote a spec for it over at dev.twtxt.net -- So yeah its fine this way, client's just have to understand "Twt Subjects" and "Twt Hashes" and then they can use this to render similar "Conversation" views. I don't recall who here, but someone built a client called tt that basically renders conversation in a curses display in "threads" just like the mutt TUI. Amazing shit really 😎
@lazarus Pods are "federated" in the sense of the word - Yes. They do not however utilise ActivityPub (_for good reasons_), they operate in "pull" mode and understand Twtxt. I also offer a free RSS/Atom -> Twtxt aggregation service at feeds.twtxt.net (_which is how I read all my news, lobsters, slashdot, etc, etc_)
@adi You _may_ be right, but there are good reasons it is this way 😎
@vain Oh damn I want one! That's awesome 🀣
@adi That's because the Conversation view will show the "OP" (_original post or twt_) effectively (_even if it has since been archived_) -- where as a search cannot.
I just built a poc search engine / crawler for Twtxt. I managed to crawl this pod (twtxt.net) and a couple of others (sorry @etux and @xuu I used your pods in the tests too!). So far so good. I _might_ keep going with this and see what happens πŸ˜€
Good question. Mostly because they form normal #hashtag(s) anyway. THe only _special_ thing about them is they also address a specific Twt -- i.e: Content Addressing. We _could_ make them link to the "Conversation" view, but then you' dloose the ability to search by that tag, say if a client screwed up, or twts dropped of the active cache, etc. Both the web app and mobile app know how to recognise a "reply to" and show the "Conversation" button and link to the right things. πŸ€·β€β™‚οΈ
@lazarus Although... THere e_could_ be others I'm not aware of πŸ€”_
@lazarus \n\n> Thanks. My mistake was trying to use twt.social for the pod name.\n \nNo problem! Twt.social is _our_ crappy attempt at "branding" and the 1-click fully managed hosted platform for those that either a) don't know how to host/run thee backend and/or b) can't be bothered. To date my pod (twtxt.net) is the largest and most active, but there are ~7 others we host on behalf of others at https://twt.social/join as well as two others which are completely independently run at twt.u53.net and txt.sour.is~
@lazarus\n\n> If I had removed the hashtag and prologic’s name would my reply still have linked to this conversation or sent you a private msg?\n\nRemoving the mentions is "okay" but the (#xxx) forms part of a conversation chain. Under the hood this software (_including the mobile app_) all really uses the twtxt.txt spec/format. We describe "extensions" we are documenting over at dev.twtxt.net
@lazarus It helps if you start following a few folks btw... Otherwise you'll have to hit the "Discover" view to see thee pod's local timeline of all local users on _that_ pod.
@adi Make me do the Turing test then 🀣
Yes I do normally, then import them into our archive where I run Plex.
@adi I am not a bot πŸ˜‹
> Hi, I just created this account but couldn’t seem to login with the android app, Goryon. does username need ? Is pod just twt.social?\n\nYou use your email as-is and you login to the pod where your account is. e.g: https://twtxt.net. Be sure to include the full https:// (_there is a known bug that errors on just a domain, where it should default to https_)
@lazarus Hello! πŸ‘‹ Welcome to Twtxt! πŸ€—
@adi That reminds me... I need to find some time to go buy new music. Our collection is aging a bit πŸ˜€
I still think it's very cool to treat a Browser's tabs as a file system though. I mean that's just really neat!
@dilbert Oh the similarities ! 🀣
Making work from home work
Does anyone know what this means on Lobsters? πŸ€”\n\n> Url is an unseen domain from a new user\n\nI even tried grokking the source code that powers Lobsters, but I don't know what this means 😳
And as you know I'm _very much_ anti-advertising in general πŸ˜€
@sjkelleyjr In your recent Console 35 I see you have a sponsor? "Ethical Ads". I had to go disable my network-wide ad blocker (AdGuardHome) for a moment to have a quick look. Can you tell us a bit more about it in your own words? I'm curious, but I'm also not sure...
@agusandriputra Haha 🀣
@antonio Pretty much anything you want at this stage. It's basically a full root Alpine shell (_sandboxed of course_). The only catch is that it isn't persistent (_yet_), that'll be the next thing I work on, is how to persist "sessions" if you will. What sshbox is is basically a small SSH server written in Go that invokes box another tool written in Go that sandboxes the inbound session/shell session into a container.
@agusandriputra Yeah my strategy is to just stay away from humans 🀣
@sjkelleyjr Good strategy! I read them every week! πŸ˜€
@sjkelleyjr Yeah when I read about TabFS it was really intriguing! Really awesome use of FUSE πŸ˜€
@off_grid_living Yeah @xuu and I are working on this πŸ‘Œ
@niplav Ues you should! Alao teach it about Twt Subjects and Twt Hashes
@niplav oh I see 🀣
@niplav Remember though there are more users than are on that list 😁
@niplav Yeah that’s my strategy too, although if more users join or spin up pods it becomes a bit easier
@lyxal What?! 😳
@felixp7 Hmm I’ve noticed that too. I’ll try to repro πŸ‘Œ
Anyone good with distributed file system design?
@felixp7 Do we need to do something like what micro.blog does? Automatically offer to convert your writing to a longer blog post?
@felixp7 yeah I think the notion of privacy with state actors as a joke, however privacy from bad actors is far more valuable.
@a0z0ra Hello! πŸ‘‹ Welcome to Twtxt! πŸ€—
@antonio It's actually not really simple at all! 🀣 The idea I have in mind is to have an instance of sshbox running on a uLinux VM. The tricky part is to work out how to persist the sandbox that you effectively end up with when you SSH in. You can _try_ this right now if you like by using your Github username, for example: ssh -p 2222 prologic@150.101.179.238
@antonio Cool! I'll let you know when it's ready for a "test drive" 🀣
@oevl @felixp7 Interesting viewpoint. I _probably_ agree with this. I worked at once of those big 5 too a few years back and whilst you're not technically doing "nothing" per se, you are doing things that don't really promote innovation or help people.
There's a thread on Hacker News asking about decentralised Twitter alternatives. My own response to this here
@goodbytes I _think_ the certificates expired on my mail server, for some reason they either don't or didn't auto-renew. It's fixed now. The Request invite token form works again! πŸŽ‰
@off_grid_living Rain
@vain Veru nice! πŸ‘Œ
@support @goodbytes Yes I’m around! You mean the form at https://Twt.social ?
@goodbytes Hello there! πŸ‘‹ Welcome to Twtxt! πŸ€—
@salad Hey! πŸ‘‹ Welcome to my Twtxt pod! πŸ€—
@vain you mean from the dog as well as the cockatoos? 🀣
@robgrant Yup 😁 Slowly but surely! 🀣
@robgrant Hey there! πŸ‘‹
This is how noisy they are!\n\n