# 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 61083
# self = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=34691
# next = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=34791
# prev = https://watcher.sour.is?uri=https://twtxt.net/user/prologic/twtxt.txt&offset=34591
Hello Google
@darch If that's intention, that's fine πŸ‘Œ However it is visually different to tell apart the 'In Reply To ..." with for example an actual quote:

> This is a quote...

Can we do something here?
@darch If that's intention, that's fine πŸ‘Œ However it is visually different to tell apart the 'In Reply To ..." with for example an actual quote:

> This is a quote...

Can we do something here?
Ahh I see! I'll jump on in 29mins πŸ‘Œ
Ahh I see! I'll jump on in 29mins πŸ‘Œ
@mckinley In that case maybe we should adopt the GoldMark library which I think implements CommonMark?
@mckinley In that case maybe we should adopt the GoldMark library which I think implements CommonMark?
How do I play?
How do I play?
Probably yhe sanitizer doesn't allow it πŸ€” (for web)
Probably yhe sanitizer doesn't allow it πŸ€” (for web)
@mckinley It actually did work in the mobile app Goryon
@mckinley It actually did work in the mobile app Goryon
@mckinley So... What are you proposing exactly? πŸ€” If not some kind of metadata field declaration?
@mckinley So... What are you proposing exactly? πŸ€” If not some kind of metadata field declaration?
@mckinley Looks not too bad πŸ‘Œ
@mckinley Looks not too bad πŸ‘Œ
@akoizumi Yeah there a few things that are broken but most things are okay πŸ‘Œ
@akoizumi Yeah there a few things that are broken but most things are okay πŸ‘Œ
In fact even in this Yarn, the whole Image Gallery feature that @ullarah originally did is not completely broken πŸ˜… I'll let you ponder on that for a while, but we _should_ probably do something about this before cutting a new release for sure πŸ‘Œ
In fact even in this Yarn, the whole Image Gallery feature that @ullarah originally did is not completely broken πŸ˜… I'll let you ponder on that for a while, but we _should_ probably do something about this before cutting a new release for sure πŸ‘Œ
@mckinley We've talked about this once before and in fact even tried to formalize it but in the end we couldn't agree on a way to do it or even if it was a good idea... Worth revisiting this again? Like @lyse I've also looked at JSON Feed and wasn't entirely convinced either.
@mckinley We've talked about this once before and in fact even tried to formalize it but in the end we couldn't agree on a way to do it or even if it was a good idea... Worth revisiting this again? Like @lyse I've also looked at JSON Feed and wasn't entirely convinced either.
@lyse

> We definitely need some feed normalization database, too many broken mentions out there

What if we use some kind of heuristics based on a client's cache? Or some kind of similarity search? Hmm πŸ€”
@lyse

> We definitely need some feed normalization database, too many broken mentions out there

What if we use some kind of heuristics based on a client's cache? Or some kind of similarity search? Hmm πŸ€”
@darch Also the pop-up when you click on external links in a Twt is broken. I tried to for example in the Twt (screenshot attached) and it didn't work :/

@darch Also the pop-up when you click on external links in a Twt is broken. I tried to for example in the Twt (screenshot attached) and it didn't work :/

