# 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 6513
# self = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3434
# next = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3534
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3334
@mckinley Thank you! I didn't even know about signing and encrypting XML documents. Right, RSS is a little bit messy.

Unfortunately, the autodiscovery document in one of your linked resources does not exist anymore. What annoys me in Atom is the distinction between <id> and <link>. I always want my URL also to be my ID, so I have to duplicate that – unnecessarily in my opinion.

Also, never found a good explanation why I should add <link rel="self" … /> to my feeds. I just do, but I don't understand why. The W3C Feed Validation Service says:

> […] This value is important in a number of subscription scenarios where often times the feed aggregator only has access to the content of the feed and not the location from which the feed was fetched.

This just sounds like a very questionable bandaid to bad software architecture. Why would the feed parser need access to the feed URL at this stage? And if so, why not just pass down the input source? Just doesn't make sense to me.

Also, I just noticed that I reference the http://purl.org/rss/1.0/modules/syndication/ namespace, but don't use it in most of my feeds. Gotta fix that. Must have copied that from my yfav feed without paying attention what I'm doing.

Your article made me reread the Atom spec and I found out, that I can omit the <author> in the <entry> when I specify a global <author> at <feed> level. Awesome! Will do that as well and thus reduce the feed size.
We had a nice sunset a few minutes ago:

Sunset
@off_grid_living Wow, this is a heavy beast. Since it's made of fibreglass I didn't imagine its weight being that high. I clearly have no expertise in this realm. :-)
@off_grid_living Oh no, that's quite a dirty job. I'm glad that we have a sewer system in the town, that doesn't need cleaning by me. But great mobile crane.
@thecanine Run, forest, run! Yup, nice. :-)
@eaplmx Yeah, that's bad. :-( The prices here are also super high, but they're slightly declining again. Not much, but a wee bit. So there is hope.
@abucci Oh no. :-( That was actually meant as a joke. Keeping my fingers crossed.
@prologic @movq Thank you! Oh wow, this is a really nice picture, mate! Yeah, the early photographer catches the sunrise. :-D I actually don't know which one it is, but I reckon it's the left one, probably the highest peak you can see, even further left than your arrow. But maybe that's some other mountain in the foreground. Not sure.
@carsten Oh, you talk about the "Serienbrief", didn't know that's called "mail merge" in English. :-) Now that makes sense. Luckily, I never had to use this.

In all our meeting invitations the audience is allowed to see who's also invited, so a simple invitation is enough.
@carsten Hm, what did you have to do? I can't think of a situation where I wanted to merge multiple e-mails into one and send that back.
Holy crap, this was bloody amazing! Left shortly after five o'clock this morning. The full moon was illuminating everthing nicely. Saw plenty of satellites again and, even better, two shooting stars. Two! Fucking awesome! The forest was dead silent, except for an owl tu-whit tu-whooing. Super cool. Walking through the fog patch was very nice, it looked unbelievably beautiful with the moon light. There was just no chance getting this on photo.

And then watching the incredible sunrise from the top of my backyard mountain. Today was one of the best sunrises I've ever experienced. Easily in the top ten, photos don't do justice at all. Not even close. It was nicely red 360° around me, which is quite rare in my opinion.

Sunrise

Another early hiker showed me that we could even see the Zugspitze in the alps, Germany's highest mountain at 2962 meters above sea level. It's the light lavenderish thing in the distance, that look a bit like clouds:

Zugspitze in the alps 175 km away

Conditions have to superb in order to be able to see that far, 175 km. I've actually never witnessed that before. My dad just told me that he'd seen it once in his life, my mum never, happens very few times a year.

