# 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 30
# self = https://watcher.sour.is/conv/dn3tv7a
@xuu You can’t tell it from the screenshot and that’s my point. 😅 I was scaring at the screen, just like you, trying to figure out what’s going on. Then I read the spoiler on StackOverflow and, yeah, the code box actually has a scroll bar, but it’s not visible …

(So, yeah, this is more of a rant against UI design and has nothing to do with the underlying “make 2 + 2 = 5” problem. 😅)=
@xuu You can’t tell it from the screenshot and that’s my point. 😅 I was scaring at the screen, just like you, trying to figure out what’s going on. Then I read the spoiler on StackOverflow and, yeah, the code box actually has a scroll bar, but it’s not visible …

(So, yeah, this is more of a rant against UI design and has nothing to do with the underlying “make 2 + 2 = 5” problem. 😅)=
@xuu You can’t tell it from the screenshot and that’s my point. 😅 I was scaring at the screen, just like you, trying to figure out what’s going on. Then I read the spoiler on StackOverflow and, yeah, the code box actually has a scroll bar, but it’s not visible …

(So, yeah, this is more of a rant against UI design and has nothing to do with the underlying “make 2 + 2 = 5” problem. 😅)=
@movq Also as an aside, I _really_ don't know what problem we're trying to solve by adding "operator overloading" in Go. It _feels_ like Java/Python influencing the language because they can't do fancy shit like, oh I dunno, something I used to do in Python:


some_object + some_other_obj


🤦‍♂️
@movq Also as an aside, I _really_ don't know what problem we're trying to solve by adding "operator overloading" in Go. It _feels_ like Java/Python influencing the language because they can't do fancy shit like, oh I dunno, something I used to do in Python:


some_object + some_other_obj


🤦‍♂️
@movq Also as an aside, I _really_ don't know what problem we're trying to solve by adding "operator overloading" in Go. It _feels_ like Java/Python influencing the language because they can't do fancy shit like, oh I dunno, something I used to do in Python:


some_object + some_other_obj


🤦‍♂️
@movq Also as an aside, I _really_ don't know what problem we're trying to solve by adding "operator overloading" in Go. It _feels_ like Java/Python influencing the language because they can't do fancy shit like, oh I dunno, something I used to do in Python:


some_object + some_other_obj


🤦‍♂️
@prologic When I did more computer graphics stuff, I regularly overloaded + and * in C++ to allow for visually appealing multiplication of matrices and vectors and that kind of thing. Allows you to write M * v. That’s handy and very readable.

Other than that, no idea … Overloading operators can cause lots and lots of confusion. 🫤
@prologic When I did more computer graphics stuff, I regularly overloaded + and * in C++ to allow for visually appealing multiplication of matrices and vectors and that kind of thing. Allows you to write M * v. That’s handy and very readable.

Other than that, no idea … Overloading operators can cause lots and lots of confusion. 🫤
@prologic When I did more computer graphics stuff, I regularly overloaded + and * in C++ to allow for visually appealing multiplication of matrices and vectors and that kind of thing. Allows you to write M * v. That’s handy and very readable.

Other than that, no idea … Overloading operators can cause lots and lots of confusion. 🫤
@prologic When I did more computer graphics stuff, I regularly overloaded + and * in C++ to allow for visually appealing multiplication of matrices and vectors and that kind of thing. Allows you to write M * v. That’s handy and very readable.

Other than that, no idea … Overloading operators can cause lots and lots of confusion. 🫤
@movq I agree with you, matrices are _probably_ the only place where this makes sense, even then its more of a "syntactic" sugar really, because the computer sure as hell doesn't just "multiply" the two matrices together 😅 -- So like generics, I _really_ don't think we need "operating overloading" in Go 😢
@movq I agree with you, matrices are _probably_ the only place where this makes sense, even then its more of a "syntactic" sugar really, because the computer sure as hell doesn't just "multiply" the two matrices together 😅 -- So like generics, I _really_ don't think we need "operating overloading" in Go 😢
@movq I agree with you, matrices are _probably_ the only place where this makes sense, even then its more of a "syntactic" sugar really, because the computer sure as hell doesn't just "multiply" the two matrices together 😅 -- So like generics, I _really_ don't think we need "operating overloading" in Go 😢
@movq I agree with you, matrices are _probably_ the only place where this makes sense, even then its more of a "syntactic" sugar really, because the computer sure as hell doesn't just "multiply" the two matrices together 😅 -- So like generics, I _really_ don't think we need "operating overloading" in Go 😢
@movq @prologic I was working with two time.Times and wanted to say a <= b, but unfortunately, I have to write !b.Before(a). This is just awful. I hate it. I really do with great passion from the bottom of my heart. Very unreadable for my simple mind. In fact, I had to tripple check this reenacted code to find out I screwed up first. And now I even wrote it on paper to quadruple check:

![(a <= b) <=> !(a > b) <=> !(b < a)](https://lyse.isobeef.org/tmp/a-le-b.png)
@lyse Ahh that's kind of fair, but also to be fair, probably more of a "Python" thing 🤣 -- I find the explicit readability _actually_ easier to understand. If we just basically open up the "can of worms" that is "operating overloading" you can imagine the types of debugging and readability problems you'd run into right? 😅
@lyse Ahh that's kind of fair, but also to be fair, probably more of a "Python" thing 🤣 -- I find the explicit readability _actually_ easier to understand. If we just basically open up the "can of worms" that is "operating overloading" you can imagine the types of debugging and readability problems you'd run into right? 😅
@lyse Ahh that's kind of fair, but also to be fair, probably more of a "Python" thing 🤣 -- I find the explicit readability _actually_ easier to understand. If we just basically open up the "can of worms" that is "operating overloading" you can imagine the types of debugging and readability problems you'd run into right? 😅
@lyse Ahh that's kind of fair, but also to be fair, probably more of a "Python" thing 🤣 -- I find the explicit readability _actually_ easier to understand. If we just basically open up the "can of worms" that is "operating overloading" you can imagine the types of debugging and readability problems you'd run into right? 😅
@prologic I disagree. I don't expect any more readability or debugging surprises than what there are today. In fact, I believe there will be less confusion. If one wants to write bad code, it's already possible. So operator overloading doesn't first enable people to fuck up, they can already do so by abusing any other feature.
@lyse Yeah, doing that (converting a <= b to !b.Before(a)) is awful. To be fair, if there was an a.BeforeOrEqual(b), it’d be a bit better, right? Anyway, that’s still less readable than a <= b, I think.

So, hum, it does have its use cases. :)

(It’s always the same. If your goal is to write clean, readable code, then such features can be a blessing. Only problem is, “clean” and “readable” are very much subjective … Nah, I won’t start a discussion about that now. 😅)
@lyse Yeah, doing that (converting a <= b to !b.Before(a)) is awful. To be fair, if there was an a.BeforeOrEqual(b), it’d be a bit better, right? Anyway, that’s still less readable than a <= b, I think.

So, hum, it does have its use cases. :)

(It’s always the same. If your goal is to write clean, readable code, then such features can be a blessing. Only problem is, “clean” and “readable” are very much subjective … Nah, I won’t start a discussion about that now. 😅)
@lyse Yeah, doing that (converting a <= b to !b.Before(a)) is awful. To be fair, if there was an a.BeforeOrEqual(b), it’d be a bit better, right? Anyway, that’s still less readable than a <= b, I think.

So, hum, it does have its use cases. :)

(It’s always the same. If your goal is to write clean, readable code, then such features can be a blessing. Only problem is, “clean” and “readable” are very much subjective … Nah, I won’t start a discussion about that now. 😅)
@lyse Yeah, doing that (converting a <= b to !b.Before(a)) is awful. To be fair, if there was an a.BeforeOrEqual(b), it’d be a bit better, right? Anyway, that’s still less readable than a <= b, I think.

So, hum, it does have its use cases. :)

(It’s always the same. If your goal is to write clean, readable code, then such features can be a blessing. Only problem is, “clean” and “readable” are very much subjective … Nah, I won’t start a discussion about that now. 😅)
@movq Yes, BeforeOrEqual(…) would be much better than this mess, but unfortunately, it does not exist. I'm with you, a real operator is the way to go. :-) Maybe I resort to simply use Unix timestamps for this check. :-? Wouldn't call this incredibly elegant either.
@lyse Fair, but I still worry about the potential abuse we'll see from operator overloading 😆
@lyse Fair, but I still worry about the potential abuse we'll see from operator overloading 😆
@lyse Fair, but I still worry about the potential abuse we'll see from operator overloading 😆
@lyse Fair, but I still worry about the potential abuse we'll see from operator overloading 😆