# 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=3734
# next = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3834
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3634
@eaplmx Das ist sehr schade.
@movq Python also came straight into my mind. ;-)
Watch this advice, kids! Critical Program Reading from 1975: https://www.youtube.com/watch?v=7hdJQkn8rtA
@marado Oh, that plot introduction sounds actually funny. :-) Enjoy, mate!
Bwahahaahaaa, that's bloody hillarious! :-D When Guitarists Secretly Prefer BASS: https://www.youtube.com/watch?v=FTUbIP7Em6g
@movq That summarizes it perfectly.
@abucci Nice! Only thing left to do is to make it permanent by glueing it onto the table.
@logout I only heard about FidoNet in the Datenschleuder, never used it myself. Congrats and happy fidonetting. :-)
@marado Which one is it?
@prologic Should be super easy. :-)
@movq Oh, I clearly have no experience with water damages. And I also hope not having to deal with one. Fingers crossed.
@prologic A registry is a search engine I'd say. Maybe not that sophisticated as yarns, but easier to use. I was only referring to the format of NICK\\tURL\\tTIMESTAMP\\tMESSAGE.
@prologic A registry is a search engine I'd say. Maybe not that sophisticated as yarns, but easier to use. I was only referring to the format of NICK\tURL\tTIMESTAMP\tMESSAGE.
@prologic I didn't try it, but I really like the idea and git-appraise's go.mod looks fantastic.
@movq Wow, this is a long time!
@justamoment Combining messages from other sources into a new feed would also lead to new hashes, hence screwing up conversations badly. So this won't work with regular feeds. But I just remembered that there is a Twtxt Registry Format, that could be used. Not sure how many clients support this, though, e.g. mine doesn't. But I view lists also as a client feature.
@movq One or the other tiny snow pile is still intact!
@abucci That's how it is to supposed to look like this time of the year. Nice!
@movq Yeah! How long did they run for?
Fog and rain every now and then.

Fog over the allotment gardens
@justamoment That's really great. I also had and have some amazing workmates who taught me a lot and still do. Nothing beats decades of experience and constantly setting examples of good approaches.
@bender @prologic Thanks and enjoy! :-) It's definitely worth making. Although gingerbread works all year around, I have to say that it is much better in the colder season than in summer. Not sure why that is, but my grandma always told me that gingerbread only works in winter. I didn't believe her, so after a lot of begging she finally made me one tray in summer. It was not the same. Also when I tried it years after myself, same result. So @prologic and others in the Southern hemisphere, wait half a year for best results. :-)
@justamoment Today I learned that there is a vmax unit.
@justamoment I don't get the project idea, but it sounds like a more complex thing. Anyways, have fun! :-)

I started out with Delphi in school and played around with it at home for many, many hours. I didn't produce really useful things, but I was having a great blast experimenting. Information technology basic course in school ruined me. :-D I was very fortunate to have two absolutely great CS teachers. I owe what I do now to them.
@movq @prologic Thanks mates! It's not sharp, but here's the original for your collections: https://lyse.isobeef.org/morgensonne-2022-12-22/04.JPG
@justamoment Very cool!
We had rain, storm and sun all day long. Quite an April weather, really.

Sunset between conifers
@bender @tkanos Thanks, oh yes, it's very yummy. :-) It came out far from flat, a lot of different thicknesses, but oh well. I've already cut it up into cuboids and put it in a tin box. The thinner stuff is very crunchy and shattered into pieces when my sharp knive wanted to hit it. The thicker stuff cut beautifully. Both parts taste very great, though.

Homemade gingerbread

It's my grandma's recipe. For the dough batter

* 4 eggs
* 65 g butter
* 300 g sugar

and then add

* 500 g honey
* 675 g flour
* 1 sachet baking powder
* 1 sachet gingerbread seasoning
* 65 g grated chocolate
* 100 g grated almonds

Bake it for about 35 minutes at 160°C. I was too lazy to add a glaze (it's also extremely sweet already), but the recipe calls for

* 300 g powdered sugar
* 3 tablespoons cacao
* hot water until spreadable
Every year I forget how annoying and time-consuming it is to get this ultra-tough gingerbread dough halfway smooth on the tray.
@prologic In the first semester there was a mandatory programming course everybody had to attend. Weekly tasks had to be solved and handed in in groups of three. One good person (A)¹, one medium (B) and one with next to no previous knowledge (C). The idea was that the As transfer their knowledges to the Bs and Cs. This kind of worked, but of course the available time by far was not enough. Like any practical skill, you only learn it by actually doing it. And that just takes time. A lot of time. Those were small, basic tasks, like implementing doubly linked lists on your own, hash tables, sorting algorithms etc.

A bit later (maybe third semester?) there was a mandatory program development course where you had to write some a bit more real programs, again, in teams of three. However, you could chose your mates yourself. We had to code a desktop wine cellar management software (we named ours "Essig" – vinegar ;-)) and a tool that assisted at doing reviews in general, another desktop UI, too. Both times XML schemas were given to all teams to be used as the same data storage format.