Up top it was very windy and cold, I was glad to bring a spare t-shirt, scarf and beanie. My camera battery died a few times on me today, also during video recordings. I muted the rushing noise of the wind and set to bird's twittering from last year.
@abucci Now, are you still on a repair mission?
@carsten That's odd, the readme and license files claim MIT, but the script says GPL.
@akoizumi Wow, that's an interesting chart. Quite some forking going on.
Thanks, @marado. Unfortunately, it's limited to US paper size, that's no good for over here.
@prologic @movq @eaplmx Exactly, a physical thing that you can actually touch and turn over. :-) I'd like to hang that thing in size of about DIN A3 or A2 on a wall. It would be best if I could use 4:3 ratio, though. Custom calendars are a common thing over here and are often used as christmas presents.
@prologic There are online photo calendar services out there where you can customize your own calendar, basically by just providing the images. But ususally these calendars are by month, so each page is a full month, allowing for 13 photos in total, including the cover. What I'm looking for is a calendar where you have a page for each day, whatever you call that, giving me 366 photo opportunities. That's gonna get really thick, though, so maybe that doesn't exist for that reason. And it would be quite expensive, too. So maybe a week calendar (one photo per week) would be a compromise.
@prologic Me neither. :-)
@movq Hmm, never noticed this. But I usually don't highlight stuff. Yes, STFL is unmaintained by the official developers and this is the official fork, that also contains a few bug fixes. Newsboat must be the last program, that uses STFL. In the long run, STFL will be replaced with something else. That's the plan at least.
Yet another combination that makes for a great sound: https://www.youtube.com/watch?v=mi106DZJhuQ If System Of A Down were from India
This mixes surprisingly well, I like it: https://www.youtube.com/watch?v=_xpb0_GXkV8 Yodel Metal
@movq Hmm. What color scheme are you using? I'm basically using the boring default one. And yes, probably sounds much easier than it will pan out.
It's this time of the year to start calendar material selection. Gawd. A mate already made a preselection of roughly only 400 pictures, each assigned its month already. Does anyone know of a service that creates a day calendar? No chance for me to select just twelve photos. Otherwise I have to create multiple ones, just wild animals, just sunsets/-rises, just other skies, just landscapes, just macros etc. Also, any good software that helps with selecting the best takes?
@abucci That made me think of think of https://www.youtube.com/watch?v=5t_tgiWatvs#t=25s :-D
@movq Hahaha, that is really cool! :-D In your case the name makes actually sense. That's not the case at all at my work.
@movq Can't go wrong with that. Happy experimenting! :-)
Yesterday's XKCD is incredible: https://xkcd.com/2694/
@movq They actually can and it's their revenge. :-D
@prologic GNU's Not Unix, Not Unix, Not Unix, Not Unix, Not Unix, Not Unix, …can't finish it…, Image Manipulation Program.

The same goes with random code names, they're even sillier than abbreviations in my opinion. At work even teams give them super random names, so you've not having even the slightest chance of guessing what they do or whom to contact if a problem arises. Luckily, my direct work mates also hate this shit and we just call us after our component. Sometimes I think unrelated team names are just in place to avoid having to support their broken rubbish. If nobody finds you, you're not bothered.

If there's a glossary, it's not too, too bad. You'll learn the abbreviations eventually. But it's just normal and like everywhere. Every trade has its technical terms and that also includes abbreviations. They need to be chosen carefully, though.
@movq Must be something like that. Get some popcorn and sit back. :-D
@movq Oh, what a beautiful red flag from that OpenBSD dude. Holy cow. Better stop using it.
Bwahahaahaaahaaaahaaaaa, un-fucking-believable! Lego bricks do not fit on the studs of a Lego shoe by Adidas. But Loz bricks do, they're just 3/4 the size of a standard brick. German video by Der Held der Steine: https://www.youtube.com/watch?v=5vofqkQ3bxM
@eaplmx @mckinley @movq Yup, same here. I started out with RSS feeds, because that's all I knew. After hearing about Atom feeds, bit by bit I switched everything to Atom. But that's too long ago, can't remember the details anymore. So gleefully waiting to read some sound facts.
@prologic Mission accomplished, ta.
@movq Just randomly ask them whether they're interested to found a band with you. ;-)
@abucci @movq @prologic Thank you mates! Yes, sun was cooperative, can't complain. I only noticed the bronze lady when I looked at the photo at home. On site I was just after the greens. :-) Haha, that's a great looking tree, prologic! ;-)
@mckinley What a mention! :-D Yes, super fishy contradiction.
Prepared with a cloth bag, we pocketed a bunch of free quinces on the way home. Sun was out, but it's getting cold these days. Just 10°C and when the sun hides, temps drop rapidly.

