# 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 6512
# self = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3834
# next = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3934
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3734
Fingers crossed, @jlj! And you didn't have one, @xuu? :-D What the heck, seriously?
@movq Oh, even Fraktur! It took me brute force to decypher "Heute", mainly due to the "H". Both "n" and "u" look identical to me, so my brain tricked me into believing that it of course has to be an "n". Looks quite beautiful, keep it coming.
@off_grid_living I can't tell, are these steps brown or purple? What kind of wood is that? Nice garden!
This is completely deranged, but hilarious, I love it. Grinder Discs That Shouldn't Exist | QUAD BLADE: https://youtu.be/qJEgi2tNJqI
@bender Great work, looking good, mate! I hope the third round goes equally smoothly.
@ychbn This is an interesting read, very cool!
Heck, yeah! Look who came to pay me a visit!

Bushy tail in the tree, who could it be?

I should have closed the door to avoid the heat escape into the video frame.
@stigatle Noice! Especially the first one looks like miniature wonderland. :-)
@eaplmx @abucci See, that's why they created RFC 2550: https://www.rfc-editor.org/rfc/rfc2550
@movq Nice, even not too little!
@abucci Great introduction to threat models! I'd love to have seen that when we were about to create one ourselves at work. :-)
@movq A bit of snow, indeed:

Blackbird in the snow

Don't know if that's uncommon or not. Haven't attended so many funerals (yet).

The surprisingly powerful sun was out and made the -3°C really not too bad at all. In direct sunlight it felt much warmer than yesterday. There were even more trees piled up next to the forest road this time. The dude had cut down really a lot. His forwarder made super deep (easily 50-70 cm) mud holes everywhere. Looking quite creepy now.

The neighbor district had about 8 cm of snow, we only got 4 cm I'd say. Quite weird, because they're actually a bit lower lower in altitude. It was great fun, though, walking through the snow.
That's an interesting list: https://en.wikipedia.org/wiki/Time_formatting_and_storage_bugs?useskin=vector
@mckinley Phew, the German Wikipedia still looks the same. What sucks in the new English layout is that I have to open a stupid menu first in order to switch languages. To make things worse, at most eight items are visible at the same time. Menus should be illegal in the web. Thanks for the ?useskin=vector workaround!
Thanks, @prologic. In the beginning my hands were quite cold, indeed. But after a bit of walking, I heated up. Even had to strip my scarf on the ascend.
@prologic Ah, you were lucky this time. In contrast, @bender, not so much, though. :-D There, have this nice hook.
IRC.
Like last Thursday, I went on a hike after lunch and enjoyed the 0°C cool daylight. Gotta make use of the flextime, I can work when it's dark. :-)

When passing the sheep I smelled all of them. It was a surpringly pleasant odor in the air. Sheep often stink a bit, but not this time. Forest workers made use of the slightly frozen ground and pulled out plenty of trees. I even came across a working forwarder. Photos turned out all shitty, though.

Entering and leaving the mountain village, I ran into a funeral. I was glad to wear my good hiking boots, the path up the mountain was one thick sheet of ice. Very hard to walk on. At the summit, the Berg-Back-Buben ("Mountain baking boys") were active and put their baked goods into the oven. Never witnessed that moment before. That smelled really, really awesome.

Sheep chewing grass on the snowy paddock
@prologic At least that's the goal. However, progress will not be made until the weekend, that's for sure.
@prologic Cool! Is it dangerous?
@stigatle Not too bad, not too bad.
@movq @prologic It's been quite a while, but Ada could be a candidate in my opinion. Still quite compliated for beginners, though.
@prologic Tview itself ships a list and tree widget, but they're extremely limited. List items must all have either one or two lines, tree items can only be one line long.
Oh no, there are a few holes in Git: https://x41-dsec.de/security/research/news/2023/01/17/git-security-audit-ostif/
@prologic Ah, that only provides graph stuff. Unfortunately, doesn't help me.

