# 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 7058
# self = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=5852
# next = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=5952
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=5752
@xuu I added some logging when a "dead" peer is removed as I suspect this to be a hot candidate for all the trouble. https://git.mills.io/yarnsocial/yarn/commit/21538951f9dc71b9366db6dbb784a8078096a4c8 Does this yield anything?
@aelaraji @prologic Hmmm!
Just threw this RSS feed into Newsboat. The titles suck, but I hope the content makes up for it. :-)
@movq Speaking of fog, a workmate showed me his view out of the window today and you couldn't even see a hundred meters. Looked really nice! :-) We actually had a little bit of sun over here.
@movq Woah, that sun from satellite SDO is fucking sick! https://social.bund.de/system/media_attachments/files/113/859/065/836/106/300/original/95b43f7a0086476d.jpeg
I haven't read the entire specification, but I think there is a fundamental design problem. Why would someone put an encrypted message on a public feed that is completely useless to everybody other than the one recipient? This doesn't make sense to me. It of course depends on the threat model, but wouldn't one also want to minimize the publicly visible metadata (who is communicating with whom and when) when privately messaging? I feel there are better ways to accomplish this. Sorry, if I miss the obvious use case, please let me know. :-)
Clouds are hiding the planets right now, but the sky was slightly on fire before: https://lyse.isobeef.org/abendhimmel-2025-01-20/

Bush fire sunsets are the nicest
This is an absolutely amazing talk about fixing a satellite in space. Totally worth watching, highly recommended. Super great engineering! I'm blown away, this is sooooo cool! https://media.ccc.de/v/38c3-hacking-yourself-a-satellite-recovering-beesat-1
@movq Oh yeah, nice! I gotta have to check tomorrow. I keep forgetting.
@movq Yeah, that's not a lot.
@kat Only scp/rsync for me. :-) But I remember there is one server that only provides SFTP access. :-/
@andros Nope, unfortunately not. I took a look at Lisp last year (I think I used sbcl), but I haven't done anything really useful with it. I still want to give it a proper go some time in the future. I do like how flexible it can be. Rather simple, but powerful basic concepts.

What's your favorite dialect?
@kat I approve! That's how I learned HTML (version 4 at the time and XHTML shortly after) and making websites, too. Some of them are still made like this to this day. Hand-written HTML. Hardly any <div> and class nonsense. I can't remember with which editor I started out with, but I upgraded to Webweaver (later renamed to Webcraft) quickly. Yeah, this were the times when there was just a single computer for the whole family.

Free hosting on Arcor, Freenet and I don't know anymore how they were all called. Like this author, I uploaded everything via FTP. Oh dear, when was the last time I used that? And I had registered plenty of free .de.vu domains.

Being on Windows at the time, everything was ISO-8859-1 for me. No UTF-8, I don't think I've heard about it back then.

Later, I wrote my own CMSes in PHP. Man, were they bad in retrospect. :-D Of course, MySQL databases were used as backends. I still exactly know the moment I read the first time about SQL injections. I tried it on my own CMS login and was shocked when I could just break in. The very next thing I did was to lock down everything with an .htaccess until I actually fixed my broken PHP code. Hahaha, good memories.

I swear by Atom or RSS feeds. Many of my sites offer them. I daily consume feeds, they're just great.
@kat True! :-D
@movq Yes, exactly that. It's awful! And it's getting worse from my perspective. Nobody in charge is ever gonna learn anything. I figure we just fully deserve this M$ crap, every single bit. :-(

Luckily, the most important development platform still worked for me, so I could actually do something, review code, pull and push, etc. But the calls with the screenshares were nightmares. Can't see shit on such a tiny display with today's extreme monitor sizes people use. Looking at logs, hahahahahahaaa…
@movq Neat, that sounds like a clever design with a table implementation. :-)

Oh, for sure! Complexity will definitely go through the roof and beyond with optimizations, no doubt. Maybe with the very simplest of the easy ones it might be still reasonably straight forward, but I also imagine that this has the potential to escalate very quickly. :-D
Another infrastructure apocalypse day at work. Linux and Windows users were unable to reach M$ services. No Outlook, no Teams, no intranet (Sharepoint), no Azure, etc. Mac users were lucky, though. Took whoever the whole day to resolve that. Shortly before I called it quits, it worked again. I haven't read any e-mail today, used Teams mostly on the company phone, but it's the plague.