Shadows of my mate and myself when enjoying the view to Mt. Rechberg
@movq Perfect. Thanks for checking.
@carsten Ah, that's an old machine. Yep, if the shopping cart leaves the supermarket area, aka the parking lot, the trolley is at an illegal location. But this happens here as well. Back in the days more often than these days I'd say. When I hear iPhone, I think of fake colors. Hmm. Anyways, time to go for a stroll and try to beat the rain.
Just rotated my feed again, hope everything still works. I automated the splitting of older months from my main feed into dedicated archive feeds. But I still have to touch my main feed by hand. I gotta refactor my code base and write some tests before I trust a fully automated mechanism.
I'm just speculating, @prologic, I've actually no idea either what's the typical Netherlands here. But I like that photo very, very much, @carsten. Lovely colors, the orange and brown contrast the white, gray and black very well. And then the unusual, almost weird, but interesting subject. Great shot. At first, when I didn't enlarge the photo, I thought that this was taken at night and was illuminated by a street light for some reason. Maybe because of the time at posting and the, comparatively speaking, dark colors.
@mckinley Ah, now I see, Newsboat is in fact your control center. Thanks for the explanation. My plan was to make ybeuter also easily interfacable with other input sources. Like when getting a video suggestion by IRC, e-mail or whatever. But I actually never got that far. Atom feeds are just by large THE biggest ingestion source.
@mckinley Thank you, glad you liked it. Yes, having the videos locally enables me to watch them at any point in time. This was even more important in the past when my internet connection was not fast enough and everything took forever. Germany, a third world country when it comes to internet.

When starting ybeuter, it actually enqueues all non-downloaded entries automatically. So I just have to press s to start downloading. But at the moment I usually just dequeue all and reenqueue a few selected ones, because there are so many entries. :-/

I bet a program to get all URLs from unread articles out of _~/.newsboat/cache.db_ would be super simple. The only thing is, lately I do not want to watch all videos anymore, so this would leave me with a bunch of wasted traffic and disk space. So I don't mind the extra manual work. Sounds like you're not as picky or have a better set of channels to follow. :-) Launching MPV would also happen from within Newsboat, right? Otherwise marking articles as read becomes cumbersome I imagine, when the matching article needs to be found in the article list first. This program, that downloads all required videos found in Newsboat's SQLite database and removes them once marked read, that would be a cronjob? No user interaction required, did I get this right? Sounds like a cool idea.

For syntax highlighting I used Kate. Just selected the appropriate language and then exported to HTML. It works well, but requires a bit of clicking around in Kate and copying over into Vim. That's exactly what I have already done 15 years ago. For your use case, where you publish articles regularly, something scriptable like Pygments might be better suited, though._~
@prologic Yes. The one he used to transport his new washing machine. ;-)
@carsten @prologic Cool cargo bike. ;-)
@mckinley Ah, makes sense. Yeah, publishing is often not as instant as one thinks. :-)
@carsten You have to bring your own hardware? What the hell! @eaplmx Yeah, great comic strip!
@mckinley As promised, I finally just finished writing about my YouTube video consumption setup: https://lyse.isobeef.org/online-video-setup/ It took way longer than I thought.
@eaplmx Always light. Only terminals are allowed, in fact have, to to be black. I find dark on light much more readable than reversed.
@carsten Yeah, I reckon only the date on the page claiming the 1st is wrong. The Last-Modified HTTP response header of the HTML page is even a tad behind, indicating another quick fix, such as correcting a typo or something. But that's totally fine. And in a few days nobody cares about exact days anymore anyways. Was it a week or month before or after? Just doesn't matter. I thought it was just interesting to see three different dates on my end. ;-)

I haven't noticed any anomalies with the Atom feed, but he switched from RSS to Atom a few weeks ago. So I don't follow the old RSS feed anymore.

