nick = asquare

avatar = assface-skeleton.jpg

link = Gemlog gemini://asquare.srht.site/gemlog/index.gmi

2024-10-12T05:18:16+03:00 I really like that trick Casey Muratori uses in his video lectures, where instead of using a regular whiteboard, he writes on a glass pane placed between himself and the camera. That way he never has to turn his back to the viewer.

2024-10-12T05:26:59+03:00 When you're writing on a whiteboard with your back turned to the audience, you're faced with an awkward choice: do you keep talking, and make life harder for the lip-readers in the audience? Or do you stop talking until you can turn back to face the audience, wasting many seconds of people's precious attention?

2024-10-12T06:25:26+03:00 When I first saw a friend use an Amazon Kindle back in the very early 2010s, I was amazed. Naive, optimistic lil' me imagined a bright future for mobile computing, a future of E-ink displays and battery lifetimes measured in months. What eventually came to pass is a present where E-readers are considered niche products and the dominant form of mobile computer is the "smart" "phone", a device so voraciously power-hungry that you have to recharge it every day.

2024-10-12T06:33:30+03:00 To add further injury to injury, there's now a data leash on top of the energy leash: early E-readers had your E-books as files in on-device storage. Smartphones also have ample on-device storage, yet the typical "app" shuns it, preferring to keep your data in "the cloud", making it hard to do anything productive with your device unless you stay within wi-fi range.

2024-10-12T06:42:04+03:00 For future reference, to timestamp a twtxt entry in Kakoune, select the following: gh!echo -n "$(date -Iseconds)\t"gl and press "@y . From that point and for the rest of the session, you have that as a macro you can execute with q .

2024-10-12T07:44:37+03:00 If I only read a couple of pages at a time, webcomics can be almost tolerable. But the archive-binge experience is utterly miserable. There's no standard "next page" keybind, you have to locate a button and click it with your mouse. And then you wait for the next page to load, a process that often take multiple seconds. If you're the author of a long-running webcomic, please give us the option of downloading completed past "issues" (episodes, arcs, etc) as CBZ files.

2024-10-12T08:27:48+03:00 Realistically speaking, most webcomic authors aren't reading my twtxt feed and won't start providing CBZs overnight. I'm gonna have to scrape the image files and pack them into CBZ myself.

2024-10-12T08:39:56+03:00 Surprisingly, the scraping is going to be the easy part. And by "easy" I mean "someone else already did the hard part": provides RSS feeds with links to every single page of a webcomic, even long-runners with thousands of pages. For example, here's the feed for Deathbulge: .

2024-10-12T08:48:20+03:00 The "packing a bunch of image files into a .CBZ" part, which I expected to be trivial, is actually complicated. There's the question of how the software that reads CBZ files knows how to order the pages. And the answer appears to be "there is no spec, anyone can just do whatever, YOLO".

2024-10-12T09:06:01+03:00 In the case of zathura-cb, the page order is determined by the filenames of the image files inside the zip archive. Fair enough, filenames are easier to work with than something like "order of file headers inside the zip".

2024-10-12T09:11:57+03:00 But how do you compare filenames for sorting? zathura-cb does it with g_utf8_collate_key_for_filename(). Note that this function depends on the current locale. Oy vey.

2024-10-12T09:31:49+03:00 Maybe I should generate EPUBs instead. Compared to CBZs, which consist of just the image files, EPUB requires a fair bit of bureaucratic boilerplate. But in return, you can ask questions like "how are the pages ordered?" and get actual answers:

2024-10-12T09:41:25+03:00 Another point in favor of epub is that, because epub "content documents" are xhtml rather than naked image files, there's an obvious way to include textual bonus content for comics that have it. (for example, the flavor text that accompanies most pages of .

2024-10-12T11:17:30+03:00 I'm not privy to the source code of Factorio, but based on , I conjecture that they might be suffering from Singleton pRNG syndrome.

2024-10-12T11:18:04+03:00 "Enemies (only) behave consistently as long as NOTHING changes. ... changing a tile, adding some ammo to the character, even adding a decorative, all [change] the result."

2024-10-12T11:18:07+03:00 What if, instead of one global, shared, stateful pRNG state, we gave every subsystem in the game its own independent pRNG?

2024-10-12T11:18:10+03:00 What if we didn't even use traditional stateful pRNGs at all, and instead generated random numbers by hashing some unique key of the particular, granular game element that needs randomization?