And as I've forseen the other day, we have to deliver yet another workaround hotfix, once the other team eventually gets their stuff integrated that we should rely on. Good riddance it's the weekend now!
@movq Oh, this is really awesome! :-) Hats off to you, that would take me forever to accomplish.

Haha, eleven bytes, how mean is that!? :-D But I already see you working on that as well at some point in the near future. :-)
@prologic Totally fine with me, I don't use it. I just have to when hacking on yarnd, because it phones this service.
@kat AKB48 and other spinoffs sound so great. I'm listening and whistling to them for hours now. I have no clue what the lyrics are about, but it's just fantastic music. Thanks for introducing me to them. <3
@kat Wrrrrrmmmmm, wrrrrmmm, have fun! I think I played that about 15 years ago last time or so. I never was much of a gamer, always loved to code useless stuff instead. :-D
@kat Thanks!
@prologic Those people don't read tocs.
I'm refactoring (mangling four lines of of code with assignments into one function call) and man, do I love vim macros! <3 Such a bloody amazing invention. Saves me heaps of manual labor.
Specifically those around 2:50min, 6:15min, 11:00min, 28:40min and 33:40min. :-)
@kat Cool, cool, congrats! I skipped around and noticed that you used some great background music. Do you have a list for me to look up? :-) Also, that's a nice desktop wallpaper in the end.
@movq Woohoo! You selected a turing complete instruction set, so all good. ;-)
@suitechic It's the exact opposite for me. :-)
@bender I always schedule the next appointment right away. :-) Yeah, over here, it's just winter. Nothing really surprising. But it gets us every time. I prefer the ice over the the fire for sure.

@movq That was the only time I left the house today.
Walking those few hundred meters to the dentist and home took me at least three times as long as usual. Complete sheets of ice on the footpaths, definitely ice skating territory. The dentist was caught in a traffic jam and arrived about an hour late. On my morning journey I saw two ambulance operations, one on the way there and the other one when I returned. Just 200m apart. I fear it's going to be an exhausting day for all the rescue personell.
@xuu Haha, that's cool! Be careful with reporting or they might sue you to death.
@arne Uuhhhh, more twtxt clients, very nice! :-)
@bender Yeah, looks a bit broken:

Broken
@aelaraji @movq Damn, I forgot, too! And the clouds prevent me from catching up on that. But it's really cool to hear that you were able to see something nice up there. :-)
@aelaraji Reminds me a bit of TeX which approaches pi by adding a digit with each bug fix in its version number. https://en.wikipedia.org/wiki/TeX#TeX82
@movq @prologic Yeah, you won't be disappointed. :-)
@prologic This is fricking amazing, congratulations! :-) \\o/
@prologic This is fricking amazing, congratulations! :-) \o/
That's a well done mapping of computer time scale to human time scale: https://youtu.be/PpaQrzoDW2I Matt Godbolt is also a guy that I just enjoy listening to.
@movq Hmm yeah, you're right. I should have checked for our location prior to getting too excited.

@aelaraji Yeah, a sore neck is always a win. :-P Here's nothing really to see, all cloudy. And also a bit cold at -2°C. I don't feel like standing still all that long outside at the moment. :-D
Heck yeah, that's really cool! Let's hope for a clear sky: "On the evening of 28 February 2025, all seven of the other planets in the Solar System will appear in the night sky at the same time, with Saturn, Mercury, Neptune, Venus, Uranus, Jupiter, and Mars all lining up in a neat row – a magnificent sky feast for the eyes known as a great planetary alignment." https://www.sciencealert.com/a-rare-alignment-of-7-planets-is-about-to-take-place-in-the-sky
Your code apparently works just fine. Until it @doesnm't. ;-) The shell languages are weird and having some strange properties that one is just not used to when coming from other languages.
Well, I stand corrected, pre-wrap even! https://git.mills.io/yarnsocial/yarn/pulls/1186
PSA: Yarnd operators might want to define code { white-space: pre } in their CSS themes to render things as they're supposed to look like.
@andros I love how this is coming together! :-)
@kat To improve you shell programming skills, I highly recommend to check out shellcheck: https://github.com/koalaman/shellcheck It points out common errors and gives some suggestions on how to improve the code. Some details in shell scripting are very tricky to get right at first. Even after decades of shell programming, I run into "corner cases" every now and then.

