# 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 196325
# self = https://watcher.sour.is?offset=147358
# next = https://watcher.sour.is?offset=147458
# prev = https://watcher.sour.is?offset=147258
@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.
@reddit_world_news Erdogan can fuck off. always messing with everyone, but does not like it if others mess back.
👋 Hello @veronahoo, 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 @veronahoo, 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! 🤗
@eapl que problema tuviste con las sesiones y pk decidiste implementarlo con php??
[47°09′07″S, 126°43′39″W] --no signal--
On my blog: Developer Diary, Wyoming Statehood https://john.colagioia.net/blog/2023/07/10/wyoming.html #programming #project #devjournal
Pinellas County Cycling: 6.55 miles, 00:07:19 average pace, 00:47:55 duration
running errands and a bit of cross-training since the leg wasn't feeling right
#cycling
user/bmallred/data/2023-07-10-05-21-43.fit: 6.55 miles, 00:07:19 average pace, 00:47:55 duration

#cycling
user/bmallred/data/2023-07-10-05-21-43.fit: 6.55 miles, 00:07:19 average pace, 00:47:55 duration

#cycling
user/bmallred/data/2023-07-10-05-21-43.fit: 6.55 miles, 00:07:19 average pace, 00:47:55 duration

#cycling
@prologic no worries :) and as you know I appreciate the work you put into it!
[47°09′57″S, 126°43′52″W] Raw reading: 0x64ABAC71, offset +/-4
**** ⌘ Read more****
[47°09′38″S, 126°43′17″W] Raw reading: 0x64AB9051, offset +/-1
Yes, I use it for passport.
🧮 USERS:1 FEEDS:2 TWTS:656 ARCHIVED:65379 CACHE:2194 FOLLOWERS:13 FOLLOWING:14
@stigatle Sorry 😢 the protocol is kind of complicated and the code I wrote is probably not perfect 🤦‍♂️
@stigatle Sorry 😢 the protocol is kind of complicated and the code I wrote is probably not perfect 🤦‍♂️
@stigatle Sorry 😢 the protocol is kind of complicated and the code I wrote is probably not perfect 🤦‍♂️
[47°09′23″S, 126°43′56″W] 3734 days without news from Herve
I had issues with the current activitypub implementation here on yarn (people could not follow me properly) and I cannot see their posts and stuff like that, so I decided to host activitypub separate from here.
So I will turn it off here - and use this site has as before - but without activitypub turned on, and then do all my activitypub stuff over on that other service.
I can be added through: @stigatle
This does not affect the development of the desktop client, I will still work on that, I'm here to stay :) I just need a way to follow the others properly on the other services..

I did not want to join mastodon, and I did not want something complex to host, so I decided to set up Snac2 - https://codeberg.org/grunfink/snac2 . It's super lightweight, easy to set up, and worked out of the box for what I was looking for.
👋 Hello @veronabri, 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 @veronabri, 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! 🤗
[47°09′20″S, 126°43′06″W] Saalmi, retransmit, please
****
No os confundáis, los gatos somos los amos. ⌘ Read more****
You can have Error return just "permission not allowed" if the array is empty. It would print the same as the first.
You can have Error return just "permission not allowed" if the array is empty. It would print the same as the first.
Why not just always use the second one?
Why not just always use the second one?
@movq wow, very nice!
On my blog: Affirmative Action in Gentle Terms https://john.colagioia.net/blog/2023/07/09/affirmative.html #harm #politics #quora #rant
[47°09′18″S, 126°43′10″W] Transfer 25% complete...
Photo of a sunset, number 3172893712978:

[![Sunset](https://movq.de/v/2ce2c1f92d/.html-index-thumb-IMG_5178.JPG.jpg)](https://movq.de/v/2ce2c1f92d/IMG_5178.JPG)

A few drops of rain shortly after, but not a lot …
Photo of a sunset, number 3172893712978:

[![Sunset](https://movq.de/v/2ce2c1f92d/.html-index-thumb-IMG_5178.JPG.jpg)](https://movq.de/v/2ce2c1f92d/IMG_5178.JPG)

A few drops of rain shortly after, but not a lot …
Photo of a sunset, number 3172893712978:

[![Sunset](https://movq.de/v/2ce2c1f92d/.html-index-thumb-IMG_5178.JPG.jpg)](https://movq.de/v/2ce2c1f92d/IMG_5178.JPG)

A few drops of rain shortly after, but not a lot …
@lyse

> I never heard of SuperDisk before

IIRC, one of the great features about this drive was that it could read ordinary floppy disks as well – unlike the Iomega ZIP drive. Also, even though that Wikipedia article only shows *external* drives, we had *internal* LS120 drives. So, unlike the ZIP drive, the LS120 really was a backwards compatible thing and you could use it just like a normal floppy disk drive. (Plus, at 120 MB, it was a little larger than ZIP at 100 MB.)

For a very brief moment, it looked like LS120 was the new “standard”. 😅 IIRC, they even put them in pre-assembled PCs that you could buy in shops (anyone remember “Vobis”?). It quickly became irrelevant, though, since CD-RWs offered a much larger capacity soon after …

> Do you still listen to that old file every now and then or do just keep it around for sentimental value?

Nah, it’s just one of the many old files that I still have lying around. 😅 (I don’t really listen to that kind of music anymore, tbh.)
@lyse

> I never heard of SuperDisk before

IIRC, one of the great features about this drive was that it could read ordinary floppy disks as well – unlike the Iomega ZIP drive. Also, even though that Wikipedia article only shows *external* drives, we had *internal* LS120 drives. So, unlike the ZIP drive, the LS120 really was a backwards compatible thing and you could use it just like a normal floppy disk drive. (Plus, at 120 MB, it was a little larger than ZIP at 100 MB.)

For a very brief moment, it looked like LS120 was the new “standard”. 😅 IIRC, they even put them in pre-assembled PCs that you could buy in shops (anyone remember “Vobis”?). It quickly became irrelevant, though, since CD-RWs offered a much larger capacity soon after …

> Do you still listen to that old file every now and then or do just keep it around for sentimental value?

Nah, it’s just one of the many old files that I still have lying around. 😅 (I don’t really listen to that kind of music anymore, tbh.)
@lyse

> I never heard of SuperDisk before

IIRC, one of the great features about this drive was that it could read ordinary floppy disks as well – unlike the Iomega ZIP drive. Also, even though that Wikipedia article only shows *external* drives, we had *internal* LS120 drives. So, unlike the ZIP drive, the LS120 really was a backwards compatible thing and you could use it just like a normal floppy disk drive. (Plus, at 120 MB, it was a little larger than ZIP at 100 MB.)

For a very brief moment, it looked like LS120 was the new “standard”. 😅 IIRC, they even put them in pre-assembled PCs that you could buy in shops (anyone remember “Vobis”?). It quickly became irrelevant, though, since CD-RWs offered a much larger capacity soon after …

> Do you still listen to that old file every now and then or do just keep it around for sentimental value?

Nah, it’s just one of the many old files that I still have lying around. 😅 (I don’t really listen to that kind of music anymore, tbh.)
@lyse Let’s hope so. 🥳
@lyse Let’s hope so. 🥳
@lyse Let’s hope so. 🥳
Pinellas County - Long run: 10.02 miles, 00:11:40 average pace, 01:56:59 duration
rough.

- didn't get a lot of sleep
- didn't hydrate enough the day prior
- hot and humid
- just didn't feel like it
- leg didn't feel right
#running
Pinellas County - Long run: 10.02 miles, 00:11:40 average pace, 01:56:59 duration
rough.

- didn't get a lot of sleep
- didn't hydrate enough the day prior
- hot and humid
- just didn't feel like it
- leg didn't feel right
#running
Pinellas County - Long run: 10.02 miles, 00:11:40 average pace, 01:56:59 duration
rough.

- didn't get a lot of sleep
- didn't hydrate enough the day prior
- hot and humid
- just didn't feel like it
- leg didn't feel right
#running
Pinellas County - Long run: 10.02 miles, 00:11:40 average pace, 01:56:59 duration
rough.

- didn't get a lot of sleep
- didn't hydrate enough the day prior
- hot and humid
- just didn't feel like it
- leg didn't feel right
#running
[47°09′43″S, 126°43′13″W] Raw reading: 0x64AA5AF1, offset +/-1
👋 Hello @adhalanay, 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 @adhalanay, 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! 🤗
[47°09′52″S, 126°43′21″W] Transfer aborted
🧮 USERS:1 FEEDS:2 TWTS:655 ARCHIVED:65372 CACHE:2206 FOLLOWERS:13 FOLLOWING:14
[47°09′55″S, 126°43′50″W] Waiting for carrier
user/bmallred/data/2023-07-08-13-44-23.fit: 01:20:10 duration

#swimming
user/bmallred/data/2023-07-08-13-44-23.fit: 01:20:10 duration

#swimming
Pool Swimming: 01:20:10 duration
chasing my son in the lazy river
#swimming
user/bmallred/data/2023-07-08-13-44-23.fit: 01:20:10 duration

#swimming
[47°09′45″S, 126°43′01″W] Transponder still failing -- switching to analog communication
On my blog: Free Culture Book Club — Someone Like You https://john.colagioia.net/blog/2023/07/08/glider-ink.html #freeculture #bookclub
[47°09′39″S, 126°43′40″W] Transponder malfunction
👋 Hello @serzzor, 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 @serzzor, 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! 🤗
**** ⌘ Read more****
@movq Happy birthday! On to the next twelve years. :-)
[47°09′45″S, 126°43′53″W] --interrupted--
[47°09′36″S, 126°43′27″W] Dosimeter fixed
🧮 USERS:1 FEEDS:2 TWTS:654 ARCHIVED:65370 CACHE:2207 FOLLOWERS:13 FOLLOWING:14