# 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 6528
# self = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3196
# next = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3296
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=3096
I noticed some unnecessary horizontal rules being rendered at the bottom of twts in the conversation view lately with yarnd's new design change. They can be seen at least when not being logged in. Not sure if it is the same experience with an active user session. I reckon there will be fork buttons then, so in that case they would be fine, indeed.
Unnecessarly rendered horizontal rules at bottom of twts
In fact, these lines are implemented as border-top
CSS properties of twt-nav
-classed <nav>
containers. But the <nav>
s are empty, so I would expect them not being there in the first place. Empty navigation doesn't make much sense to me.
In any case, keep up the good work! :-)
@tkanos Cool! I like your disclaimer in the readme. :-D A few things caught my eye while scrolling through the code, the ones I remember:
1. The protocol switch in lines 141ff could make use of else if
.
2. There's a superfluous space in the progress bar in line 155.
3. The User-Agent
header contains a {
which I reckon is a typo. Also, I reckon the URL and nick should be swapped, in case you wanted to stick to this discoverability format.
4. The feed discovery regex assumes that filenames always are twtxt.txt
which will miss a few feeds, such as @anth's and @hxii's. Parsing mentions would be more accurate. And then also parse all mentions from a twt, not just the first one.
5. If you're still bored, adding support for archived feeds would be a thing. :-)
Anyways, nice work!
We checked out the routes for our scavenger hunt on Friday evening and man, did we enjoy a sunset. Bloody amazing.
Terrific sunset
@movq Hahahaha, this is great! :-D Thank you!
@mckinley My client parses the mention and just shows the URL. Since I don't follow that feed, it is rendered white on red just like any other feed I don't follow. My markdown support is very limited, inline code is unknown to tt, so the mentions put in code blocks are just treated as regular mentions. And then you can see, that you mentioned me incorrectly. :-P
Mentions in tt
@movq True hackers know how to diguise their break-ins as innocent dir
output.
@movq Haha, great! :-) Actually my first time listening to them.
@movq Absolutely impossible!
Boy, it was fricking cold with the wind today. Can't believe that just three weeks ago I was sweating like a pig. But the rain clouds were pretty nice. Only my camera struggled very much with these lighing conditions. Basically half of the images totally blurred.
Cloudy sky in the evening
The common kestrel on the nature reserve sign didn't see me coming, so I managed to sneak in up to about ten meters before it took off quickly.
A German without bread is like an American without a gun.
@tkanos :-D Sadly, so much truth in that, though.
@mckinley Oh, very interesting, thank you! Hahaha, great finding about comments. It never occurred to me either. Same with empty lines I reckon. I reckon a comment extension should be documented next. ;-)
@tkanos Thanks for the clarification. Haha, it's always the same with quickly cobbled together code. ;-)
@mckinley I got your point and I'm also under the impression that \t
is allowed in the message. Can you elaborate on why you think it is not?
@mckinley I got your point and I'm also under the impression that \\t
is allowed in the message. Can you elaborate on why you think it is not?
@darch Titles and subjects are two different things in my opinion. A title is a caption, brief summary or some description of a longer content that follows. A subject is a – in this case human readable – reference in a reply to some topic in order to group several twts to a conversation. Forks aside, the first twt starting a discussion typically doesn't have a subject. But some article would have a title in most cases. You are right in that the subject mechanism could be abused for a crude title implementation. I wouldn't do it, though.
@prologic I reckon there is a some kind of frame or hook tool for these loom bands.
@mckinley Even though I miss a title for general purposes, I'm not sold of cramming it into twtxt. It's just not made for it. To only announce new articles, that format would work, though. It's basically what some people already do, except a space rather than a tab is used between the title and link.
@movq Ta, in my ~/.Xmodmap I just set my multi key to Caps Lock, which I had deactivated anyways. Now I can insert a non-breaking space with Caps Lock+Space+Space. Nice.~
@prologic I fear that calls for even more trouble. But you can try.
Not sure which conversation you mean, @eaplmx (it's already quite late here), but here's my take: I think twtxt it's not heavy enough. For a real feed format I would like to have a clear separation between titles and content. And more options for the content. Plaintext and HTML at least. Twtxt is plaintext, but lots of folks (me included) actually use markdown in their yarns. However, the actual format being used is not advertised anywhere. To make things worse, I actually prefer reStructuredText over markdown. For podcasts some enclosure-like thing would be nice as well. Twtxt being line based also really limits structuring of longer content by hand. Just can't produce a nice source file.
On the other hand, RSS and Atom being XML are way too heavy for my taste. And then there's JSON feed. It's been a while since I skimmed over it, can't remember the details, but I wasn't sold on this one either. I also never encountered any JSON feed in the wild. So I'm still on my quest to find an optimal feed format.
@tkanos So basically it counts the mentions? We definitely need some feed normalization database, too many broken mentions out there. :-)
@mckinley Same with me, just learned about them now. :-D
@movq In hand written HTML I use them in between numbers and units. As
, though, because I haven't figured out which keys to press on my keyboard for that. I know, I know, there's even a smaller space for this purpose.
@prologic Whoops, I must have missed the error
return value! That sounds good to me. When there are just fatal errors that abort the program execution, a main function returning an error is definitely enough.
Hmm, if you don't want to report errors to stderr, where do you write them to? Hopefully not stdout. A log file? It obviously depends on the program and such, but generally I do not want to dig up errors from a log file. Usually, I find it much more convenient to see them directly. Properly dealing with stdout and stderr basically provides the capabilities for free to be pipeline-ready. And of course, -q
or something along those lines is also a good choice. When talking about more serious programs, that is. Not just some quickly cobbled together helper.
@mckinley Very clever date formatting, indeed! It also makes up for the largest code section, which I found quite funny.
@prologic I'm bad with terminology, sorry. But I think, we're basically on the same page. The only thing I wanted to say is, that I fully agree with @brasshopper's theory here and tried to elaborate a bit.
Even if you have a very deep knowledge of one language, you typically won't know about all the styles, patterns, spirits, etc. when starting to pick up a new one. Some ideomatics are just different. So when tackling something, you naturally do it like you've been doing it before in other language(s). In the beginning it just doesn't occur to you, that something might be done (entirely) differently in this new language. It takes time to pick up and sometimes even more to wrap your head around it. Open-mindedness certainly also helps, I found. The more you've really worked with different languages, the more your little knowledge base grows. Hence, you know that things can be solved in lots of different ways. And that will basically bring you awareness, that you might want to look out for the specific procedures of doing something in that other language you're using.
@tkanos I have the same question as @mckinley. What is influence? If I'm third place, I should probably slow down. :-D
@prologic Logging is different, I meant regular errors messages. E.g. you invoke the program with an invalid argument or something else goes wrong. That should then be reported on stderr and not stdout. When striving for a good coverage rate, error cases should not be forgotten in my opinion. Ideally, error messages are tested, too. I've seen a bunch of cases in the past, where something was broken, because there weren't any tests. But to be fair, I neglect them most of time, too. :-( Just checked, go-cmdtest
merges both stdout and -err, that's a no-go in my books.
@prologic @brasshopper @tkanos Exactly, you just know what you know. You simply can't follow a pattern which you haven't heard of, so you just stick to what you've been doing in the past. From my own experience and what I've seen from others, it's getting much better with more experience.
@prologic Please let me know how it turns out in the longer run. :-)
@off_grid_living Reminds me of my grandma's carrot garden back in the days. Super yummy.
Autumn is here, 17°C tops, in the night even 4°C. In fact, 0°C this morning. It chilling. Went up our backyard mountain again and had a great view. The rain in the beginning of the week helped to clear the air. We had a bloody awesome sunset today. Incredibly red light everywhere, unbelievable. Photos don't do justice.
40km away Stuttgart TV Tower after sunset
That's quite a complicated hello world, @prologic :-D
My main()
s often also just do os.Exit(run())
. Passing the command line arguments run run(…)
seems like another obvious thing to do. Even though, I should have done this more consistently, I reckon. I feel very stupid now, because for whatever reason, it never occurred to me to simply pass an io.Writer
for stdout. I really like that. Although, I'm wondering why there's nothing for stderr. Errors should definitely not mix with other output in my opinion. Anyways. When testing, I always captured stdout with a much more complicated code segment so far. Store the original output and error streams, set the new ones, execute the test, convert things to strings and finally reset to the original streams. I will definitely adopt these io.Writer
arguments. Thanks, mate! :-)
This cmdtest test execution also captures the coverage? It looks kinda more complicated than it should be, otherwise. Just a program with the test definition file would be enough in my opinion.
I don't know if I like the concept of providing a single test definition file or not. It's a bit intriguing, but I fear that's not flexible enough. Just a gut feeling, might be wrong.
@thecanine Interesting! Hahaha, I didn't even know that this breed only exists in comics. :-D
@prologic Uh, that looks kinda cool. Usually, I open the HTML report in the browser.
@mckinley Crazy! My feed preview extension kicked in and rendered the feed as it is supposed to do. Hence, I had to open it in porn mode to enjoy your black magic. I'm very surprised that the XSLT is this short. And that I could easily understand it. It's been at least six years since my former employer forced me to use XSLT. Just the $
prefixes surprised me, didn't remember them at all.
@thecanine Ta! It shows two views of my client. The upper one is the conversation view with the second message being focused. Down below is the URLs view where also the second link is selected. In reality, I cannot see both at the same time, hence, this screenshot was edited together. 16 colors are truly enough, I'm not decadent!
@thecanine Good point, for animations of blinking eyes, larger eyes are probably better. So there are real dogs out there who have blue eyes? I once heard that most animals only come with brown eyes. Not sure if that's true or not. Also back in the days our biology teacher told us that blue eyes are basically a gene defect. ;-) I like blue eyes on humans.
@eaplmx Have a look at the three recommendations over there: https://yarn.social/#manually Jenny would be probably my choice if I had not written my own one, which is still unusable for everybody else. I didn't lay my hand on it ever since. Polishing and bug fixing desperatly needed.
@movq @prologic Same with me, I often get mentioned as either https://lyse.isobeef.org
(filename missing entirely) or even http://lyse.isobeef.org
(HTTP rather than HTTPS as an added bonus on top).
Also for some reason user agents "yarns/master@19127bf (search.twtxt.net Support: https://search.twtxt.net/support)" and "master@19127bf (+https://search.twtxt.net)" are requesting /user/lyse/twtxt.txt
on my server every hour. This path of course results in a 404. I reckon way in the past someone mentioned me wrongly and the search engine now has my broken URL in its database forever.
I have zero knowledge of this mention completion system in yarnd. I should probably take a look at it. For the search engine some manually maintained normalization rules (or alias rules or whatever you want to call it) are required to fix this. In the simplest case a blacklist would suffice. But some rewriting would have the benefit to be more user-friendly with future features, such as mention search etc.
@thecanine Very nice. I indeed like the new one better because of the smaller eye. It appears still a tad too large, but I obviously have no clue when it comes to dogs. :-) Its mouth makes it also much more friendly. Crazy, what just two pixels can do.
@prologic No you don't. :-)
Not mentioned correctly
@abucci Ah, Mrs. Lovelace, cool. :-)
@abucci Did you name her after the programming language?
@thecanine I'd love to have only one percent of your discipline. I can't help myself but I found those optimizers always a bit suspicious. Luckily, I have zero need for them.
@tkanos Without batting an eye I'd obviously go with Linux.
Again. My two milk bottles overflowed. Made quite a bit of mess. :-/ Better bring a third one next time.
Does anyone have a recommendation for a (semi-)professional food processor or mixing machine? I basically just want to knead doughs of different consistencies. No cutting required. Currently, the standard Bosch MUM4 or some predecessor died on me. I gotta disect it, but some mechanics broke.
@stigatle Very lovely! Gray soup over here, rain is very welcomed.
@prologic Oh boy, this is interesting, it works indeed! Thanks mate! Now I just have to read up on why that is the case.
@mckinley Oh, you meant removed from Reddit. Nevermind.
@tkanos Nice idea, the generator code is missing, though.
@prologic Hmm, I don't use cgo in said project, so I would be surprised if that then has an effect. I will try that next time, though.
@prologic I've seen that, too. It's soooo brilliant, I just completely watched it again. :-)
@mckinley Hahaha, great talk, even though I didn't follow everything he said.
@prologic Yeah, but it only works for truly statically linked executables. Two weeks ago I had the problem that I build a simple service with the regular go build -o myservice
and copied it to my server. It didn't start though, the libc versions didn't line up. So then I had to search around and use go build -o myservice -tags netgo -ldflags '-extldflags "-static"'
. (Generally even more flags are required.) And the best part is that the exact command line differs with each Go version. I hope they finally provide a simple -static
flag.
@mckinley @prologic I went to the dairy farm where they have a 24/7 milk vending machine. You insert a coin and press a button to fill up your empty bottle you brought along.
Milk vending machine at the local dairy farm
I thought if "to tap beer" is a term, I could use it for milk as well. Let me know what you native speakers around the world call it. Or maybe it was just not enough context.
The last two times I tapped milk I thought: that's never a whole liter, so much air left in the bottle. Just now the bottle overflowed. Couldn't see in the pitch dark.
@abucci @akoizumi It's just impossible to use most of the web without an ad blocker. It's super irritating if I'm at a mate who is not using one. I immediately get eye cancer.
Finally, everything seems to be fixed now.
Meh, after a server upgrade and reboot a bunch of my Python scripts don't work anymore. I know of at least two.
@mckinley Cool, I will see what I can do. :-)
@movq Very nice! I go for buzzard then. Falcons are smaller I'd say, more in the range of the ravens.
@justamoment Oh, interesting. Never had that happen before. The fix is quite easy then, could be worse.
When reaching home a bat flew past me and direct in front of the house a hedgehog walked over the street onto the grass verge. And in the forest we encountered a deer. Can't complain at all. :-)
Looking into the sunset on Mt. Hohenstaufen
@mckinley Currently, I don't have the code online anywhere. It's suuuuper ugly and full of bugs. I might write a proper article on my video setup and workflow on the weekend.
@justamoment :-D So what's the deal with this form then? Was the site hacked or did you add this in a moment of absent-mindedness? Any investigation results?
@akoizumi I find it hard to read white text on green and black background. Also centering everything looks odd to me.
@stigatle Wooooooooaaaaahhh, this is sick! Truly beautiful.
@movq I guess so. Congratulations mate! :-D
@justamoment Just subscribe and see what wonderful news e-mails you will receive.
Btw, I had a mammoth photo moment like you, @movq. ;-) I was happily turning the food mill for a minute after a refill and wondered why basically nothing was dripping out into the pot. It also seemed like the mash wanted to stick to the sidewall only and didn't hit the the 1 mm holed sieve at the bottom. You all already guessed it, I was turning in the wrong direction and scraping off everything from the sieve. Immediately after realizing the very next thought was: yep, mammoth. :-D
@movq Absolutely, I love apple products¹!
¹: if they don't start with a lowercase "i"
(Disclaimer: didn't read the original post.) I was thinking about that each day since you brought this up, @prologic. Very interesting. I fail to answer your question. But I have the feeling that it's just a matter of some kind of a filter bubble (for the lack of a better term).
While some people go totally overboard with their microservices (so did I once in the past, it was a valuable lesson, though), I can't believe that there isn't the same (or quite close) level of problems and new tooling for monolithitic systems out there. The problems and thus solutions are different, but I'm sure, they exist in a comparable manner. On the other hand, microservices are hyped as the very best latest shit and savior for a very long time now. So I would imagine that there are waaay more microservice architectures out there than monolithic ones these days. Hence, just by the difference in magnitudes, one has to come across microservice solutions much more than monolith helpers. I don't have any numbers to back this up, it's just a gut feeling. My theory could be complete rubbish.
In a way, microservices are just one of the key concepts from the Unix philosophy in my opinion. Just called differently. Once I realized that, µservices suddenly made much more sense to me. Once again, most things are just reinventions of old concepts and now called differently. "Raider heißt jetzt Twix, sonst ändert sich nix."
And as with everything, overcoloring is always bad, no matter in which direction you go. Just gotta have to hit the sweet spot, or somewhere close enough in that area.
@movq That sounds very interesting, I should get myself a copy I reckon.
Made eight liters apple sauce this afternoon. Camera lense got fogged up, sorry.
Bucket full of 8l fresh apple sauce
And just collected a few kilos of new windfall for tomorrow's production.
@movq Yep, buzzards are larger in general. Can't really make out the size from the photos. I tried to use the roofing tiles as a reference, but they probably come in tons of different sizes anyways.
@prologic I bet it's going to be awful. :-( Ta, @movq, glad you like them! I carefully balanced the camera on self-timer in the belly strap of my backpack (no idea what you call this for real). It was suuuuper dodgy, let me tell you. Didn't want to repeat that for 28. ;-) Will check out Silent Spring later, thanks!
@movq Holy crap! :-( I don't get a popup in the middle of my face, but there's one on the side.
@prologic Whoops, my brain automatically inserted "day" in your message.