# 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 196324
# self = https://watcher.sour.is?offset=147425
# next = https://watcher.sour.is?offset=147525
# prev = https://watcher.sour.is?offset=147325
@jmjl Probably, but then you just spend your time tracking down abusive IP addresses or CIDR(s)and reporting them.
@jmjl Probably, but then you just spend your time tracking down abusive IP addresses or CIDR(s)and reporting them.
@prologic I asume they report it to one of the ASN's abuse addresses.
@threeoh6000 Who do you report the IP addresses to? 🤔 I just don't bother, because I don't run anything they're scanning for in the first place 🤣
@threeoh6000 Who do you report the IP addresses to? 🤔 I just don't bother, because I don't run anything they're scanning for in the first place 🤣
@threeoh6000 Who do you report the IP addresses to? 🤔 I just don't bother, because I don't run anything they're scanning for in the first place 🤣
[47°09′53″S, 126°43′21″W] Transponder jammed
Pinellas County Running: 2.07 miles, 00:08:55 average pace, 00:18:30 duration
kept it short because i did not want to push the leg too much. felt good to get out even though i could have slept in.
#running
user/bmallred/data/2023-07-12-05-31-59.fit: 2.07 miles, 00:08:55 average pace, 00:18:30 duration

#running
user/bmallred/data/2023-07-12-05-31-59.fit: 2.07 miles, 00:08:55 average pace, 00:18:30 duration

#running
user/bmallred/data/2023-07-12-05-31-59.fit: 2.07 miles, 00:08:55 average pace, 00:18:30 duration