@eaplmx Oh yes, time is fun. ;-) Certainly have to look at your links in more detail later.
@prologic I mean enabling myself to get access to work related systems on my private machine. It's the first step towards doing work stuff after calling it quits or even in the holidays. It's hard enough to get a healthy work life balance. And the other way around, too. I don't trust my work computer with corporate rubbish policies and remote admin access enough to log in my private systems. Although I'm fairly conviced our admins would never do that, it still feels too dodgy.
@mckinley Interesting, the URL https://mckinley.cc/notes/20221102-no-search.html indicates it was published on 2nd of November, but the page itself says it was already done on the 1st. To confuse myself even more, Newsboat renders the timestamp in my local timezone, making it even the 3rd. So I reckon just the page timestamp is off. :-)
@eaplmx German twts will win. :-D When looking at the number of bytes.
@prologic I would never ever mix up private and work stuff like that.
@prologic At least over here that would be summer for sure. But I know, you Aussies like being cooked alive. ;-)
@prologic Thanks!
The moon:

Moon
@carsten @akoizumi Yep, modernc.org/sqlite is what I have used once exactly for that reason. No complaints.
@movq Phew, blessing in disguise!
@prologic Ta!
@abucci Hm. Lots of languages offer different programming styles. Anyways. @eaplmx Yep, that's a good start. It's still valid in my opinion. But I fear abucci is looking for some more hardcore stuff. :-)
@abucci What do you mean by Python lacking a clear foundation?
@prologic I believe it originated in the C++ universe, but it can be translated (to some degree) to some other languages, too. To my understanding it boils down to everthing, that is not being intended to be modified, to be marked const. If you then try to violate unmodifiable stuff, the compiler raps you over the knuckles. I found this long FAQ about it if you want to go into the details: https://isocpp.org/wiki/faq/const-correctness ;-)

I've been hit a few times in the past with nasty bugs, because wrong variables were updated. Would they have been annotated as unmodifiable, the bugs were found by the compiler and hence prevented in the first place. So, const correctness not only helps the compiler to spot errors, but also clearly communicates to the next programmer, that something is not supposed to be updated. Yeah, the code in question was not very well engineered, super long (although I generally don't mind longer code segments per se if they're justified) and not well tested. So proper tests could have detected the bugs, too. Which I ended up writing to fix and validate. Still, const correctness is valuable to me as it adds more information about the code and the thoughts of the initial author.

And sadly, Go does not have anything like that. Okay, there's the const keyword, but it's usefulness is incredibly limited. So I don't count that. And the assignment operators := and = do not really count in my point of view either. There's too much error handling going on, so you basically always end up having to use :=, because only the first variable is new, just err was already used, so = does not work:

o
foo, err := eggs()
if err != nil {
    return err
}
bar, baz, err := spam(foo)
if err != nil {
    return err
}
Rode my bike to the dairy farm an hour ago. Luckily, you can't smell the very strong cow menure on the photos. It appears all farmers in the area decided to spread this shit everywhere.

Colorful sky when reaching my town

My attempt of getting flying birds in front of the sun^Wmoon did not pan out as good as movq's yesterday. ;-)
@prologic Yeah, this is cool. When he was installing the foot stands I thought that they had too much play, hence ratteling around for sure while being towed and instantly bangig up his paint job, but apparently, they did not. The drawbar seems to have a bit too much flex on rough roads. But other than that, this is a hell of a build. Definitely out of my legue. :-D
@prologic I'm unable to see that with Firefox. Whatever.
@tkanos Wow, I haven't heard of Hero's engine, this is cool. Well, that's not entirely correct. I've seen a photo of that apparatus many years ago, but it must have been out of context and without a proper description. I did not know it's that old.
@mckinley Cool! Now I'm wondering how my account ranks on your analysis if it did have another name that not immediately rang a bell. :-)
@eaplmx I like Go, never actually used Rust. As a friend of const correctness, I have to say that Go failed on that completely. Even Java is better on that. It appears that Rust solved this close to perfect (phrased vaguely since I just read about it), so that's a very big plus for Rust in my book. Unmutability by default is what I truly love. On the other hand, implicitly returning the last expression in Rust totally throws me off. I want explicit returns *everywhere*. Period. Random strong opinion of the day. :-)
@off_grid_living Cool! Never seen anything like that before.
@abucci @ocdtrekkie Let alone how many problems wouldn't exist if we did not have computers!? :-D
@tkanos @prologic You mean that the cert is expired?
In the kitchen there is a wonderful scent of quinces in the air.
@akoizumi Your linked shell script won't do what one expects, I reckon. The functions use $2 and $3, but there is no $1. Invoking a function will give you "renumbered" $n variables inside the function body. They are just the function arguments and therefore are different from the command line arguments outside the functions.
@akoizumi I smell an SQL injection.
@movq Woah, your photo is sick, I love it! What a magnificent shot. Birds are even cooler than leaves.