E.g. in getlyr's line 7 it warns:

echo -e $(gum style --italic --foreground "#f4b8e4" "'$artist', '$song'")
^-- SC2046: Quote this to prevent word splitting.

For more information:
https://www.shellcheck.net/wiki/SC2046 -- Quote this to prevent word splitt...

Most likely not all that problematic in this application, but it's good to know about this underlying concept. Word splitting is basically splitting tokens on whitespace, this can lead to interesting consequences as illustrated by this little code:

$ echo $(echo "Hello World")
Hello World

$ echo "$(echo "Hello World")"
Hello World

In the first case the shells sees two whitespace-separated tokens or arguments for the echo command. This basically becomes echo Hello World. So, echo joins them by a single space. In the second one it sees one argument for the echo command, so echo simply echos this single argument that contains three spaces.
@prologic Oh yeah, that's terrible, yuck! Let's not do it then. :-)
@prologic As written in IRC, several things turned me off. I don't have the energy at the moment to wrestle through. :-(
After I stripped off my clothes and turned around, I came to the conclusion that the plan to shower was cancelled at this moment. The faucet had broken right off and was laying in the tub. I noticed that the diameters of the hot and cold water pipes were surprisingly small, didn't expect that. Since the pipes were broken flush with the wall, I couldn't even determine if I had to remove the inner our outer threads, well, remains thereof, in order to attempt to repair this mess. Luckily, I was going to see a plumber mate at the christmas tree collection later anyway.

The first thing that came to mind when I woke up was that I didn't catch the logical flaw in my dream: absolutely no water was coming out of the burst pipes. The whole scenario took place in summer, so the water couldn't be frozen either.
@prologic If you've got the feed URL in yarnd's cache, you can easily look up a missing nick. If you can't find it, just show the URL (or maybe just the domain name to be halfway consistent with this @nick@domain thing that yarnd invented) and be done. It's really that simple.

When yarnds peer with each other, the odds of actually having come across that feed URL in the past are higher than with traditional clients that only have their local set of subscribed feeds. One additional improvment would be to also look at all the mentions and see if somebody used a nick for that URL and go with that.

Yeah, yarnd currently renders some really weird shit when the mention contains just a URL, but I'd call that a bug for sure.

Personally, I do not like the @nick@domain syntax at all. It looks silly to my eyes. What might have also contributed is the fact of this mentions syntax gotten screwed up so many times by yarnd in the past. But that's a totally different topic.
@kat @prologic So, a burning roll of yarn…? :-D
@kingdomcome I'm all in!
Hmm, I just noticed that the feed template seems to be broken on your yarnd instance, @kat. Looking at your raw feed file (and your mates as well), line 6 reads:

# This is hosted by a Yarn.social pod yarn running yarnd ERSION@OMMIT go1.23.4
^^^^^^^^^^^^

Looks like the first letters of the version and commit got somehow chopped off. I've no idea what happened here, maybe @prologic knows something. :-? I'm not familiar with the templating, I just recall @xuu reporting in IRC the other day that he's also having great fun with his custom preamble from time to time.

That "broken" comment doesn't hurt anything, it's still a proper comment and hence ignored by clients. It's just odd, that's all.
@movq Very cool!
tt currently supports all three forms: @<nick url>, @<url> and even the illegal @<nick>. The difference between the last two is whether the token in angle brackets looks like a URL or not. Whenever a nick is available, the nick is rendered. In case there is just a URL, it tries to resolve the nick from the subscriptions. If that also does not work, it displays the URL.
@andros Even though I'm not an Emacs user, that's really cool! :-)
@bender Hahaha! :-D
@kat Thanks!
@prologic @movq Well, the original Twtxt Specification explicitly allows for the short form with just a URL and no nick: https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html#format-specification

