# 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 6139
# self = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=5916
# next = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=6016
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=5816
While I now have a somewhat working fix for it in yarnd (https://git.mills.io/yarnsocial/yarn/pulls/1232), I also have the feeling that I should fix literal formatting in lextwt as well. This also uncovered more bugs I believe: https://git.mills.io/yarnsocial/go-lextwt/pulls/28

But then there is also the question why the textarea is populated with @<url> in the first place rather than @<nick url> or yarnd's own @nick@domain/@nick syntax. It indeed has to do something with whether I follow the mentioned feed or not.

Anyway, something to investigate for future Lyse or maybe @prologic and/or @xuu. G'night!
Righto, must be some caching thing that's going on, too. Now, with JS enabled and a feed that I follow, hitting "Reply" actually automatically enters @nick@domain in the textarea. Submitting it correctly writes "@ in the feed. Let's dig…
@bender @prologic I can reproduce this locally, too. But it doesn't matter if I follow the feed or not. With JS enabled, hitting "Reply" opens a textarea with @<url>. Submitting this writes @<domain url> instead of @<nick url> in the feed.

However, when I have JS disabled, "Reply" jumps to the top of the page, but the the textarea is at the bottom. So, after scrolling down, the textarea is not filled with anything. Which is expected I reckon. Entering @nick@domain or just @nick resolves to the correct @<nick url> in the feed.
@prologic @movq I sadly agree.
@movq So true! Either I'm hanging around with my direct teammates socializing in person in a meeting room or some other workmates are making so much noise in the open-plan office that I cannot concentrate at all. In any case, completely unproductive. :-D Luckily, I very rarely have to go to the office.
My hike today started off with a nice great spotted woodpecker right after the town sign. The -1°C didn't feel all that cold in the sun. Even on the flat, I had to open my jacket with the sun on my back. The biotope got dug over, that's now looking really sad. And they also fell a few large chestnuts. Surprisingly, there was actually snow on the mountain. Not much, maybe around three centimeters at most. It was melting and falling down the trees, which looked really cool. I enjoyed it a lot: https://lyse.isobeef.org/waldspaziergang-2025-02-04/

Crazy ice crystals on twigs
@bender Bwhahahahaaaahaaaahaaaaahaaaaaaa! :-D Oh man, my cheeks are hurting and eyes are watering. :-D I love it!
@falsifian Yes! The first part about the history was my favorite. Not that the second one about finding life on Mars wasn't interesting, no, not at all! But maybe it's just that Earth is a bit more relatable. :-) I'm sure they will dig up something eventually.
@eapl.me Hahahahaa, this is truly brilliant! :-D The file descriptor slider is funny as heck! :-D
@movq The light pollution map reports red for my town. That's fairly accurate, I'd say. The view from home is not all that great. Yeah, I can see Ursa Major and a bunch of other stars. Maybe even some satellites. But there's definitely a sky glow at the horizon.

When I leave town, I can see a bit more. However, it doesn't compare to the alps or even some rural parts in Australia. The latter was by far the craziest I've ever seen in my life. Looked like a space telescope photo in person. Soooooooooooooo many stars and the band of the milky way was easily visible to the naked eye. Up until then, I didn't even know this was remotely possible down on earth. Absolutely stunning. :-)
@sorenpeter It depends on your requirements. If you just want to put your code somewhere for yourself, simply push it over SSH on a server and call it good. That's what I do with lots of repos. If you want an additional web UI for read access for the public, cgit comes to mind (a mate uses that). Prologic runs Gitea, which offers heaps more functionality like merge requests.
That was a super interesting talk, I can recommend it: https://media.ccc.de/v/38c3-microbes-vs-mars-a-hacker-s-guide-to-finding-alien-life
@prologic Go just moved back to second place. :-)
@movq Nice! I would have missed the plane if you hadn't pointed it out. :-) Venus is very visible these days. When a mate and I went on a night walk during clear sky this week, the night sky looked really great, it was easy to spot the second planet. We got lucky, ISS just passed above our heads, too. Most of the week, it was cloudy, though.
@movq Hahaha, that's a good one! :-D I came across this one before, but couldn't remember the answer.
@prologic Yes, C has it. I even thought that C invented it, but it seems to stem from CPL.

The closest to get to if expressions at the moment is to use a lambda:

foo := func() {
if bar {
return "spam"
}
return "eggs"
}()

But that's also not elegant at all.=
@arne Auweia! Wär's da nicht sinnvoller, von dem Ding möglichst zügig wegzukommen? Ich hab keine Ahnung, was es da heutzutage so an tauglichen Alternativen gibt. Aber selbst alles selber zu bauen, wär da ja mittelfristig weniger aufwändig, wenn man das mit dem ständigen Zusammenkehren der Scherbenhaufen vergleicht.
@thecanine That's one of the cool properties, you can use it at whatever frequency you like.
@aelaraji :-D
@arne Jepp, sehr gute Wahl! :-)
@xuu I think I also ran into CSRF problems with multiple open yarnd tabs in the past.
@xuu Ah, it was JS then. Thanks. :-)
@movq Okay, cool. :-) I'll look at Mutt this year. I have the feeling I might like it after some initial pain.
@movq Fingers crossed! :-)
@thecanine It's always nice to look at your creations.
Oh yeah, @aelaraji, electrostatic cat fur to the rescue! :-D
@prologic Which one? I don't mind the ternary operator at all. In fact, I often find myself missing it in Go. I don't find the two alternatives particularly elegant:

foo := "eggs"
if bar {
foo = "spam"
}

Or:

var foo string
if bar {
foo = "spam"
} else {
foo = "eggs"
}

To my eye, this just would look a lot nicer:

foo := bar ? "spam" : "eggs"

Or at least as the Pythons do it:

foo = "spam" if bar else "eggs"

The ternary operator especially shines with relatively short expressions.
@arne Ohjemine, TYPO3! O_o Lass mich schreiend davonlaufen!

Mit dieser absoluten Katastrophensoftware vor dem Herrn haben wir mal ein Studienprojekt gemacht. Die hat alle Vorurteile komplett übererfüllt. Angefangen von Fehlerseiten, die statt 4xx oder dergleichen immer mit HTTP 200 ausgeliefert wurden oder auch, dass das generierte HTML leider einfach ungültig war. Über die Implementierung von Löschen durch einen Deleted-Schalter in der Datenbank, das Speichern von Passwörtern im Klartext bis hin zu völlig umständlichen Bedienungskonzepten. Alles hat immer brutal viele Schritte gebraucht. Das Zeilennummernrumgeeier im TYPO-Script erinnerte eher an Basic. Uns kam es auch so vor, als ob man damit nicht ernsthaft was sinnvolles machen könnte.

Zu allem Überfluss hatte irgendwer noch ein ganz hundsmiserables Buch ausgegraben, das als Vorbereitung dienen sollte. Ich kann mich zum Glück weder an den Titel noch den Autor erinnern, aber ich weiß noch, wie das komplett inkonsistent geschrieben war. Anfangs gabs mehrere Seiten zu Unicode und UTF-8 wurde angepriesen, aber alle Beispiele haben dann auf ISO-8859-1 gesetzt. Gezeigter Beispielcode war häufig unterste Schublade. Selten hab ich so merkwürdige Erklärungen gelesen: „Wenn Sie die Sicherheitswarnhinweise stören, kommentieren Sie doch bitte im Quelltext die die()-Funktion in $ZEILE aus.“ Oder ein anderer Klassiker: „Ausgeschrieben würde der Code wohl folgendes tun…“. War sich der Autor also nicht ganz sicher, ob sein Codeschnipsel vllt. doch in Wahrheit was ganz anderes tut.

Seit diesem gigantischen Trauma (das hat mich wirklich sehr nachhaltig geprägt, wie man Dinge nicht machen sollte) hab ich erfolgreich einen Bogen um das TYPO3-Universum gemacht.

Ich kann nur hoffen, dass es zwischenzeitlich ein wenig besser geworden ist. Aber Deinem Kurzbericht zufolge scheint da ja immer noch der Wurm drin zu sein. Mein Beileid! :-(
@movq That's an interesting setup! What MUA do you use?
@movq So, the building renovation finally started?
Rats! @aelaraji, you need an emergency hamster and a wheel attached to a bicycle dynamo…

Fingers crossed that this doesn't happen a third time today.
If people just wrote error free code to begin with, there would be no need for error handling! :-P

No, honestly, I don't think that there is anything wrong with the current approach. I don't see any wins of any of the proposals I've come across.
@arne Hahaha! :-D
@kat You mean the ? as suffix for boolean returning functions or as ternary operator (condition ? true_value : false_value)?

Interestingly, I just had to look up the first case. I was under the wrong impression that the question mark at the end would be some shortcut for chained function or method calls that handles nil return values in a graceful way without actually dereferencing and thus crashing. I probably never wrote more than 30 lines of Ruby in my entire life. Must have been some other language.
@kat Haha, I see. :-)
Even after fixing yesterday's mail server TLS certificate renewal incident (main hostname was not included) my KMail did not want to receive e-mails anymore. I had to restart Akonadi now in order to make this work again. I really should look at mutt one day.
@arne Eis im Januar, ja sapperlott, ist denn schon wieder Sommer im hohen Norden!?
@kat Something is broken with the TLS:

$ curl https://remix.girlonthemoon.xyz
curl: (35) error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error
@prologic I don't like it either. Too much magic, that only works in certain cases.
@movq No, I don't think so. But I just looked it up. And yes, that sounds a bit creepy. I certainly heard similar calls, maybe it even was a heron. I don't know.
That's a cool comparision of an obstacle run with a knight, fire fighter and soldier: https://www.youtube.com/watch?v=pAzI1UvlQqw
@sorenpeter Thanks mate, I got really lucky with this one. :-)
@prologic Have you successfully dug up some gold already? The dream of having your own yacht is coming closer.
@arne Ich gratuliere zum Vorhangstangenrichtfest. :-)
@arne Hehe, schon faszinierend, wie manche Sachen das Hirn ziemlich neu verdrahten.
@arne Zum Thema Dinosauerier fällt mir dieser 38C3-Vortrag ein, den ich mir die Tage angesehen hab: https://media.ccc.de/v/38c3-how-to-spec-fun-with-dinosaurs
I just saw this heron fly by my window, so I investigated: https://lyse.isobeef.org/graureiher-2025-01-25/