Luckily, she's looking into the distance, so no reading glasses required. ;-)

This decoration is veeery overboard. Haven't seen anything like that before in reality. Typically there is a Rübengeist, a field beet or nowadays mostly pumpkin with a scary grimace carved in and lit from the inside by a candle. They're either placed inside behind windows or somewhere outside by the entrances or garden doors. As a child carving these Riabagoischdr, as we Swabians called them, was good fun, but also a humongous mess, you won't believe. After lighting them a couple of times, they degraded very quickly. Nowadays children adopt this stilly trick or treat garbage from overseas. So turn off your doorbells!
@movq Wow. Just wow. I did not know about it either.
@abucci Very nice! :-D
@akoizumi Hahaha, I didn't think of that. :-D That showcases another famous source of trouble.
@akoizumi Are you really sure that you want to pass all the data in the query of the URL? Sneaky admin! I recommend to use a POST form instead.
@tkanos Brilliant! :-D
@prologic Today's winning number is 10.
@movq Hahaha, fits perfectly in your property minimalization concept. ;-) @justamoment Oh yeah, I'd love to have that ability to wake up by just thinking about the right time, too! As I child I also forgot to drink and eat when I was playing. ;-)
@prologic An attacker just needs to have a few peering instances. Or even just implement the protocol. With the low numbers of running yarnds at this time, to me, this seems fairly easy to achieve.
@movq @abucci @stigatle Thank you very much!

Somebody had put the glasses on her. That must have been already on Friday at the latest, on Saturday morning she already wore them. But today the glasses were gone.

Oh yes, squirrels can hiss: https://www.youtube.com/watch?v=716LcgLPN5w A little bit less frightening, mostly just banging its feet on the ground: https://www.youtube.com/watch?v=IwEgX8hG8W8 I don't see them doing that very often. Usually they just jump away. That was maybe my fifth time I've witnessed it. The first time was in summer 2018 or 2019. I was also quite puzzled when I heard it. Thought it might have raving madness because I didn't know that that's a squirrel thing.

On that hill trees indeed grow at a right angle from the surface. Looking pretty cool. And thanks to your question I now know why I like that landscape so much. I did not notice the weird growing angles when I took the photo. It's real, no trickery involved. :-)

Yup, looking at mushrooms is fun. I just reckon they are probably not edible, though. ;-)
I left at 05:20 and could have even started 15 minutes earlier. A few hundred meters into the hike and I met a hedgehog on the sidewalk. I didn't bother drawing my camera as it was too dark. After leaving the town I saw eight satellites in total, never encountered so many before. It's pretty cool when everything is dead quiet and then birds come to life and start singing. Got the last four quinces in the box and was eaten alive by mozzies at the top of the mountain. Hell, were they aggressive today, but I managed to kill a few of these bastards. Revenge!

My camera went back on me quite a lot. All photos in the beginning were total crap. Even though blurred, I had to keep some with the incredible reds. I appologize for the first two in today's gallery. It's getting better once you're past them.