Then in main courses there were two software internships. Team sizes were about 10-12 people if I remember correctly. The first one was an Eclipse plugin to manage softwares under test in the distributed systems department's own cluster. That was really cool, I learned a whole lot. The second one was a rather quick win for us, as we had to write a configurable poll system for the traffic department, so they could use that for their more complex traffic surveys. I didn't learn anything new except that Typo3 is one the worst products out there. It should be burned in hell.

¹: My mate was the only one remaining in the original triad in the very first week of the first semester. Not even five days in. Both his assigned fellow students realized that they had to program in software engineering and decided that this wasn't their cup of tea. No idea what those idiots thought when they enrolled. No, these weren't the only ones, it happend in several other teams as well.
@prologic In my case it's super easy, because I just do not worry about concurrent events at all. When I run the script, I'm definitely not adding to my feed. But for yarnd a mutex per feed would be my choice, yes. Or just one mutex should suffice for the current amount of users and well beyond.
Fuck me! I did not bring my camera. :'-( Today was very sunny and also foggy. Crystal clear view after the rain. This resulted in some very, very, very spectacular sceneries. So colorful everywhere, we thought it was spring. The sun illuminating stuff through fog patches, just super beautiful, happens only a few times a year. The photos taken at home don't compare at all. Not even close. Like two entirely different worlds.

Fog on the other hillside
@justamoment When I studied software engineering at the uni, they claimed they start teaching programming right from zero, so everybody who had never programmed anything before will have a chance to pick up. They did, but at such speeds that this did not really work out. All my fellow students who didn't program already at school failed or broke away. Except for maybe three people in this category.

In the first semester there were about 250 students in total, SE and CS combined. Around 50 made their diploma, I'd say. Maybe even less. In technical or science uni courses you gotta have to bring some passion. Rather great passion. Granted, not all failed due to programming, also maths and theoretical computer science were some common tough nuts to crack. However, I bet programming played often a larger role for the unexperienced students.

Bottom line is: Passion is key. You gotta have to find it interesting. Otherwise chances to success are slim. Good luck teaching your mate. Which project(s) have you settled on to tackle?
@movq Interesting, ta.
@movq Oh, you rotate it entirely. I only cut off the top section, aka the oldest messages. This helps compatibility with clients that do not support archiving, like the original twtxt client. The most recent stuff is still available in the main feed. Since I still haven't found the time to incorporate fetching into tt, I rely on the old client for that and now miss all your twts from the rotated feed. :-) Good thing you announced it, so I could check your archived feed manually for the time being. ;-) Maybe today's project will be to get rid of the original client.
@eaplmx It never occurred to me to throw away either end. Why would I? I paid for the whole thing, so I also eat it completely. I'm a Swabian after all. ;-) Except for the peel. Well, I notice this line of reasoning is not taken to its logical conclusion. But I like them best when they're still a bit harder, greenish yellow. That state probably helps to utilize everything.
@eaplmx That's a great cheat sheet.
@movq Better watch out when dealing with bananas. You might get shot in self defense: https://www.youtube.com/watch?v=ZqISLI2UQMY I always go for A as seen in this instruction video. How're you gonna open it at B without tools and getting your hands all messy?
@movq Hahaha, too bad. :-D On a positive note, it certainly speaks for your friend. :-)
@prologic The latter, it's an issue with Pixelfed's original Atom feed. It just shows they're not using their own feeds themselves. :-/
@movq Very well put. I agree on all points. :-)
Alright, found the bug. This time I ran the archive script in the directory where my main feed is located and hence specified a relative path to it, so just the filename twtxt.txt. Getting the directory with os.path.dirname("twtxt.txt") resulted in an empty string that was passed to os.listdir("") which then raised FileNotFoundError: [Errno 2] No such file or directory: ''. That in turn was transformed to None, indicating that there is no previous archive feed available. Hence no prev metadata field was generated for my main feed. os.path.abspath(…) to the rescue!