#running
[47°09′59″S, 126°43′18″W] Resetting transponder
[47°09′43″S, 126°43′44″W] Transponder malfunction
👋 Hello @veronadko, welcome to twtxt.net, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
👋 Hello @veronadko, welcome to twtxt.net, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
Currently compiling the Dolphin emulator because the Arch package is broken. Wish me luck.
👋 Hello @leonuab, welcome to twtxt.net, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
👋 Hello @leonuab, welcome to twtxt.net, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
🧮 USERS:1 FEEDS:2 TWTS:658 ARCHIVED:65410 CACHE:2189 FOLLOWERS:13 FOLLOWING:14
@phoronix looks really good!
@xuu Aha, thank you very much! I have to look more into that in the next days.
[47°09′35″S, 126°43′55″W] Dosimeter fixed
@movq Yeah, probably. The aftermath was extremly boring, though.
@stigatle Haha, reading Norwegian is a bit like reading Dutch. If I concentrate hard enough and decipher it carefully I can make out a couple of words. Provided I have a bit of context. For example: "Dempegaffel" sounds so cool. :-) "Dämpfergabel" or more commonly used "Federgabel" is the German term for that.
@stigatle I agree 👌
@stigatle I agree 👌
@stigatle I agree 👌
I understand your thoughts on this, but I would not call it a failure - because you learned a lot from it, and lots of things worked as well.
And there are alternatives for those who needs\\wants activitypub, so I think also yarn\\twtxt benefits from you focusing on that instead of dealing with the frustrations of activitypub integration. And maybe it'll feel a bit better to put that on the backburner? :)
I understand your thoughts on this, but I would not call it a failure - because you learned a lot from it, and lots of things worked as well.
And there are alternatives for those who needs\wants activitypub, so I think also yarn\twtxt benefits from you focusing on that instead of dealing with the frustrations of activitypub integration. And maybe it'll feel a bit better to put that on the backburner? :)
@movq The best approach I've found over the years, (_just need to continue the practise_) is to; once a year, go purchase ~$100-200 worth of DVD(s), rip them and import them into Plex 👌 Fuck streaming media services!~
@movq The best approach I've found over the years, (_just need to continue the practise_) is to; once a year, go purchase ~$100-200 worth of DVD(s), rip them and import them into Plex 👌 Fuck streaming media services!~
@movq The best approach I've found over the years, (_just need to continue the practise_) is to; once a year, go purchase ~$100-200 worth of DVD(s), rip them and import them into Plex 👌 Fuck streaming media services!~
[47°09′50″S, 126°43′23″W] Dosimeter overflow
@prologic I can understand that. 😅 I’m this close to cancelling Netflix myself. There’s very little interesting content anymore (and it just doesn’t *hide* the stuff that I’ve already seen, which is very annoying). (Amazon Video is much worse, IMHO, the usability is just horrible. And it constantly tries to nudge you into paying extra for something.)
@prologic I can understand that. 😅 I’m this close to cancelling Netflix myself. There’s very little interesting content anymore (and it just doesn’t *hide* the stuff that I’ve already seen, which is very annoying). (Amazon Video is much worse, IMHO, the usability is just horrible. And it constantly tries to nudge you into paying extra for something.)
@prologic I can understand that. 😅 I’m this close to cancelling Netflix myself. There’s very little interesting content anymore (and it just doesn’t *hide* the stuff that I’ve already seen, which is very annoying). (Amazon Video is much worse, IMHO, the usability is just horrible. And it constantly tries to nudge you into paying extra for something.)
Not to mention, actually implementing Activity Pub is just so hard to get right 🤦‍♂️
Not to mention, actually implementing Activity Pub is just so hard to get right 🤦‍♂️
Not to mention, actually implementing Activity Pub is just so hard to get right 🤦‍♂️
@movq For several reasons; I think the pull based model is honestly better in every regard, the deliberate slow nature of Twtxt/Yarn is _actually_ beneficial and discovery/connections made through "people you know" is more genuine (_rather then pushing crap to randos you don't really know or have never known_)
@movq For several reasons; I think the pull based model is honestly better in every regard, the deliberate slow nature of Twtxt/Yarn is _actually_ beneficial and discovery/connections made through "people you know" is more genuine (_rather then pushing crap to randos you don't really know or have never known_)
@movq For several reasons; I think the pull based model is honestly better in every regard, the deliberate slow nature of Twtxt/Yarn is _actually_ beneficial and discovery/connections made through "people you know" is more genuine (_rather then pushing crap to randos you don't really know or have never known_)
@movq We stopped using most "streaming media" services some years ago, they just aren't worth they money 🤦‍♂️ The only one we use/have is Amazon Prime, only because we also have Prime for deliveries, etc.
@movq We stopped using most "streaming media" services some years ago, they just aren't worth they money 🤦‍♂️ The only one we use/have is Amazon Prime, only because we also have Prime for deliveries, etc.
@movq We stopped using most "streaming media" services some years ago, they just aren't worth they money 🤦‍♂️ The only one we use/have is Amazon Prime, only because we also have Prime for deliveries, etc.
PSA: You can hit “S” in Netflix to skip intros. 😅
PSA: You can hit “S” in Netflix to skip intros. 😅
PSA: You can hit “S” in Netflix to skip intros. 😅
@prologic As an outsider, I don’t really have an opinion on this (other than: twtxt.net is quite confusing with all the Mastodon posts 😅), so: Why do you think that? 🤔
@prologic As an outsider, I don’t really have an opinion on this (other than: twtxt.net is quite confusing with all the Mastodon posts 😅), so: Why do you think that? 🤔
@prologic As an outsider, I don’t really have an opinion on this (other than: twtxt.net is quite confusing with all the Mastodon posts 😅), so: Why do you think that? 🤔
I've been thinking in the back of my mind for a while now, that the Yarn.social / twtxt + ActivityPub integration was a mistake and a. bad idea. I'm starting to consider it a complete failure.
I've been thinking in the back of my mind for a while now, that the Yarn.social / twtxt + ActivityPub integration was a mistake and a. bad idea. I'm starting to consider it a complete failure.
I've been thinking in the back of my mind for a while now, that the Yarn.social / twtxt + ActivityPub integration was a mistake and a. bad idea. I'm starting to consider it a complete failure.
@apex Hey! 👋 Welcome to my pod 🤗 Also welcome @threeoh6000 🥳
@apex Hey! 👋 Welcome to my pod 🤗 Also welcome @threeoh6000 🥳
@apex Hey! 👋 Welcome to my pod 🤗 Also welcome @threeoh6000 🥳
@threeoh6000 Hello! Welcome to Twtxt 🤗
@threeoh6000 Hello! Welcome to Twtxt 🤗
@threeoh6000 Hello! Welcome to Twtxt 🤗
@threeoh6000 Thanks. :-) It's a Canon EOS 600D, ISO 100, 1/20s, F9. The lens is a "Canon EF 70-300mm F4-5.6 IS II USM".
@threeoh6000 Thanks. :-) It's a Canon EOS 600D, ISO 100, 1/20s, F9. The lens is a "Canon EF 70-300mm F4-5.6 IS II USM".
@threeoh6000 Thanks. :-) It's a Canon EOS 600D, ISO 100, 1/20s, F9. The lens is a "Canon EF 70-300mm F4-5.6 IS II USM".
**** ⌘ Read more****
👋 Hello @serzaoa, welcome to twtxt.net, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
👋 Hello @serzaoa, welcome to twtxt.net, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
@hecanjog I have a script for tmux that sets up a new if needed among other things.