Heron on a roof
@movq Es kann nun noch mehr Daten abschnorcheln! Hurra!
Thanks, @andros! I commented and replied here: https://git.mills.io/yarnsocial/twtxt.dev/pulls/8#issuecomment-18490
@andros Just when you have made something idiot-proof, the world invents a better idiot.

The mother of the morons is always pregnant.
@movq Progress! They could be at your door any second now. ;-)
@movq That's cool! :-)
@xuu I'm innocent!
@movq Have the workers even arrived yet?
@arne Unzählige Stellschrauben hab ich auch noch vor mir. Ich will gar nicht dran denken. :-D
@arne Uuuuhhh, das fühlt sich klasse an, gute Arbeit mein Lieber! :-)

Besonders positiv hervorheben muss ich die Rohdatenansicht. Sowas hab ich mir auch schon in der Vergangenheit hin und wieder gewünscht. Wie toll es doch wär, direkt den Eintrag im Original zu sehen, ohne erst im Feed mühsam auf die Suche gehen zu müssen, was auch noch einen Wechsel auf den Browser oder den Editor erzwingt. Das werd ich mir definitiv auch einbauen. Insbesondere für die Entwicklung absolut hilfreich. Die Textarea könntest Du noch mit einem readonly-Attribut ausstatten.

Die Gesamtbaumansicht einer Unterhaltung gefällt mir ebenfalls. Davon bin ich ja ein großer Verfechter. Nicht nur die direkten Antworten zu sehen, sondern alle. Klar, bei tief verschachtelten Unterhaltungen und sehr langen Beiträgen verliert man da doch mal den Überblick, aber die kommen in der Praxis meiner Erfahrung nur selten vor.

Die zwei Elemente in der Fußzeile eines Beitrags würde ich auch noch versuchen in die Kopfzeile zu verschieben, dann wird die Darstellung insgesamt kompakter, gerade bei Unterhaltungen könnte das von Vorteil sein.

Weiter so!
@arne Klingt gut, Du darfst uns gern mal ein paar Bildschirmfotos vom aktuellen Stand zeigen. :-) Die erste Aufnahme sah bereits recht aufgeräumt aus.

Ich müsste auch endlich mal an meinem Client weitermachen. Aber heut nimmer.
@arne Ahja, danke für die Erläuterung! Einrückungen waren meinem Parser tatsächlich egal, der dürfte einfach ein trim() angewendet haben, bevor sich die Zeile zur näheren Verarbeitung angesehen hat. :-D
@movq It says F=700, D=70 and RK=20. I have to research what magnification that translates to, a few days have passed since physics class. Your Celestron Ultima 100 looks much more high quality than this thing.=
@movq Großartig! :-D
@arne Hahaha, vor Dekaden hab ich auch mal einen „XML“-„Parser“ selbst gebaut. Der wollte dann pro Zeile entweder einen öffnenden oder einen schließenden Tag oder aber einen Wert haben. :-O Ganz übel, aber für den damaligen Anwendungsfall hat's gelangt. War halt bloß kein XML. :-D

Was konkret war dann das Problem von dem zu sauberen XML in Deinem Fall? Und schön zu hören, dass Du das Gerät vor dem vorzeitigen Elektroschrotttod bewahrt bekommen hast. :-)

Zum Abschluss noch ne ganz doofe Frage, ganz offensichtlich hab ich von Radios keinen blassen Schimmer. Wieso muss denn das Ding überhaupt mit XML rumfuhrwerken? O_o
@xuu The Pod.LastSeen and Pod.LastUpdated fields are only ever updated in the Cache.DetectPodFromUserAgent(…) function as far as I can tell. This function is called in Cache.DetectClientFromRequest(…) and Cache.DetectClientFromResponse(…).

Cache.DetectClientFromRequest(…) is only invoked when the twtxt.txt is requested and looks at the User-Agent HTTP request header.

Cache.DetectClientFromResponse(…) is only called in Cache.FetchFeeds(…) and looks at the Powered-By HTTP response header. This header would be set in twtxt.txt HTTP responses from yarnd. A bunch of places invoke Cache.FetchFeeds(…), including a periodic job (UpdateFeedsJob.Run()). Maybe something is iffy around these locations.
@movq It's an old, cheap Optus without any model information on it. It was maybe 180DM or so in a discounter 25, 30 years ago. Its main job is to collect dust, can't even remember its last use. That must have been easily 15 years ago I reckon. Thus, absolutely no surprise. Maybe I'll just take it apart and see what I can see as the week progresses.
I'm rather frozen after half an hour looking at Venus and Saturn through the telescope outside. I couldn't see any rings around Saturn. Disappointing. It also appeared rather dark. The very bright Venus on the other hand told me that there is something growing inside the scope. :-( Or maybe there is dust.
@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. :-)