Today was fairly cold, about 7°C, so I was glad to have a shirt, jumper and jacket. My shirt was soaked when I reached the summit, so I stripped it and tried to dry it in the wind. It kind of worked. But I had hoped these quick drying hiking shirts drain faster, no comparision to cotton, though. That's for sure. I find it quite strange that at the summit it feels much warmer than down at the village or forest. Even though it's windy up there but not down below. This was the same the last days. And no, after half an hour I have cooled off from the way up. I'm mostly standing around up there, so when moving down my body warms up and it still felt colder. A random guy yesterday morning told me the same.

Sunrise at the horizon

It's very nice to go out this early. Nobody's around. Just like last times, I was the very first one and it was well beyond sunrise when the next person reached the mountain top.
Glimpsing over the access log it appears yarns fetches archive feeds every hour. Can we reduce that to maybe once a day or maybe even once a week? Archive feeds per definition do not change.
@eaplmx I do. But only when I have an appointment in the morning. Such as simply having to work or wanting to go on a morning hike. It's a fairly old school standalone alarm clock, that does not have any fancy features. Neither can it receive phone calls or send e-mails nor does it annoy me with radio programs. Just show me the time and beep at me to get up. I like it.
Thank you, @prologic and @abucci! And now for a sunset to complete the day. I went on a hike again this afternoon. But I didn't reach my planned destination. Spontaneously decided to stay at a deerstand. I tried out a new path I've never been on. It kind of dead ended in the forest, so I used some animal trails to continue. Came across lots of mushrooms, quite some nastly looking ones. I also met little red riding hood.

Crazy colored leaves
@prologic On a side note, /api/v1/admin/delete with a {"hash": <hash>} body doesn't really feel REST-like to me. Why not DELETE /api/v1/twts/<hash> or whatever resource path?

Anyways, deleting remote twts from the yarnd cache and archive manually is the completely wrong approach in my opinion. It feels like a bandaid. If the twt is gone from the feed it just has to be removed from the cache and archive as well, provided that twt has not been rotated away into an archive feed. Of course this is more work, but it's the right thing to do. Software is there to help humans, not the other way around. :-)
Alrighty then! As already written, I stopped several times to take photos along the way. I reached the summit between 05 and 06. On the way back I passed my first squirrel of the season and luckily it hissed at me, otherwise I would not have seen it. It was constantly trashing around and jumping all over the place, so I only got one okay shot.

Sunrise

I also tried to get a better shot at yesterday's molehills, but lighting was just not cooperating at this early time of day.
Yes, Nginx is quite nice and straight forward most of the time, @movq. I use it myself. What the heck, did you already consider switching to a less shitty web server/reverse proxy, @prologic.
@movq Oh crap! :-( I hope you didn't park your bass guitar or other equipment underneath it. I'll keep my fingers crossed to get it fixed soon and without much hazzle.
@prologic Congratulations and have fun!
@movq Exactly, that would have been the right time regarding sunrise watching. As feared, I didn't make it to the summit in time. I had to start taking some photos from the mountain's foot. Gonna have to go through all these close to 500 photos first, though. Stay tuned.
@movq Hell, no! I hope it's locally contained and you don't have a major damage. The water is coming from the upstair neighbors I imagine, it's not a pipe that broke in your appartment?
@prologic @movq That's exactly, what I thought, too. I'll bet that you have some reverse proxy in the front anyways, so let this one serve the 503 page.
Damn, I didn't think of the return to standard time when I set my alarm clock to 06:00 last night. I'm going to miss sunrise, even if I take the bike for half of the trip. It's going to be uphill all the way. Stupid time change fuckery!
Thanks mates! @prologic The woodpecker sign is a forest preserve. Below it reads: "Please show consideration for nature and other people at Mt. Hohenstaufen and follow these rules: a) Everybody stays on the marked paths b) Dogs are leashed c) Cyclists are driving carefully and slowly" @movq The fourth photo shows a small molehill made of very dry dirt. I can highly recommend a morning hike. I'll do it again tomorrow and leave maybe 20 minutes earlier to see the initial red stripe develop in the sky. Hopefully. The weather is going to be insane again.