2024-10-12T11:25:12+03:00 "Moving an enemy, adding or removing a tree," would still affect enemy pathfinding, since these are entities that take up space and block movement. But the spurious dependency on decoratives, or whether the game is saving screenshots, would disappear.

2024-10-12T11:32:33+03:00 For enemy behavior, the key could be (game seed) + (simulation tick) + (position). This key is unique because two enemies cannot occupy the same space. It's not a stable ID, but it doesn't need to be stable, only deterministic and unique. For map decoratives, just (game seed) + (position), since they don't have time-dependent behaviors.

2024-10-12T11:46:34+03:00 "But hash functions are computationally expensive!" I hear you. BLAKE3 is pretty fast for a cryptographic hash function, but can't be as fast as something like PCG, that doesn't need to satisfy hardcore cryptographic requirements. So ... just use PCG .

2024-10-12T11:50:13+03:00 Published benchmarks measure 6.7 GiB/s for BLAKE3 vs 52.1 GiB/s for PCG .

2024-10-12T11:57:03+03:00 "But wait, PCG is a pRNG, didn't you say we should use hash functions instead of pRNGs?" seedable pRNGs are isomorphic to extendable-output hash functions. Proof is left as an exercise for the reader.

2024-10-12T17:35:57+03:00 (#4w3ilsa) @ Well, I thought about writing a "proper" announcement post, but what would I put in it other than "oh btw I'm trying twtxt now, here's a url"? An entire gemtext post that basically consists of one sentence and one link seems kind of excessive to me.

2024-10-12T18:30:43+03:00 It's the dwelling place of a forgotten god! It's a heavyweight combat mech! It's the bastard child of Baba Yaga's hut! Hakurei Jinja, deploy! (animated music video, 2m31s)

2024-10-12T20:51:21+03:00 Dust Bunny: an anomalous little beast - small and fuzzy, and yet, not cute. It hops around erratically, shedding copious dander as it goes.

2024-10-13T05:29:04+03:00 [DONE] Report hedgehog sightings during night walk. Five total, four seemingly in fair health, one obviously afflicted and malnourished.

2024-10-14T06:21:11+03:00 Say no to cordless peripherals! Real mice have tails! (I just like not having to charge and/or swap out batteries all the time)

2024-10-14T09:37:47+03:00 Remember how we used to joke that the first thing a Windows user should do with Internet Explorer was ? Well, the first thing a Google Search user should search for is "ripgrep".

2024-10-14T09:48:13+03:00 ripgrep gives you search results that live on your SSD and load faster than it takes your screen to display the next frame. Google search results point to webpages that live in some datacenter halfway across the world. To actually access them you're gonna have to endure an excruciating, cross-continental network round-trip.

2024-10-14T09:55:52+03:00 Here's a picture of R. Adm. Grace Hopper holding up a one-microsecond long spool of wire: . Care to imagine how many microseconds it's take to span the entire breadth of the Atlantic ocean twice over?

2024-10-14T10:09:09+03:00 (#4w3ilsa) @ :waves: So it seems! I must admit that it surprised me. I did not expect to have anyone following me quite this early. But it's the nice kind of surprise :)

2024-10-14T16:31:29+03:00 > All happy families are alike; each misbegotten web page resolves the favicon url in its own way. -- Leo Tolstoy

2024-10-15T08:05:56+03:00 (#4w3ilsa) @ Actually, my twts from the last two days aren't showing up on , so I guess that no-one is following me and the reason my earlier twts did show up is that `yarnd` does a one-off fetch of any feed @-mentioned by a pod member. Comments in the code suggest that this is the case, see `internal/server.go`, commit `7dcec70e`, line 468. As the author of that code, can you confirm/deny?

2024-10-15T11:24:47+03:00 Kakoune macro to convert _OneTab_ export in selection to markdown: `shttps?://i(ffc)[gla]]dghP`

2024-10-16T09:19:29+03:00 Seen at the pond: a gathering of young mynas practicing their animal impressions. One goes "here's how you do a dove (Spilopelia senegalensis)", then everyone makes dove sounds for a few seconds. When the racket dies down, another myna goes "here's how you do a desaturated dove (Streptopelia decaocto)" and the process repeats.

2024-10-16T09:19:30+03:00 Also seen: an eyeless freak of indeterminate species. Swims in the pond and has long toes, like a duck, but lacks toe-webbings (and eyes), unlike a duck.


Source