http://github.com/brandur/tmux-extra

Works great with powerline.
@hecanjog I have a script for tmux that sets up a new if needed among other things.

http://github.com/brandur/tmux-extra

Works great with powerline.
[47°09′59″S, 126°43′49″W] Resetting dosimeter
I kinda wish tmux a would just create a new session if there's no session already to attach to. I probably do that once a day.
[47°09′55″S, 126°43′12″W] Dosimeter still failing
I suppose to lesson confusion I would rename Is to Because
I suppose to lesson confusion I would rename Is to Because
[47°09′32″S, 126°43′49″W] Dosimeter malfunction
So you would have:

type ErrPermissionNotAllowed []Permission
func (perms ErrPermissionNotAllowed) Is(permission Permission) bool {
    for _, p := range perms {
        if p == permission { return true }
    }
    return false
}
var err error = errPermissionNotAllowed{"is-noob"}

if errors.Is(err, ErrPermissionNotAllowed{}) { ... } // user is not allowed

var e ErrPermissionNotAllowed
if errors.As(err, e) && e.Is("a-noob") { ... } // user is not allowed because they are a noob. 
So you would have:

type ErrPermissionNotAllowed []Permission
func (perms ErrPermissionNotAllowed) Is(permission Permission) bool {
    for _, p := range perms {
        if p == permission { return true }
    }
    return false
}
var err error = errPermissionNotAllowed{"is-noob"}

if errors.Is(err, ErrPermissionNotAllowed{}) { ... } // user is not allowed

var e ErrPermissionNotAllowed
if errors.As(err, e) && e.Is("a-noob") { ... } // user is not allowed because they are a noob. 
👋 Hello @veronaeuq, welcome to twtxt.net, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
👋 Hello @veronaeuq, welcome to twtxt.net, a Yarn.social Pod! To get started you may want to check out the pod's Discover feed to find users to follow and interact with. To follow new users, use the ⨁ Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! 🤗
@lyse do you need to have an explicit Is function? I believe errors.Is has reflect lite and can do the type infer for you. The Is is only really needed if you have a dynamic type. Or are matching a set of types as a single error maybe? The only required one would be Unwrap if your error contained some other base type so that Is/As can reach them in the stack.


As is perfect for your array type because it asserts the matching type out the wrap stack and populates the type for evaluating its contents.
@lyse do you need to have an explicit Is function? I believe errors.Is has reflect lite and can do the type infer for you. The Is is only really needed if you have a dynamic type. Or are matching a set of types as a single error maybe? The only required one would be Unwrap if your error contained some other base type so that Is/As can reach them in the stack.