@akoizumi Sorry man, I looked at this briefly last night when I went to bed (on my phone) but I "didn't get it" πŸ˜… Sorry!
@akoizumi Sorry man, I looked at this briefly last night when I went to bed (on my phone) but I "didn't get it" πŸ˜… Sorry!
@lyse Yeah I agree, and that does happen.
@lyse Yeah I agree, and that does happen.
It's also been merged and my pod upgraded πŸ‘Œ
It's also been merged and my pod upgraded πŸ‘Œ
@darch There are a few minor regressions. But maybe they were intentional? The "In-Reply-To" used to limit the text to some width and use an ellipsis via CSS to cut it off a bit.
@darch There are a few minor regressions. But maybe they were intentional? The "In-Reply-To" used to limit the text to some width and use an ellipsis via CSS to cut it off a bit.
πŸ‘‹ Hey all users of this pod (twtxt.net -- I just merged @darch's PR that replaces PicoCSS with SimpleCSS. You _may_ want to refresh or clear your browser cache to get the new look πŸ˜…
πŸ‘‹ Hey all users of this pod (twtxt.net -- I just merged @darch's PR that replaces PicoCSS with SimpleCSS. You _may_ want to refresh or clear your browser cache to get the new look πŸ˜…
@lyse Hmmm good points but yeah it depends on the program πŸ‘Œ
@lyse Hmmm good points but yeah it depends on the program πŸ‘Œ
Somehow I think "influence" is the wrong word here πŸ˜‚
Somehow I think "influence" is the wrong word here πŸ˜‚
@mckinley Looking better and better all the time πŸ‘Œ
@mckinley Looking better and better all the time πŸ‘Œ
be there in 5mins
be there in 5mins
@mckinley I _think_ so. Who's coming?
@mckinley I _think_ so. Who's coming?
@tkanos Haha that's amazing work πŸ‘Œ And those sort of numbers more-or-less line up with the [search engine and crawler[(https://search.twtxt.net/stats) (_which needs a bit more attention and love, maybe some more features too?_)_
@tkanos Haha that's amazing work πŸ‘Œ And those sort of numbers more-or-less line up with the [search engine and crawler[(https://search.twtxt.net/stats) (_which needs a bit more attention and love, maybe some more features too?_)_


> Bosses Think Workers Do Less From Home, Says Microsoft An anonymous reader quotes a report from the BBC

Bosses are idiots. This kind of mentality is both outdated and stupid. For _some_ of us we actually work longer hours and get more done with less distractions. Can we stop using the term "boss" and "manager" already FFS?! πŸ€¦β€β™‚οΈ Here's an idea, be a leader, help those around you, lead by example. Ugggh "middle management" 🀬


> Bosses Think Workers Do Less From Home, Says Microsoft An anonymous reader quotes a report from the BBC

Bosses are idiots. This kind of mentality is both outdated and stupid. For _some_ of us we actually work longer hours and get more done with less distractions. Can we stop using the term "boss" and "manager" already FFS?! πŸ€¦β€β™‚οΈ Here's an idea, be a leader, help those around you, lead by example. Ugggh "middle management" 🀬
@lyse Yeah I agree errors should be tested too. That's why Main() has the func Main(w io.Writer, args []string) error πŸ˜… So you _can_ actually assert on the error returned. For a CLI however, I'm not particularly a fan of logging errors to stderr too much (if at all). And re go-cmdtest FWIW a Terminal combines stdout and stderr too by default when displaying the output of a program πŸ˜… -- However I filed an issue against the cmdtest project and now I'm not so sure I want to continue using it, I _may_ as well just figure out how to run the test binary under coverage and write the tests myself in Go.
@lyse Yeah I agree errors should be tested too. That's why Main() has the func Main(w io.Writer, args []string) error πŸ˜… So you _can_ actually assert on the error returned. For a CLI however, I'm not particularly a fan of logging errors to stderr too much (if at all). And re go-cmdtest FWIW a Terminal combines stdout and stderr too by default when displaying the output of a program πŸ˜… -- However I filed an issue against the cmdtest project and now I'm not so sure I want to continue using it, I _may_ as well just figure out how to run the test binary under coverage and write the tests myself in Go.
@tkanos Yes a long time ago
@tkanos Yes a long time ago
@lyse You are right of course ! πŸ‘Œ but what we're talking about here I think it's probably very experienced program is from one language coming to another language so there isn't much learning the new patterns of such? Anyway πŸ€·β€β™‚οΈ
@lyse You are right of course ! πŸ‘Œ but what we're talking about here I think it's probably very experienced program is from one language coming to another language so there isn't much learning the new patterns of such? Anyway πŸ€·β€β™‚οΈ
@lyse Oh btw... The reason a io.Writer is left out for "stderr" is that normally I tend to just set the logging output to os.Stderr, like log.SetOutput(os.Stderr) anyway and its not usually something I end up testing. Not sure if this is the best approach, but I'm only really interested in testing the "output"(s) and either error or non-error cases.
@lyse Oh btw... The reason a io.Writer is left out for "stderr" is that normally I tend to just set the logging output to os.Stderr, like log.SetOutput(os.Stderr) anyway and its not usually something I end up testing. Not sure if this is the best approach, but I'm only really interested in testing the "output"(s) and either error or non-error cases.
@eaplmx Yup πŸ˜…
@eaplmx Yup πŸ˜…
@brasshopper Bingo! That's just it πŸ‘Œ Idioms.

That's why you keep hearing about:

> Idiomatic Go

Some years ago when I still actively developed in Python i twas:

> Zen of Python

Every language has its strengths and weaknesses, like you , I _really_ hate it when the Java or C++ crowd come bring their sillyridiculouss structures to nice languages like Go πŸ˜… (I felt the same way about Python 2.x -> 3.x too, I just couldn't write Python anymore πŸ˜…)
@brasshopper Bingo! That's just it πŸ‘Œ Idioms.

That's why you keep hearing about:

> Idiomatic Go

Some years ago when I still actively developed in Python i twas:

> Zen of Python

Every language has its strengths and weaknesses, like you , I _really_ hate it when the Java or C++ crowd come bring their sillyridiculouss structures to nice languages like Go πŸ˜… (I felt the same way about Python 2.x -> 3.x too, I just couldn't write Python anymore πŸ˜…)
@eaplmx That's right πŸ‘Œ Not just my pod of course, but across the whole network of pods, some ~16 or 20 or so. I'm only actively scraping metrics from 15 at the moment, there are more out there...~
@eaplmx That's right πŸ‘Œ Not just my pod of course, but across the whole network of pods, some ~16 or 20 or so. I'm only actively scraping metrics from 15 at the moment, there are more out there...~
@abucci yarnd1 also implements WebSub too πŸ‘Œ Pods actually peer with one another and use WebSub for "feed subscriptions" to update feeds in near real-time.
@abucci yarnd1 also implements WebSub too πŸ‘Œ Pods actually peer with one another and use WebSub for "feed subscriptions" to update feeds in near real-time.
@eaplmx yarnd actually has WebMentions support. But generally this doesn't work very well as in practise I actually find WebMentions isn't something used a lot. It also has to be supported on the other wise in the first place, which a lot of feeds just aren't going to bother with. However that is one of the advantages of using yarnd, if someone does discover and -mention you, your pod will be "pinged" and it'll show up in your "Mentions" tab even if you don't follow them.
@eaplmx yarnd actually has WebMentions support. But generally this doesn't work very well as in practise I actually find WebMentions isn't something used a lot. It also has to be supported on the other wise in the first place, which a lot of feeds just aren't going to bother with. However that is one of the advantages of using yarnd, if someone does discover and -mention you, your pod will be "pinged" and it'll show up in your "Mentions" tab even if you don't follow them.
@abucci Haha πŸ˜‚
@abucci Haha πŸ˜‚
@brasshopper That's the thing I really hate the most about programming languages and the communities that that eventually evolve around them. You end up with (as you rightfully point out) with folks from other languages come in and start touting ways to do things that may have made a lot of sense in one language but not necessary another. Standards are great and all, but they also take away the creativity that we all enjoy in this field in the first place. Conventions are better IMO.
@brasshopper That's the thing I really hate the most about programming languages and the communities that that eventually evolve around them. You end up with (as you rightfully point out) with folks from other languages come in and start touting ways to do things that may have made a lot of sense in one language but not necessary another. Standards are great and all, but they also take away the creativity that we all enjoy in this field in the first place. Conventions are better IMO.
friendlyjordies goes to court - YouTube
friendlyjordies goes to court - YouTube
@mckinley Please πŸ™ Let's see if we can get them fixed 🀞
@mckinley Please πŸ™ Let's see if we can get them fixed 🀞
πŸ₯³ πŸ₯³ πŸ₯³ Congratulations Yarn.social community!!! Today is a fantastic day! Why? Because we've reached a new milestone. We have reached a Monthly Active User (MAU) count of 100 πŸ˜… Unbelievable! 🀣 Well done all! πŸ‘

> Not that it really matters, but still πŸ˜…

#Yarn.social #Growth #MAU
πŸ₯³ πŸ₯³ πŸ₯³ Congratulations Yarn.social community!!! Today is a fantastic day! Why? Because we've reached a new milestone. We have reached a Monthly Active User (MAU) count of 100 πŸ˜… Unbelievable! 🀣 Well done all! πŸ‘

> Not that it really matters, but still πŸ˜…

#Yarn.social #Growth #MAU
@mckinley Hmmm looks like you've found genuine bugs in our Atom output?
@mckinley Hmmm looks like you've found genuine bugs in our Atom output?
@mckinley I'd say both for sure πŸ‘Œ
@mckinley I'd say both for sure πŸ‘Œ
So... This PR I cut this morning adds the basic structure for e2e cli integration tests as seen in my fancy "Hello World" greeting πŸ˜… -- What I like here is how straight forward it was to do πŸ‘Œ
So... This PR I cut this morning adds the basic structure for e2e cli integration tests as seen in my fancy "Hello World" greeting πŸ˜… -- What I like here is how straight forward it was to do πŸ‘Œ
@tkanos Oh I see what youΒ mean... Actually integrate with a Pod's API and transparently post locally and to your feed on some pod? πŸ€”
@tkanos Oh I see what youΒ mean... Actually integrate with a Pod's API and transparently post locally and to your feed on some pod? πŸ€”
@tkanos

> then yarn integration.

Just gotta implement the Twt Hash and Twt Subject extensions πŸ‘Œ I'd love to see it also have reply and fork sub-commands πŸ˜…
@tkanos

> then yarn integration.

Just gotta implement the Twt Hash and Twt Subject extensions πŸ‘Œ I'd love to see it also have reply and fork sub-commands πŸ˜…
Hmmm no we don't... We need a "## Tools" section... @lyse ? @movq ? There _might_ already be a bunch of tools we can add to a new section...
Hmmm no we don't... We need a "## Tools" section... @lyse ? @movq ? There _might_ already be a bunch of tools we can add to a new section...
@tkanos I keep forgetting where it is 😒 I _think_ we need to link it on yarn.social Hmmm do we already? πŸ€”
@tkanos I keep forgetting where it is 😒 I _think_ we need to link it on yarn.social Hmmm do we already? πŸ€”
πŸ’‘ TIL: Today I learned that there is nothing special about pkg/ inside of Go projects. It is just like any other sub-package structure you _might_ otherwise define in your project. It just adds an extra part to your imports. I _think_ it's actually confusing at best and just unnecessary typing and an unnecessary sub-structure. Just keep your packages in the top-level and be done with it πŸ‘Œ
πŸ’‘ TIL: Today I learned that there is nothing special about pkg/ inside of Go projects. It is just like any other sub-package structure you _might_ otherwise define in your project. It just adds an extra part to your imports. I _think_ it's actually confusing at best and just unnecessary typing and an unnecessary sub-structure. Just keep your packages in the top-level and be done with it πŸ‘Œ
@lyse Yeah I actually use this technique a lot in GoNix for basically all the Applets. I _think_ this makes it easier to test. The cmdtest package is kind of cool though really, it basically implements the same kind of test runner as you may (or may not) have seen in the Mercurial test suite. The test files in testdata are essentially text files that look a bit like you've run something on the console and copied pasted them. This is brilliant for e2e cli integration testing πŸ‘Œ And yes it manages to run the test binary so that coverage can also be measured which is fantastic πŸ‘Œ -- Of course this does not preclude you from writing unit tests for any other parts of your package/library that have a public facing API -- But if your public facing API is _just_ the CLI then this is a perfect fit πŸ‘Œ
@lyse Yeah I actually use this technique a lot in GoNix for basically all the Applets. I _think_ this makes it easier to test. The cmdtest package is kind of cool though really, it basically implements the same kind of test runner as you may (or may not) have seen in the Mercurial test suite. The test files in testdata are essentially text files that look a bit like you've run something on the console and copied pasted them. This is brilliant for e2e cli integration testing πŸ‘Œ And yes it manages to run the test binary so that coverage can also be measured which is fantastic πŸ‘Œ -- Of course this does not preclude you from writing unit tests for any other parts of your package/library that have a public facing API -- But if your public facing API is _just_ the CLI then this is a perfect fit πŸ‘Œ
@mckinley Kind of wondering whether you'd contribute your XLST to yarnd so we can use/apply it to all Atom feeds of the Pod's timeline and User feeds (presented as Atom)? πŸ€” Could be interesting? πŸ€”