> Mentions are embedded within the text in either @<source.nick source.url> or @<source.url> format […]

I'd just continue supporting it, even though I don't see it all that often in the wild. I guess more common is the case where just a nick is given, which is illegal. But yarnd users seem to produce it every now and then.

What's the motivation for deprecation?
@prologic @movq Well, the original Twtxt Specification explicitly allows for the short form with just a URL and no nick: https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html#format-specification

> Mentions are embedded within the text in either @<source.nick source.url> or @<source.url> format \n

I'd just continue supporting it, even though I don't see it all that often in the wild. I guess more common is the case where just a nick is given, which is illegal. But yarnd users seem to produce it every now and then.

What's the motivation for deprecation?
@movq Woohoo, noice! Now you can ship, even sell it! :-D

All kidding aside, even though I never wrote a proper brainfuck program myself, I do like that. :-) Keep it going.
@kat The early bird… oh wait. :-D
Yeah, @bender, I absolutely love it! :-D Monty Python just rocks!

This very knight inspired me to make myself a knight helmet with opening visor out of an old washing machine sheet metal years ago for a theater play. It was really great fun, both making the helmet as well as using it during the week in the play as a silly and shady prince who got all his tracts of land by winning dubious games.

I just couldn't really hear very well in it. And if somebody hit me on the head or just slightly knocked on the helmet, it was incredibly loud. No fine craftmanship by any means and obviously historically extremely questionable at best, but it did the job well enough. One of the running gags was that I had to open the visor when I wanted to talk. Here are some photos in action, you'll find many more when surfing through the gallery:

* https://wawuwo.de/2016/woche2/montag/017.html#image
* https://wawuwo.de/2016/woche2/dienstag/019.html#image
* https://wawuwo.de/2016/woche2/mittwoch/156.html#image
* https://wawuwo.de/2016/woche2/donnerstag/008.html#image
* https://wawuwo.de/2016/woche2/freitag/036.html#image In one lunch break my page and I decided to dress up and play a game of dice against the kids. However, we used badly cogged dice. We just added a few dots of paint on one of the two dice, so that it had two fours, two fives and two sixes or something like that. I always told my opponents: "You can choose whatever dice you want. Except for the red one, that's my lucky dice!" As well-behaved children, they then selected the blue, unbiased one. And usually lost. However, I remember there was one kid that beat me with four sixes in row. :-D Although we thought, we make it halfway obvious that this game is truly not fair, it took them extremely long to figure out that we had messed with my lucky dice. When they finally did, they got super angry. Some of them were on the brink of beating me up. That was really nice to see their sense of justice kick it. :-)
* https://wawuwo.de/2016/woche2/freitag/169.html#image
@movq Woah, that's insane! Yeah, I wanted to take it easy as well, but then suddenly got 9:30 hours on the clock… :-/

Vacations were great, it took me five attempts this morning to enter my disk encryption password. :-D
An hour later and I have glued together a new batch of cardbord boxes. I've cut out the blanks several days ago, though. Easy upcycling project:

New batch of cardboard boxes
@movq Yeah, some smileys in MS Teams are as well. :-(
@movq That looks neat! In the past I always used some Jitsi instance for screen shares.
@movq I read some of them that I thought might be kinda important. But nearly none really were. I gotta try your approach next time. :-)
@movq Wow, that's cool. :-) Even witchcraft! :-D
My shoulder muscles are sore from yesterday's overhead concrete drilling. I even totalled a good drill bit. The workshop air cleaner is now installed on the ceiling. I even can plug in the shop vac directly above its usual location without having to walk over (or usually on) the cord on the ground. The shop vac hose crane had to be shortened 9cm in length in order to fit underneath the air cleaner.

Besides all the chaos in the workshop, one can actually also see the ceiling-mounted air cleaner
@aelaraji Doesn't happen all that often over here either. But I'd estimate a few times a year.
@bender I'm that kind of dude who disables all silly animations and delays. Simply don't waste my time, please. We have fast enough computers nowadays, no need to slow them back down artificially.
@movq Over-ear headphones make moving and turning around quite uncomfortable. But it looks like you're having a very calm sleep, unlike me, who likes to turn a bit on the side every now and then, too.