I could paint on a second screen and then copy over the cropped segment that should be in view. I think I've seen this happening in urwird for scrolling. I could be wrong.
@eaplmx We have snow again, too.
@movq Absolutely. Stopped for today, have to consult my pillow. @prologic What's that? I don't find anything useful with that term.
I'm currently writing my own tview tree table widget where items can be multiple lines long. Turns out scrolling and offsets are quite a challenge. I might have to revisit my mental model. Building this on top of urwid was much easier as I could use some existing widgets as building blocks like a list that already implemented scrolling for arbitrary long items. Tview on the other hand doesn't offer me anything that I can reuse for this undertaking. Starting from scratch.
@eaplmx I see. The calendar package is also really amazing if you want to render calendars: https://docs.python.org/3/library/calendar.html
@movq Hahaha, hübsch!
Aha, @carsten! „Im Gegensatz zum ICMP bei IPv4 ist ICMPv6 zwingend für den Betrieb von IPv6 nötig. Ein generelles Blockieren von ICMPv6 auf der Firewall führt dazu, dass IPv6 nicht funktioniert (vgl. RFC 4890).“ – https://de.wikipedia.org/wiki/ICMPv6 (Translation for the English speaking world: In contrast to ICMP for IPv4, ICMPv6 is mandatory for the operation of IPv6. Generally blocking ICMPv6 on the firewall causes IPv6 not to function.)
@carsten Something is off with your server. I have a lot of trouble with the official twtxt client's Python AsyncIO to fetch your feed for a few days. Always get a ServerTimeoutError('Connection timeout to host https://yarn.zn80.net/user/carsten/twtxt.txt'). It turns out, both IPv4 and IPv6 addresses are resolved and the v6 one is preferred. However, connecting via v6 (2606:54c0:5540:18::14:2a4) fails and an attempt with v4 (81.172.204.59) is not made at all, the whole thing just aborts. :-( (I believe this is an error with aiohttp.)

curl, on the other hand does fall back to v4 automatically and then suceeds in getting your feed. It also attempts v6 first if I interpret the verbose output correctly. I temporarily monkey-patched the twtxt client to force IPv4 usage and was able to download your feed.

Now the really weird thing: Your firewall seems to block ICMP for v4, but not for v6. ping4 returns nothing, ping6 happily replies back. What the hell?
@carsten Looking forward to the photos. :-)
@prologic Thanks!
@eaplmx ISO 8601 calendar weeks for the win, indeed! Week 1 contains 4th January, basically the first week where most days are in the new year rather than the old year. Which calendar week definition is used in Mexico?

What was the issue you had?
@justamoment Hahaha, what a great story. :-D I never had anything close to this happen to me.
Shortly before setting, the sun came out and converted the grayscale to colors:

Again a view you've seen plenty of times in the past, sorry.
@stigatle Hahaha, that sounds like a nice lazy Sunday. For you, that is, not so much for your dog. ;-) I'm enjoying the rain from the indoors this weekend.
Using Go build tags for mocking (external) APIs is an interesting idea I never thought of before: https://rentafounder.com/alternative-mocking-in-golang/
@stigatle Very nice! Cool, you still have ice. Looking just gorgeous.
@prologic Ta! For some reason my mate thought the exact same and suggested to improve it: https://wf.isobeef.org/i/verbesserungsvorschlag.jpg ;-) Although I have to say I like the quietness in real life.
@prologic @justamoment Go for it! ;-) That's definitely not my domain.
For the fact that from two o'clock dryness was forecast, it, however, again powerfully poured from half past three… Luckily, we did not witness the predicted 50-60 km/h wind gusts.

Trees in the lovely evening light
@bender Thanks! Sure: from imagerecognition import count; print(count('sheep', '~/waldspaziergang-2023-01-12/01.jpg')) → 317
Used the daylight to go for a two hour stroll and continued working after dark. It was very cloudy all day long and also quite windy, hence the 10°C felt much colder. All the rain of the last days raised the water levels in the creeks and made some paths very muddy. Especially when tractors and forwarders were hitting the log skidding trails. Yep, it's this time of the year when the forest clears.

Grazing sheep
@mckinley I probably should fix my feed proxy. At least update the entry with the known duration once actually published. Should also be easy to delay that entry until it's eventually available.

@movq Hmm, that's even weirder. Must have to do something with this silly "you must regularly publish a video or else our algorithm punishes you".
@movq Yeah, that's a little bit annoying, but I just enqueue them, so I can download them at some later point in time.

I reckon nobody uses their own feeds, neither the channel operators nor the YT developers. The question is, are those videos available in the web UI, too? I never checked, actually. I just know that unlisted videos do also not appear in the feed either, which is a pitty.
@abucci Now that's an interesting idea! :-) I don't have a use case for it, but I reckon some others might enjoy that.
@abucci Exactly, the twt hashes and hence conversations explode and fall apart. Other than that, merging feeds works fine. If we had defined twt hashing differently in regards to the url metadata field ("use lexically last found URL for hashing from now on" instead of "very first URL wins"), it would have been quite straight forward. But that change is incompatible.
@darch Yes, in the current state this tt is totally useless to everybody else. :-/ Still a lot of work required.

