Today marks the 111th anniversary of the Lena massacre (Ленский расстрел), when Russian troops slaughtered gold miners on strike in Siberia, killing at least 150 workers.

A view of the Lone Maiden rock formation (far right) above the Lena River, Yakutsk

After that downer, on to the projects. April has almost no useful holidays, and some of the worst history of the year.

Morning Dashboard

GitHub - jcolag/dashA morning "dashboard" generator. Contribute to jcolag/dash development by creating an account on GitHub.

I forgot that I had done some experimental work with my Morning Dashboard, which panned out fairly well.

First, primarily for developmental purposes—it doesn’t do much in practice, since my computer turns off dark mode settings, when I wake up—the page now has a fairly generic dark mode. Since it uses a Solarized color scheme, it only changes the background color.

Then, now that the dashboard shows multiple day-by-day graphs, the idea of hovering over a single graph-bar to highlight it on its own doesn’t make as much sense as it did when one graph existed in a vacuum. Instead, using some JavaScript and naming conventions, it now highlights all bars from the same day across graphs, for straightforward comparison.

Mastodon Tool Trunk

GitHub - jcolag/tool-trunkTools for (John's) Mastodon workflow. Contribute to jcolag/tool-trunk development by creating an account on GitHub.

After looking for and soliciting suggestions for free cloud storage APIs, I ultimately stumbled across and decided on Pantry. It has a straightforward REST API—GET, PUT, POST, and DELETE commands for two kinds of objects—and allows storage of 100 megabytes of JSON. Their API also has examples using a variety of technologies.

I haven’t done much with it, but to validate that it’ll work, the Rummager now pulls the latest version of its “database” from Pantry, empty in my case, based on the configured ID. I also added a prototype to push information back, but admittedly haven’t put it to any use, yet.

Along the way, the styles improved. Rather than a single box with toot-related text, it now visually separates the toots and uses dashed lines at the top and bottom of the column to illustrate that the user can see more by scrolling.

CPREP Background Generator

GitHub - jcolag/background-generatorCPREP: A simple web application to provide semi-believable background details for fictional characters - GitHub - jcolag/background-generator: CPREP: A simple web application to provide semi-believ...

While a part of me wants to scrap the code entirely for not looking at all realistic—and even if I didn’t want to do that, I doubt that anybody would notice the change—the generated “face” SVG on the profile page now has all its tags closed.

Previously, I had apparently not generated the SVG with balanced tags. Because HTML isolates its images reasonably well, that didn’t affect the page past the border—hence my assumption that nobody will notice the difference—but it would have affected any further generated elements.

In fairness, this code changed happened a while ago, and I forgot about it until now.

Entropy Arbitrage

GitHub - jcolag/entropy-arbitrage-codeThe Jekyll blog for - GitHub - jcolag/entropy-arbitrage-code: The Jekyll blog for

While not the most critical project, it started to annoy me that, when I select text on my own blog, Firefox highlights it in Ubuntu-orange. I like Ubuntu-orange, but it doesn’t match anything else on the page, and that led to the realization that I don’t know what highlighting and selection looks like on other platforms.

Modern CSS has a solution for this, the ::selection` pseudo-class. Now, everybody’s highlights will use the header’s red color as a background and the background’s yellow as the text foreground.

While I kept this to one change, the pseudo-class could apply to any subset of the page, too, so that highlighting a heading could look different from highlighting a quotation or highlighting routine text.


I imagine that the next steps on the Rummager include displaying media, getting the user’s actual timeline, and saving seen toot IDs to the user’s Pantry account.

You can probably already see this coming without my explanation, but I plan for this to eventually filter out the “garbage” posts: The boost of something that I’ve already seen, the old news, the picture of something with nothing substantial to add, and so forth. At some point, I’ll also start hiding replies or showing it with its top-level toot.

Credits: The header image is Lone maiden formation by Linjye, made available under the terms of the Creative Commons Attribution Share-Alike 4.0 International license.