When I use noise cancelling devices in bed (absolutely required at scouting events), it's simple ear plugs. I got myself a big pack of 200 pairs nine and a half years ago (oh wow, didn't realize I have them this long). A lifetime supply. Especially when I reuse them two, three dozen times or so before they're worn out and don't seal properly anymore.
I received a tad over four hundred e-mails during my three and a half weeks vacation. That's actually really good, I expected way more. It just would have been nice if some bot e-mail addresses hadn't changed and hence slipped through my sorting filter rules in the first place.
@prologic True. :-)
@movq Well, congrats, I guess! :-D I never had Vim crash on me, they do a killer job on keeping it stable.
Oh no, best wishes, @aelaraji! To hopefully brighten your day a tad: Double rainbow
@prologic @eapl.me @bender I just found:

> Equilibrium problems are solved by method of relaxation numerically.
>
> – Manoj Kumar and Garima Mishra, https://www.scirp.org/html/8798.html

Reminds me of deliberately misattributed quotes from a funny German book series "Die Känguru-Chroniken", like:

> How much is the fish?
>
> – Karl Marx

I'm positively surprised there is even an English wikipedia page about The Kangaroo Chronicles. Somebody gathered a list with all of them.
@bmallred Oh no! Best of luck to restore everything. Unfortunately, I cannot provide you a copy of your twtxt feed. It turns out when the messages were gone from your feed and I refetched the now empty feed, all messages were also dropped from my local cache. :-/ But it looks like you're on something already. The message timestamps are all way off, though.
@movq @kat Agreed!
@kat Pics or it didn't happen! We were already back at 14°C today. But there might be chance of snow towards the end of the week. Let's see.
@movq Sounds about right. :-D It's now calm again.

Always noise, whichever way you loo^Whear at it. :-(
@movq This video never gets old! :-) Now I ended up on https://brendangregg.com/specials.html#rshutdown and laughing my ass off. :-D
Meh, I hit an import cycle while writing tests. Now I have to relocate some code. What do we conclude from that: don't write tests. ;-)
Where is all this wind suddenly coming from?
@aelaraji Thank you very much, glad you like it. :-) I always try to make web pages use as much semantic tags as possible and keep the HTML very simple, so that they also have a chance to look decent in terminal browsers. The logo took me a few hours to draw in all its three sizes.
@aelaraji Ta! It's just the millenia old tabs vs. spaces debate. ;-) Here's a screenshot, that also kinda serves as a preview of the ugly – yet functional – web interface:

Twtxt Feed Validator reporting two errors
@bender Magnetic-core memory. SCNR.
@movq Sweet!
@movq Oh dear. All the best of luck with that noise! And the disks.
@movq I don't use them either.
@movq Thanks! I already found it and patched it to run in my ancient Python version (no match keyword and exec(…) only allows globals and locals as positional arguments). :-) https://lyse.isobeef.org/tmp/mcalc-patched.py.txt
@prologic Excellent, working fine now. Thank you!
@movq Truly classic. :-D
@movq That sounds super useful! I always used bc and ibase=2/obase=2 for conversions. But your digit grouping is what I always lacked. I gotta switch.
@movq Yeah, the Python docs are more like a book. They absolutely shine if you have no idea and read them from top to bottom. The tutorial is baked right in. But they don't work all that perfect as cheat sheets. I also remember looking for the return types way too long in the past.

I would have thought that this could be easily improved when type hints are in place. And it sure does: https://www.tornadoweb.org/en/stable/httpclient.html#tornado.httpclient.HTTPClient.fetch
@movq It's crazy! I thought about it the other day on my hike. There are so many shady areas in winter that are fully blasted by the sun in summer.
@movq Heck yeah, they're both very lovely! I like how you can still see the full disk through the clouds in the first one.
@kat Oh cool, I wish I had a similar subject in school. :-)
I cobbled that together yesterday, @aelaraji. Since I was too lazy to write some tests, I simply hit your feed as I knew it contains two invalid lines right now. Sorry mate! :-( Next thing is to actually write some proper tests, improve the messages, etc.

Here's the code: https://git.mills.io/yarnsocial/validator

Looking forward to that, @prologic. :-)