Thanks for clarifying, I'm now only following you on your own server. :-)
@prologic I was actually thinking about starting tt from scratch in Go a couple of times over the years. But it's a hell lot of work. Not sure yet whether I really want to do that. And I would lose all my work on my parser, but oh well. Switching to Jenny and Mutt seems more realistic. I never tried any of the two, but it sounds extremly appealing. The only disadvantage of Mutt to me seems to be this explicit opening of a longer twt because the subject is limited in length. I reckon I would miss that from tt. No idea, though, again, I never gave it a try yet.
@eaplmx That's a very good question and I cannot answer it in short. That's something that I could easily spend on hours and days thinking about it. Especially if one wants to look also into the transitive things. But there you go, these are the things that immediately came into my mind:

The internet brought me so much and sometimes too much information and entertainment. It's a good and a bad thing at the same time. Good in the sense that I can easily learn new stuff or look things up, but also bad in the sense of wasting time that could have been used otherwise with something more important. Like building physical stuff or get some sleep instead of watching videos and listening to audio books. Not having to leave the house to order tools etc. is amazing, especially if you can get the exact stuff you want for a fraction of the cost it would be locally. This of course turns all the transportation into a nightmare on the other hand. Working from home is also a tremendously big bonus, I never want to miss that. Never. The sheer excess in offerings can sometimes be overwhelming and cast a damp on me.

By far the positive stuff outweighs the bad influence for me, do doubt at all. Just imagine how many physical copies of encyclopedias of all kinds I would have in my bookshelves if I couldn't look up stuff online. My work career would not have turned out anything like that because I might not have persued programming without the ability to access the knowledge in forums. Starting my woodworking hobby is definitely Matthias Wandel's fault.
Thank you, @prologic, I try to. :-)
@darch @prologic As briefly mentioned in https://twtxt.net/twt/23pnlzq, I still rely on the official twtxt client (that I patched up on a few ends) for downloading and managing subscriptions. So my config contains:


[following]
darch = https://twtxt.net/user/darch/twtxt.txt
darch@neotxt = https://neotxt.dk/user/darch/twtxt.txt