If I had used ./twtxt.txt in the command line argument, I would not have run into this problem. This is basically what I did the last times. Ran the script from another directory, so the relative path still contained some directory component when cutting off the filename at the end.

For the unit test I stumbled across [contextlib.chdir(…)](https://docs.python.org/3/library/contextlib.html#contextlib.chdir). This is very neat! Unfortunately, no Python 3.11 for me, yet. :-(
I just rotated my feed and found out that my script is not working properly. Had to fix something by hand.
@prologic tt is only a viewer. To fetch feeds, I still rely on the official but patched twtxt client. It's an entirely manual process. I reckon respecting the stated refresh interval by automatic fetches is a good thing, though. Not sure if there should be some limit on what to obey or not.
@prologic @bender Hmm, that feed's HTML is escaped twice. Luckily, I don't care about hash tags at all. Should probably write some filter to just strip it all.

Double escaped HTML article in Newsboat makes for this masterpiece of art
@prologic Hahahaha, no, it doesn't. :-D
@win0err Don't worry, I love moss very much, too. ;-) Let me suggest to have a look at @mckinley's article on why Atom is better than RSS before you go ahead and create an XML-based feed: https://mckinley.cc/blog/20221109.html Once that photography feed is ready, please let us know over here. :-) Regarding your website updates, rest assured, any updates are welcome here.
@prologic Agreed, I'd definitely love to subscribe to a Twtxt or Atom feed for his photos. Twtxt would have the advantage over Atom to easily comment on a photo or gallery.
@prologic Heck yeah, this is very cool! :-D
@win0err @prologic Yeah, the sunset is sick! My favorite so far is the "disco tent" at https://kolesnikov.se/photography/full/aurora.jpg, I never experienced an aurora, haven't been up north enough. @stigatle might see them regularly, though. Followed by the camp fire in the woods https://kolesnikov.se/photography/full/kodar-stars-1.jpg and this tree at night: https://kolesnikov.se/photography/full/pine-tree-baikal.jpg This sea shore has something magical: https://kolesnikov.se/photography/full/nemetsky-reflections.jpg Well done, keep 'em coming! :-)
You have some very lovely photos, @win0err! Being a wood gnome, I of course really like the nature ones the best. :-) I prefer your website over this pixelfeed thingy, since the latter loads soooo much longer for no added benefit to me.
@prologic The current state is not perfect, no doubt. Only very few things in fact are. Breaking compatibility doesn't make it a ton better. So I wouldn't bother. :-) I'm convinced that hard forking only increases the barrier of entry.
Woa, go easy, mate! Don't be upset, @prologic. Everybody can use whatever they want, or not. That's absolutely their free choice. From my point of view @lucidiot's statement is just like ranting about any other shitty¹ software or topic in general. Precisely like that, not more, not less. Just this time it's something you've built. I've written some of the extensions, but I don't feel offended at all. It's just an offer we make, not everybody has to accept it. That's just the way it goes. And it is good this way.

¹: like everything else, this is highly subjective
@prologic A mushroom was also my first thought. :-) Where do you going to hang this nice sunrise/-set?
@prologic It's not all that different from yarns/yarnd what this dude does. Just the gigantic Context is broken up into multiple smaller ones and also having some unnecessary helper functions for them in my opinion. But I'm all for multiple contexts. This helps to properly cut things. Please don't do it before my yarns MR is merged, though, or I have to rework that one. :-D

What's much more important in my opinion is to find an elegant way to support multiple content types. I've never seen something, that handles this nicely and kind of automatically. Especially with errors. There are probably lots of libraries out there that bolt that on, but I bet they bring in a gazillion of dependencies, so I do not consider them valid solutions.
Besides awesome wood working, that contains some even more wonderful snow sceneries. Living with Wolves at my Off Grid Log Cabin in the Wilderness - Homesteading from Scratch But he also experiences -20°C. Almost tropical over here.
@movq Thanks mate! If I hadn't taken any photos, that wouldn't have been too, too bad. When walking up that mountain I was really warm and had to open my jacket a bit. Except for that section, padded pants, a winter jacket and thicker gloves would have been nice when being exposed to the wind. Of course, I have all that gear in my wardrobe. Well, next year.