As is perfect for your array type because it asserts the matching type out the wrap stack and populates the type for evaluating its contents.
Mount iOS devices on GNU/Linux, great for photo backup: https://github.com/libimobiledevice/ifuse
🧮 USERS:1 FEEDS:2 TWTS:657 ARCHIVED:65390 CACHE:2180 FOLLOWERS:13 FOLLOWING:14
@reddit_world_news Finally.
my next goal is to save up to buy this one. its been my dream since we got our dog.
@lyse Now that’s rare, I don’t think I’ve ever seen anything like that. 😲 Very thick atmosphere, eh …
@lyse Now that’s rare, I don’t think I’ve ever seen anything like that. 😲 Very thick atmosphere, eh …
@lyse Now that’s rare, I don’t think I’ve ever seen anything like that. 😲 Very thick atmosphere, eh …
@movq Yeah, right, clicking feels much more tiring. I reckon the mouse could easily be two centimeters thicker and longer as well as one or mayer two centimeter higher. Then it would fit naturally in my hand.
[47°09′33″S, 126°43′59″W] Raw reading: 0x64AC5531, offset +/-4
Crazy red sun this evening. Photos don't do justice. Just a weirdly colored disk in the sky.

Not the moon
@lyse Clicking is the reason why I’m not using a vertical mouse: You have to “pinch” the mouse between thumb and index finger (or ring ringer for the right button). I find that to be pretty exhausting over time. With a regular “horizontal” mouse, you can almost use gravity to issue a click. 😅 Requires much less energy.

But other than that, vertical mice are much more comfortable …
@lyse Clicking is the reason why I’m not using a vertical mouse: You have to “pinch” the mouse between thumb and index finger (or ring ringer for the right button). I find that to be pretty exhausting over time. With a regular “horizontal” mouse, you can almost use gravity to issue a click. 😅 Requires much less energy.

But other than that, vertical mice are much more comfortable …
@lyse Clicking is the reason why I’m not using a vertical mouse: You have to “pinch” the mouse between thumb and index finger (or ring ringer for the right button). I find that to be pretty exhausting over time. With a regular “horizontal” mouse, you can almost use gravity to issue a click. 😅 Requires much less energy.

But other than that, vertical mice are much more comfortable …
@movq Ah! I started with 3.5 inch floppy disks, used them for a long time and then went straight to CD-ROM. I remember buying one of the last floppies available in town when basically nobody else wanted them anymore. Except me. :-D I put some of my Delphi projects on them and gave them to class mates.
Whoops, forget to include the photo: Vertical mouse
@xuu Wouldn't my Is check for array equality, too? At least that would be great for unit tests. Like this untested piece of code:

func (e PermissionsNotAllowedError) Is(target error) bool {
if t, ok := target.(PermissionsNotAllowedError); ok && len(e) len(t) {
for i := range e {
if e[i] != t[i] {
return false
}
}
return true
}
return false
}

In the meantime I just ditched the second thing altogether and use the simple ErrPermissionNotAllowed. Maybe I come back when I actually work on the UI stuff.

Now writing this it occurs to me that I could do an explicit – second – unit test assertion for array equality and implement my Is and As functions with a type check only and don't care about the exact array. Like that (again, untested):

func (e PermissionsNotAllowedError) Is(target error) bool {
_, ok := target.(PermissionsNotAllowedError)
return ok
}

Yeah, that's probably the way to do it.
_
[47°09′02″S, 126°43′44″W] 3735 days without news from Herve
@movq Yiha, this is awesome! We had a nice sunrise today. But the view to the East is obstructed by all sorts of stuff. So not worth taking any photos.
I'm now testing a vertical mouse (not chorded, unfortunately :-() and my mate wanted to see a photo, that's how it happened. I've never used or seen a vertical mouse in person before. It's surprisingly unvertical. Maybe, just 70-80°, I expected something closer to 90°. I don't have very large hands, but the mouse could be a bit bigger for more comfort. Clicking any button feels a bit weird. Let's see how that goes. But I also notice, that I don't use the mouse that often. Mainly the keyboard.
I wanted to turn on my camera and the power button slipped under the case. The casing lifted up and one piece of plastic near the zoom lever broke off. Luckily, that happened at home and so I could fix it with a small slotted screw driver after a few attempts. The camera appears to still work. Phew.