My own client tt only acts as a viewer into the twtxt reference implemenation's cache and config. When replying to a thread, tt adds in all the participants of the thread as mentions. Since darch wrote from his account on neotxt.txt and not the one on twtxt.net my client of course added a mention with the second nick from the config above. I forgot to remove my chosen nick suffix and that's how it all came together. Ideally, the mapping would be reversed to use the URL as key, but that change would require even more temporary patching and I want to get rid of the original implementation eventually anyways.
@prologic I can't make it this week because the scouts are collecting christmas carcasses. I don't see how webfinger helps, though (I also don't have a clue how it works). Clients have all data they need in my opinion.
This day started out beautifully foggy but also very sunny and then quickly turned dark. At the bottom we still saw the streaming flag at the summit, but when we finally made it up, low hanging clouds had moved in and we didn't see anything. Oh well. Still a very nice hike.

Morning sun at the edge of the forest
@prologic Clients can always just ignore the nick part when displaying and render their local nickname if they want to. This discussion just started because the configuration data model in the original twtxt client is implemented with a map of nick to URL. So nicks need to be unique. Hence, I have two entries, "darch" for twtxt.net and "darch@neotxt" for neotxt.dk.

I might miss something, but I'm not interested in standardizing anything for URL lookups by nick, that's completely up to the client. I only rarely type an entire mention verbatim, my client does it for me. It adds in all feeds that participated in the thread when replying. I reckon yarnd does (or did) the same.
@darch Fix what exactly? My twt? Easily done, but then your reply would point into the nirvana.
@prologic Ta!
@darch I forgot to edit the nick before submitting. That's the price to pay if there are multiple feeds with the same nick. ;-)
Today, we went on a path section that I've never been on before. There was rain in the morning, about 10°C when we left. Cloudy and windy, not too bad.

View from Spielburg down to Hohrein
@movq Heck yeah, this is really awesome!
@justamoment @carsten I never played a lot. Just a few games got me hooked for a bit. But that was all just temporary.
@carsten Use containers, they said. Everything is going to be much easier with them! Glad you sorted it out.
@abucci Randomy closing tabs reminds me of the Linux OOM killer. ;-)
@darch Looking great! :-)
@prologic Back in the days my mates and I only played Minetest, an open source clone of Micecraft, that performed heaps better than the original, but also did not include all features from its model. More than sufficient for us who enjoyed and valued the building part. At least my appeal was to have unlimited construction blocks. We also operated our own server to build stuff together, like our CS building as best as we could. It's been way more than a decade, though, when we had to compile it from source ourselves, not sure how well it works nowadays.
Too bad, @justamoment. :-( Of course, I now jinxed it, but I'm super happy that they actually stopped.

I wouldn't have watched the firework rockets, @thecanine, when my original hiding spot would have paned out. I hate loud noise in general, but it's the exploding firecrackers that really piss me off.
@abucci I don't even know how to see how many I have. My number should certainly decrease, too.
Right, @thecanine. I don't remember exact previous sizes. Thought this was a new record. :-) Anyways, happy pixel placing!
@prologic Yeah, the spec isn't too bad. What's really nice actually, that you do not have to touch already written archive feeds when rotating again. With a doubly linked feed list to jump forward (# next = hash filename) that would be a wee bit more complex. The only thing to simplify with the current approach would be to strip away the hash and only use the filename (but that's really not an issue). The bugs definitely have to do with my great programming skills. ;-)
@prologic Thanks! I was comparing it to 31st December 2022, but 1st January 2022 (is that what you're referring to?) might have also been boring. Don't remember how that first sunset in 2022 was. At least I didn't take any photos that day, so chances are it wasn't very spectacular. ;-)
@thecanine Uuuuhhh, eleven pixels, good job!
@movq Hahaha, I'm super surprised how well they turned out, too! Didn't expect anything remotely like that. :-D It was the camera's magic fireworks program, that autofocused for four seconds and then took the best shots or I don't know exactly how that works. Only the photos from the closest village turned out to be any useful. Towns further away were too blurry and shaky with the zoom. Used a bench as makeshift tripod. Kept about 4% of footage.

I wish it would have become better here, too. But people were firing from all guns, like they had to catch up on two or three years at once. Not that last year was heaps better, but this time it was one of the worst. I just live in a stronghold of full jerks.

During daytime it was better than the last years I'd say, but when it went dark, the bang rate drastically increased. Definitely gonna use earplugs for the next two weeks in bed, that's for sure.
@movq Generating the September 2022 archive feed somehow referenced itself as previous feed (including its last twt hash) rather than the one from August. Don't really understand how that could happen, but I now explicitly ignore the about to be newly rotated archive feed when looking for the most recent already present archive feed.

I also have to look into something related tomorrow. The script will always generate a new archive feed with each run, even though the minimum number of months to keep in the main feed was not reached. Example: Main feed contains everthing from 1st October 2022, executing "archive main feed and keep at least last five months in main feed" will still generate an archive feed for October 2022. Obviously, nothing should have happened at all.

With the last rotation I started version controlling my feed files in git. My archiver script also still doesn't touch the main feed. Currently, it only writes the archive feed files and I have to remove the rotated twts from the main feed and copy the printed prev = filename hash line by hand. Without that manual step I would not have caught the reference error.
The first sunset of the year was very boring compared to yesterday. When it started, I thought that it will have some potential, but it did not unfold. Still, not all too shabby.

Colored sky behind a chimney
@axodys @justamoment I hear you, here they sure do have supplies. :-( This afternoon plenty roads looked like garbage trucks exploded, similar to what a mate had taken a photo of, roads and footpaths were covered deeply: https://libera.ems.host/_matrix/media/v3/download/matrix.org/FijKasAEPPInsqkDQxEhKsOt/ima_7d213f9.jpeg

I used earplugs this night and only woke up once. Highly recommended.
Found and fixed yet another bug in my twtxt feed archive rotater.
@prologic Ta!

Oh dear, in the forest it echoed like crazy. Absolutely horrible. The spot I had in mind did not turn out at all, so I went somewhere else. In-ear headphones and earmuffs on top worked like a treat. Only when someone shot with his tank, I heard something very dull. You could see how the gunpowder cloud formed over the towns. When I stepped out my hiding place I smelled all this crap. The streets look like a total disaster, there is rubbish lying around from garbage pigs everywhere.

Hope you had a nicer night, healthy new year!

Shit littering the environment
After 05 I thought it was over, but then suddenly: red. Thanks @movq and @abucci! Yeah, same to you, komm gut rüber! War is raging for hours already. No kidding, there are not even ten seconds of no explosions. At least every two minutes it sounds like they're blasting entire rows of houses. The greatest fuckwits live around me. I'm sure all the Ukrainian refugees will love being reminded of their memories… Mankind is allowed to perish with pleasure.

Does anybody know, did some country declare war on New Year's Eve in the past? In my mind there's no better time to invade a country largely unnoticed for quite some time. Warlords, you're welcome.

Time to pack some warm tea, gingerbread, audio player and ear defenders to head out into the woods to search for some slightly quieter spot. I fear I won't find something suitable.
Fuck me, how awesome was this sunset!? Fantastic end of the year, no fireworks can keep up this night, that's for sure. Well, fireworks is very lame in my opinion anyways.

Bloody wonderful sunset
Yesterday, the view was fantastically clear. However, it was too dark already in the early afternoon, so no photos survived my inspection. Here are a hand full morning and evening sky photos instead from the day before instead:

Messy dabs of different colors and gradients in the evening sky behind different trees
When you open the window to air out and the incoming air feels warmer than room temperature…
Great, I just noticed that a podcast feed broke and all download links also 404 now. Some absolute professional admin was at work. I also cannot find the new feed on the website. Only links to listen on Shittify and fuckTunes. Alright, time to unsubscribe.
@prologic Thanks, it definitely is, as you can see by the missing taster pieces. ;-)
@prologic You are right, grep -i bogan .config/twtxt/twtxt*txt resulted in only a single match. :-)
@prologic Thanks! What do you mean? It's not a German but an Aussie term if I'm not mistaken.
More honey and an additional egg made for a wee bit more spreadable gingerbread dough. Not by much, though. For all of you who wanted to see how it came out:

Wonky cut gingerbread on the tray
@prologic @justamoment Yet another unpronouncable project name, congrats. :-D The content column is way too narrow in my opinion, I basically have to horizontally scroll all diffs. Also the log view could benefit from a much wider view so that commit subjects are not split into several lines. That would help readability. All in all, way too much waste of screen space in my mind, but that might be inherited from legit, I don't know. I wonder how the twtxt part pans out, currently I don't see how that helps and simplifies any workflows. Let's see. Happy hacking!
Oooph, my stroll was very tiring today. It felt like I moved forward with just half the regular speed. But when the sun set, the crazy colors gave me new power and I was suddenly back on track at my normal pace.

Sunset behind a small forest

Even with just a jumper I was constantly overheating when the sun was out (mostly behind the clouds, though) at 8°C. When I reached the summit, I was drenched in sweat. The wind up there helped me to cool off. Plenty of people were out today, it's been months that I saw this many on the mountain and forest paths. It just turns out that a lot of people are off work right now.

Some bogans already set off firecrackers, there was a section on my way home that smelled awfully like gunpowder. Bwä, disgusting! I wish all this stupid fireworks shit was banned. Stuff keeps exploding while I type this… I really hate these weeks around new year.
@mckinley Haha, this domain has also quite a crazy website.
@eaplmx Granted, most words only have one genus. The ones with multiple genders are actually quite rare. But one can have a little bit fun with them. Except of loanwords German pronounciation is very straight forward, just like French if I remember correctly from school. As always, with dialects it shifts a bit or sometimes quite drastically.
@prologic Only the devil knows, lol.
@justamoment And with another undo the ornament is ready to go back on the tree (maybe tape required).
@eaplmx German is definitely not the easiest language to learn.

Fun fact, some words can have different meanings depending on their genus. German differentiates between three: masculine (definite article "der"), feminine ("die") and neutral ("das"). Examples include "die Kiefer" (the pine tree), "der Kiefer" (the jawbone), "das Steuer" (the steering wheel), "die Steuer" (the tax) and "der Band" (the volume of a book), "das Band" (the ribbon/conveyor belt/tape), "die Band" (the music band; English loanword, but feminine article is probably assigned because of the German terms "Kapelle" and "Gruppe" for it). Luckily, you can easily infer what is meant from context most of the time.
@mckinley Nice!
@prologic In German we have a wonderful saying: Cloud heißt Cloud, weil sie Deine Daten klaut. That translates to: Cloud is called Cloud because it steals your data. Both "cloud" and "klaut" (steals) are pronounced the same.
@abucci Ta.
This is a great analysis of the PR bullshit by LastPass, very interesting. https://palant.info/2022/12/26/whats-in-a-pr-statement-lastpass-breach-explained/ Seriously, I will never understand why anybody would put passwords in a cloud. That's just super ridiculous.
We just had a very nice sunset. Initially, I wanted to take photos of the blue, lavender and violot feather clouds and then it suddenly developed these crazy yellows and even sicker reds.

Birds heading into sunset