Yeah, the kids certainly enjoyed riding down that steep mountain. And so did I watching them for about quarter an hour. Luckily, the sledding hill was more on the downwind side. :-)
@bender Haha, didn't know that. I thought you made up these names. ;-)
@abucci Maybe your ghost writer? ;-)
Oh boy, I left the house at -4°C and the wind was blowing hard. Especially at the summit it was really awfully cold. In order to operate the camera, I had to strip one glove. Even though I put it back on as quickly as possible, my camera hand got so cold that in fact my shoulder tingled with icy cold. Going out was totally worth, though. Twigs were covered in two centimeters of ice crystals. Absolutely great looking stuff!

Stems covered in thick ice

The new muddy logging trails were frozen solid. So walking on them was no problem at all. In fact, I made faster progress on them, than on the snowy forest roads. In contrast to the day before yesterday, the snow on the paths was compacted quite well, so it wasn't nearly as bad anymore. Very different exhaustion level.

Three hours later I returned at -7°C. Funnily, it should warm up in the night to even 0°C. Tomorrow's supposed to reach 6°C, each follwing day a bit warmer. So the snow will be gone pretty soon. Hence, there more are many more photos than usual. Sorry for the sheer amount of material.

It's satisfying every time to instantly melt the snow with pee. You folks who don't have snow are really missing out. ;-)
@movq Ta. Not sunny at the moment, but she's supposed to come around. Looking at the cleaned up and tidied out result is rather satisfying.
@bender @prologic It's more like Lizzy has a crush on him, but since she is more simpleminded, they have a very hard time to actually communicate in dialogs. When Johnno replies, she misses the conversation context. I reckon they will only become casual aquaintances.
@akoizumi So does that mean, the website structure is too complex?
The sun was out, making for some wonderful snow scenery. Unfortunately, I didn't go out but cleaned up inside instead. Stay tuned for tomorrow, though. Sunset wasn't too bad today.

Setting sun in between conifers
@prologic That's awesome! Also, mission accomplished in having her hooked early. :-)
Thanks, @bender! :-) We will get twelve degrees this night. Negative, that is. You sure can have a bit of that. Lowest temperature so far, but it is supposed to quickly rise again. Next week maybe in the two positive digits again. Phew, 30 degrees delta, that's going to be rough.
Walking through ten centimeters of snow was very exhausting.

Snow everywhere
@movq Oh man, that sucks. :-( Let me send you some help:

Brickbuilt THW-Unimog by BlueBrixx in shitty light
@justamoment When the room is dark I turn on the light behind my monitors, so the light reflects off the wall. I can't stand a screen shining brightly in face in the darkness.
@thecanine Haha, great! :-D
@axodys Does not sound like fun at all. We got about 6-7 cm this night.

Snow on the railing and trees
@justamoment You have a hard task. Maybe let him try to reprogram wc, but if he even fails at the much simpler exam, it's going to be very, very tough.
@xuu Very nice!
@prologic Absolutely, that's easily in the top 10. I watched all the shorter episodes over the years.
@movq Ta! They must have ran out of space again. And back in the days it probably has been warmer where we are. Just speculating, I don't have my history write-ups anymore. :-)

Yeah, that was cool to watch. Although a bit uneasy, too. The first one slid down when I was on the zebra crossing at the bottom. ;-)

Extrapolating by the past years, snow will be gone completely. Let's see. I hear the neighbors shoveling. I probably do the same.
@movq twtxt.net was just down for a bit.
@stigatle As always, very lovely! :-)
@prologic Ta!

Today we got 2-3 cm snow. Very nice! On my way home one car skidded down the street even though it poked along. A convertible nearly didn't make it up the road. And an overpowered driver speeded up the hill and then also skidded when braking at the summit, surprise. Even on the footpath I spun my feet on this slippery half iced over slush constantly.
Lots of you probably know this commit already, but I haven't seen it before. Absolutely worth reading this lovely commit message: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f027338b0fab0f5078971fbe
Scrunch, scrunch. Walking over frozen leaves, grass and dirt makes quite some noises. Walking up a paddock I accidentally kicked a half bloomed dandlion and its crown catapulted away. My trigger finger was nearly lost to the cold. I will try to experiment with a thin glove next time.

Very frozen grass
@prx I always found that dark on light is much easier to read than the reverse. Nice that there is some backup for that. The only white on black thing is my terminal. Everything else uses a lighter gray or even white. However, I hang out in the terminal most of the time. But I cannot reverse the color scheme, it just looks so wrong. Habits…
@prologic It will reach -2°C as the maximum temperature. Roofs are actually a lot whiter with all the frost in real life than they appear on the photos:

