# 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 6523
# self = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=4396
# next = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=4496
# prev = https://watcher.sour.is?uri=https://lyse.isobeef.org/twtxt.txt&offset=4296
Agreed, @eapl.me, that looks fairly clean. Much more tidied than the default theme. Good job, @darch, I like it. If you see some garbage requests in your access log, do not worry, they're coming from me. You gotta do some input validation and error handling. :-) (E.g. see ?list=twtxt.txt_
.)
@movq Lucky you, we didn't have any thunderstorms lately. But temps were somewhat passable. These storm chasers are a fun species. Taking it right to the next level. :-) I mean it is probably cool to see the thunderstorm from above or the inside. But better don't crash into the windows of other people.
@movq Da geht mir auch sofort das Messer im Hosensack auf.
@prologic Ah, ok. But you actually have to be logged in. It doesn't just assume it. At least it tried it in the web UI. It would be nice to confirm the password by retyping it into a second field, so typos are caught.
@movq You gotta do it like migrating birds. Move south in winter. The day after tomorrow is supposed to only reach 21°C. But on Saturday temps are up again.
@movq I feel like I asked before, but forgot the anweser. What are you using multipass for? Machine admistration?
@prologic @movq @ionores Thank you all! Yeah, time to get my apple grinder built this year. Let's see if we also get any apples, it's not looking too great this year.
@prologic Hmmm. Not so sure about that: https://lyse.isobeef.org/tmp/htmlresponsewriter.png Do I like it or not? I mean it's cool to be able to write quick helpers directly in Go. Another benefit is that the HTML form field names are directly visible and thus can be quickly connected to the incoming request. But it's still a bit awkward. An escape helper with a very short name would be a bit nicer to be used "inline". But I actually would go the other way around and mark everything explicitly safe and apply auto-escaping to all unmarked strings. This way it cannot be forgotten. But this then gets a bit lengthy in the Go code I reckon.
@ionores How, cool! :-) I will attempt that tomorrow morning if it's actually feasible. They forecast it to be cloudy and foggy.
@prologic Yeah, I kind of agree. But having separate template files helps in the developing process. Just think of the syntax highlighting alone instead of large monotone strings in your Go code. :-) Also, depending on the permissions of the viewer, one certainly needs a bunch of conditionals to show or hide certain things in the output. Also, auto-escaping is something I don't want to miss. Inheriting is also at least needed for the layout stuff. Maybe Go code alone is the way to go for smaller code bases. Especially if there is no dedicated designer who just wants to work on HTML & CSS and doesn't touch the programming side. I'm doing everything myself here, so, it might work. I would definitely need a set of some helpers to make quick use of my rendering inside Go in order to not go totally insane.
I don't like the additional parentheses in jet
. Also a bunch of yields
for invocation and the weird mix of content
and actual parameters for custom "functions". Doesn't directly appeal to me. A custom loader for the go:embed file system could easily be added, though. Didn't actually try out anything, just looking at the examples in the docs and the code itself. Now investigating pongo2
. Very promising looking so far.
Maybe I just pause and experiment with my own "engine" in pure Go. Again, missing syntax highlighting is gonna be my worst enemy I reckon.
@prologic Too bad, extemplate
doesn't work with Go-embedded file systems, just the regular host file system. I could patch it and then proceed, but I guess I just move on and look at jet
.
@mckinley @abucci @movq I'm glad that you all have similar habits. :-) I also have the ls
sickness. @prologic Submitting the command would not have been desastrous as it did not match any filename, but still, very scary nontheless.
@prologic I'm coming from the Tornado world, so Tornado templates would be really great. Or Jinja, they'e quite close, although I like Tornado more. It's been a while, though, that I heavily worked with them.
Looking around I found a few candiates that might be worth looking into. Haven't tried any of them so far, though. I just looked at their dependencies, syntax and features.
I came across https://git.sr.ht/~dvko/extemplate which I believe is a must if one sticks to the standard library. It adds the extends
concept, which is heaps more natural to me instead of of keeping track of the relations and reparsing them manually myself. The template.ParseFS(…)
seems to be rather useless I have found. It doesn't really work all that great. Or I was holding things wrong. I will give extemplate
a shot today regardless whether I stick with the default templates. extemplates
doesn't have any other dependencies which is always a big plus in my book.
https://github.com/CloudyKit/jet/blob/master/docs/syntax.md looks fairly useable. It only uses one additional small third-party library which has no dependencies itself.
Zero dependencies for https://github.com/flosch/pongo2, a Django-inspired template engine. This is also close to Jinja templates.
https://github.com/valyala/quicktemplate is interesting as it compiles it into native Go code and claims to be very fast. Adds a bunch of dependencies.
A Jina-inspired template engine, that adds heaps of dependencies: https://github.com/noirbizarre/gonja I guess I have to compare Jinja and Djano before I know which syntax I generally like more. Probably would go with pongo2
over gonja
, just of the number of deps. But more investigation is needed.
Another Jinja2 with an even larger number of third party libraries is https://github.com/kluctl/go-jinja2. Seems to work on invoking Python under the hood eventually. So, yeah, most likely not this one.
I guess I'm read for bed. Instead of grep -rin foo
I just typed rm -rf foo
. What the heck, brain!? O_o Luckily, I just caught it before hitting Enter.
These comparisons are no operators but functions, hence, the solution is: {{ if ne (len .Events) 1 }}
However, it makes absolutely no sense to generate utter bullshit instead of producing a syntax error. Any useable template engines to recommend that do not pull in a metric shitton of dependencies?
What kind of fucking bullshit is this horrible Go template garbage!? What the hell is wrong with my template? https://lyse.isobeef.org/tmp/wtf_test.go.txt I rip it all out and replace it with some other template engine that doesn't suck balls. Holy fuck. What a giant waste of time, every fucking time I deal with this shit. End of rage. :-)
@movq I had nothing remotely close to this. But I also was never much into the maths world anyways.
@movq It's there for years. :-( I don't know it any other way.
Thanks, @movq! I don't know but reckon the oil originates from farmer and lumberjack vehicles and then just concentrates here. :-(
@movq Yeah, that sums up this mess pretty well.
@mckinley That's what I thought, too, when I first read the title. To completly annoy everybody around me.
The drawers are fixed. Clearance looked better before, but it's shop furniture after all. So I don't care too much about the larger gap between the top drawer and the top edge of the cabinet.
Missed it. Next attempt tomorrow.
This is a very interesting article about writing a compiler for a subset of C in 500 lines of Python: https://vgel.me/posts/c500/ Highly recommended.
@movq Ha, okay! I'm gonna try that tomorrow morning. Can't see it at the moment.
@movq For a split-second I thought of Edvard Munch's The Scream. No idea who is portrayed, but he definitely looks bit spooky. The guardian of the garage.
@movq WHAT!? Holy shit, even with its moons!? This is truly amazing! The mind boggles that we can actually see them.
@movq They are indeed. :-(
I broke my new drill bit the first time I used it. Sigh. I thought I use the screws from my grandpa with the slotted heads, so they're out of the way. Of course I slipped off several times. It's just a stupid drive. When trying out the first drawer it rubbed on the new bottom rail. That's what I get for not measuring and just wacking things together. Since I didn't want to unscrew the rail again I had to knee down on the floor and chissel off 5 mm. The back rail wasn't screwed yet, luckily. So I could simply glue on two new raiser blocks.
I have no clue how or when that happened, but I noticed that my door lifter broke again. I didn't even use that thing. I glued it back together, but I'm sure that I have to upgrade to steel or at least some hardwood.
So then just in time a mate called and we went for a short stroll.
[](https://lyse.isobeef.org/waldspaziergang-2023-09-05/05.jpg)
My lower drawers from the drill press stand have crashed down. I had to cut two support timbers and glue small pieces of wood on the ends so that the bottom drawer can still pass between them. Gotta screw them under the side panels tomorrow. I don't know how I attached the side panels in the first place. It doesn't look like glue, and there are definitely no screws either. Could have been a press fit. But as heavy as the drawers are, I can't really imagine that. So probably OSB end-grain glued to solid wood legs. Definitely not a great joint.
@movq Yeah, exactly my thoughts. So much more useful than what I do.
Wow, this is so cool to see. Could be even five times longer to see more details. German documentary on how a taxidermist revives a tawny owl. https://youtu.be/I3taY_LbPwU I have to visit this museum.
Hahahaha, the series on Grinder Disks That Shouldn't Exist continues! The Spank Master Five Million: https://youtu.be/fSsrQJCnS0k It's pretty safe, I expected quite a lot more damage.
@movq Yeah, if there's just one terminal on the workspace on a modern monitor, it feels not natural. But most of the time there are several terminals visible. Since I figured out how to change my terminal font size with key strokes a few weeks back, I just increase the font size for single terminal workspaces. The other thing can be my browser when visiting very rudimentary web pages that do not limit the content width. Very long lines are a bit hard to read, I often don't immediately find the correct line to follow. Especially if the paragraph has more than six lines or so. Again, zooming in is my trick. On the other hand, a lot of modern pages have too narrow content columns for my liking.
@movq I reckon you can blame it on the surrounding manmade noise. It's much worse in a city.
@adi Never used this one, but stacked window managers just waste soooo much screen space in my opinion.
@movq It's touring-complete after all… Hence, take advantage of it, use all the features! ;-)
There's way too much traffic noise and yelling people reaching my ears. Totally ruins everything. :-( I would have to go into the forest, but I'm too lazy for that at this time of the day now.
In fact I hear them right now all around me. Also a tawny owl or something along those lines. Pretty nice. Just the camera doesn't pick it up. I reckon I enjoy the concert for a little while outside.
@movq Yeah, these are crickets (Grillen). Very standard in summer I'd say. Not sure about the beeping, though.
@movq It's basically just open and save dialogs that are in floating mode. Everything else is tiled. I can't imagine ever going back.
@adi Ah, didn't know about the "recently" added state directory.
@adi So how do your other XDG variables lool like?
@movq Never heard of this cool mechanism before. But with a tiling window manager this is not very much needed anyways.
@movq Doing less is a good improvement.
This is great, @xuu! Clouds everywhere the last days, so no chance over here to see anything.
I should have been long in bed, but instead I hacked this together: https://lyse.isobeef.org/zoll.tar.gz More improvements to follow. I could get rid of the Python part if I just had more LaTeX skills. Skeleton stolen from the last *.tex file I've seen a few days ago. :-) Preview:
Inch fractions to millimeters conversation table*
Thanks, @movq! Yeah, we're infected for a very long time, too. I don't get good shots of this disease that heads for STR, that's why you don't see it. ;-)
@movq Nice and calm. Suddenly, summer seems to have ended rather abruptly.
@movq Cool, both look promising. I hardly remember playing that myself back in the days. I just have faint memories of watching over people's shoulders playing this game.
@movq Oh, that sounds very cool. Let us know when you have something to try out in the terminal. :-)
@movq That would be really nice.
And here is part two, awesome! \\o/ Heavy rain, constant lightning, thunder and wind. Really nice. Unfortunately, my camera is tooooo shitty, to yield anything useful. Even video mode sucked and all frames from the video are of zero use. The cam only captured the very bright lightnings, but the smaller ones are invisible. Very frustrating. Anyway, it's cooling down. Much appreciated. And the air smells so wonderful. Got a bit soaked at the roofed front door.
And here is part two, awesome! \\\\o/ Heavy rain, constant lightning, thunder and wind. Really nice. Unfortunately, my camera is tooooo shitty, to yield anything useful. Even video mode sucked and all frames from the video are of zero use. The cam only captured the very bright lightnings, but the smaller ones are invisible. Very frustrating. Anyway, it's cooling down. Much appreciated. And the air smells so wonderful. Got a bit soaked at the roofed front door.
@movq Wow, that's really unexpected. Very pleasant surprise, I have to say. :-) Maybe the Turbo C++ folks liked Unix quite a bit. Happy exploring! :-)
First part of the severe wetter rolled past us. So we could go out for a walk. Didn't bring my camera, though.
@movq Yiha, very cool! :-) Oh nice, even a starship. Just had a look at the commits of the port and it seems that making it work on DOS was not too difficult. I don't know what I expected, but I was suprised how little changes it took.
Everything looks good. But because I also programmed C++ again today, it's very hot in here.
Oh, that's very interesting! Pruning test dependencies from Go binaries. Gotta check our stuff at work tomorrow. I hope that we didn't mess up, I know of at least a couple of test packages we have for code reuse. Yarnd and yarns look alright in that regard. Just an hour ago I also learned go version -m $go_binary
to find out which things ended up in the built binary, sweet.
After a long time I have finally tinkered a bit again in the workshop. Wanted to build a door lift to easily unhang and more importantly hang all the doors again after greasing the door hinges. Such a contraption is basically just a lever with a hook and looks like that:
https://cdn.hornbach.de/data/shop/D04/001/780/491/286/174/DV_8_6571532_01_4c_DE_20171213194716.jpg
When I first tried it out, I broke the wooden lever. Dang it! Luckily, I haven't finished it yet. Maybe I didn't open the door all the way and it got hung up on the door lintel which is of course tons stronger. Now I'm glueing my lever back together and add a support piece over the break line.
Even though it didn't go to plan, it was good fun being in the woodshop again.
@movq LaTeX magic at its finest, indeed! :-D
I read the README and it says "asciifield renders a starfield in your terminal, much like the good old screensaver". This now makes perfectly sense. But before seeing it in action I couldn't make out what a starfield would be. I thought maybe it is a view from earth into the (local) sky to see some constellations, like Great Bear (the only one I recognize). I didn't get the screensaver reference, even though I immediately remembered that I have seen it a few times back in the days, once the demo started. I doubt that I used it a lot. So it mostly boils down to lack of educational requirements on my end. ;-)
Something along "spaceship pilot's view of flying into a starfield" would have helped me for sure. Others probably might have no trouble with the current concise description. :-) I'm surely not the best person when it comes to retro things. I joined the computing world quite late.
I wonder, what's the current status of analyzing Go dependencies in general? Does one still require a diploma on that matter or got this any better in the meantime? → https://search.twtxt.net/search?q=%23jz6y7sa&t=term&f=conv&s=created&s=_id All I want to do is find out why some dependency is included, wether a certain dependency is a production or test dependency and things like that. I also see still lots of open general tickets, e.g. #46365, #42504, etc.
What tools or commands do you use?
Also, what's up with yarns? The link in @prologic's message doesn't show up in the "conversation view" in yarns (my first link). Yarns needs more love. :-)
@movq Thanks! The document looked so nice, I just had to read it all. Couldn't help myself. Even though I never used anything even just this advanced after my uni maths lectures. That brought back memories.
Nice progress, the demo video is cool and promising. With that visual impression I now know what this program actually does (flying into a cluster of stars). Couldn't imagine that before.
@prologic Why not? You told us your daughter likes programming with her dad, doesn't she? So terminal use would be a next good skill to pick up. :-)
But on a wee bit more (not much) serious note, you could probably rig something up with yt-dlp. Build a web interface or something.
@movq Could be, but we have those idiots, too. Luckily not on a regular basis, though. Mostly in the warmer season. Last trip was especially positive, that's for sure. Maybe the heat helps to keep the streets clean. :-)
@movq Looks like your git hosting software does not allow downloading binary files (or I can't use my eyes). I was too lazy to clone the repo, so I just skimmed over the LaTeX code itself. :-)
Porting asciifield to DOS would give you a chance to document this endeavor in a (series of) LaTeX document(s). ;-)
I also love PDFs that were set with LaTeX. They just look so good. My last LaTeX use was with the beamer document class several years ago for a bunch of presentations I gave at work. I wrote a forest recreation planning software that generated LaTeX code for the personalized custodian timetables, that was in use even after my handcrafted LaTeX documents. But these days I also don't have any use cases anymore. On second thought, that very last thing must have been in fact my CV for job applications.
@prx Why won't the long URL just work to begin with? Are you spelling that URL over the telephone?
@movq Most likely, yep! :-)
@prologic Inspired by Indian road traffic. (I never used Discord and never will.)
I quickly looked into the starlit sky yesterday night before I went to bed. Bam, a shooting star came down. Great! :-) The first one this season. Should do this more often.
It was 28°C when I left the house at 20:00 for a quick stroll. There was an eerie silence everywhere. A bit surprising, but I'm the last to complain about that. The whole residential area was filled with delicious smell of grilled meat. When I reached the end of town, it changed for freshly cut grass. Some clouds were backlit quite nicely. I came across two groups who were camping or partying in nature. Both times pleasantly quiet and good music penetrated my ears. Another positive surprise. I saw plenty of bats cruising over my head. On the way back I also encountered numerous frogs, well dark spots jumping across the paths in the darkness. Next time I go out this late, I definitely have to bring my torch to enjoy these amphibians. Or head out earlier.
[](https://lyse.isobeef.org/waldspaziergang-2023-08-19/05.jpg)
@movq Schdemmd, ganz schee hoiß isch's. :-(
@prologic Yeah, shell is full of these very weird things, that just make no sense. You just have to memorize all these silly definitions. Standards were followed in my case, that's sure.
Wasted quite some time to figure out why [ "$actual" = "$expected" ]
in my shell script did actually report inequality. Printing both variables with echo "'$expected'"
and also piping them through sha1sum
like echo -n "$expected" | sha1sum
(even tried without the -n
flag) clearly showed that they were the same. In the end, set -x
saved my day. actual
contained captured stdout of a process with proper newlines, but I had used expected="foo\\nbar"
, hence the comparison saw a literal backslash-n and no newline…