Frosty roof
A bit chilly today, -8°C. And -10°C is forcast for Saturday. Maybe snow tomorrow.
@abucci @jlj Cool, you both have more snow than we have.
@movq That's exactly what I'm talking about! :-D Loriot was just brilliant.
@mckinley I don't know. Some traditions just seem stupid by today's standards. Most people get rid of the tree on or shortly after 6th Decemeber. Saturday after the 6th we as scouts collect them to throw them at the green waste site. Back in the days we always kept ours until about mid-February. Even if this decoration remains for two months, to me it feels ridiculuous to cut down a tree that grew for a bunch of years just for a few weeks of joy and then clutter it with plastic garbage (looking at you, lametta¹, christmas balls etc). As kids we read the Petterson and Findus books and then always wanted to make a tree like these two heroes: https://www.filmdienst.de/bild/filmdb/149225 But our parents rejected that idea year after year. In this house there's no christmas tree. But I also don't care two figs about religion.

@prologic Haha, locked in the server room! :-D

¹: No way not to mention German classic "Weihnachten bei Hoppenstedts". ;-)
@mckinley Here, the tree isn't put in place before the 23rd usually. In my mind also for practical reasons. When the tree is set up for a month, a lot of the needles are already gone by the main event. When kids are older, they're allowed to help decorating it. On the 24th the christ child will then sneak in at some time, that nobody knows, and put the presents under the tree. Kids are not allowed to enter the living room (or whereever the tree is located) for the whole day, so they do not accidentally disturb the work. Often, the room is even locked. After placing the gifts under the tree, it rings a bell. That's the sign for everbody to get together and have dinner. Afterwards presents are distributed. On the 25th and 26th families usually visit their grandparents for lunch and dinner and maybe even more prezzie distribution.

At least that was the procedure when I was a child. Maybe things shifted a bit since then. I reckon people are starting a bit earlier with buying trees. Probably because everybody wants to have the absolute most best looking fir without even the slightest sign of a flaw whatsoever.

In the South there is a tradition called "Christbaumloben", praising christmas trees. People show up at their friends and neighbors and laud their christmas trees. Then the owners will give them a schnaps.
@movq Yes, BeforeOrEqual(…) would be much better than this mess, but unfortunately, it does not exist. I'm with you, a real operator is the way to go. :-) Maybe I resort to simply use Unix timestamps for this check. :-? Wouldn't call this incredibly elegant either.
Interesting how much color there is still left in some areas in the woods:

Snow and colored leaves look cool

I made a poor selection on my footwear. At home in the valley there was zero snow, so I just slipped in my old shoes that I wore over the warmer seasons. The worn down sole was not adequate for the slick snow from the other hikers on the main path up the mountain. I slipped several times. Hence, downhill I decided to take the beaten trail at the back, it's a lot rougher, but the serpentines make it less steep than the main road. Skidded a few times, but didn't fall. Tomorrow I will definitely wear my good hiking boots.
@prologic I disagree. I don't expect any more readability or debugging surprises than what there are today. In fact, I believe there will be less confusion. If one wants to write bad code, it's already possible. So operator overloading doesn't first enable people to fuck up, they can already do so by abusing any other feature.
@prologic Christmas tree with prezzies, I didn't know Australia was this much ahead of us.
@prologic Must be some snowflake harvesting little wood gnome.
@xuu Haha, nice!
@movq @prologic I was working with two time.Times and wanted to say a <= b, but unfortunately, I have to write !b.Before(a). This is just awful. I hate it. I really do with great passion from the bottom of my heart. Very unreadable for my simple mind. In fact, I had to tripple check this reenacted code to find out I screwed up first. And now I even wrote it on paper to quadruple check:

![(a <= b) <=> !(a > b) <=> !(b < a)](https://lyse.isobeef.org/tmp/a-le-b.png)
@movq Quite cool! I can't recall ever being in that situation, but good to know. What would have saved me, though, is renumbering in sequence when numbered lists are all over the place. There is probably something hidden if I just dig deep enough.
@stigatle Oh, very adaptive. Hahaha, that sounds like an awesome afternoon! :-) Too good that tomorrow is the weekend. That calls for even greater fun. ;-)
@movq Thank you! Or both your glasses have one. :-D

I had to stop my experiment at daylight today. Couldn't stand wearing these glasses. It just felt too dark and strange in general. Let's see what other people report. Probably have to ask a mate to borrow his for a day and see.
@xuu Very cool! Will actually try it out on the weekend.
@prologic @darch 12 UTC is probably going to work for me. Depending on when I get up, maybe 5 UTC, too.
@xuu I just had to think about a bunch of former workmates. :-D