===============
 News spectrum
===============

A mixed bag of news this month, so I approximately ordered them from
worse to better ones: the first one I would count as bad, the last two
as good, and the ones between those as more or less just the things
that happen.


Isolation
=========

Now YouTube videos do not load at all via Rostelecom without DPI
circumvention, which had to be tweaked again to keep working (as RKN
works on throttling it more aggressively, while it still did not admit
throttling it at all). Additionally, roskomsvoboda.org is blocked via
TSPU (without any public records or court rulings) now, among many
other websites and services, including Discord, which was blocked
while I was writing this. Unrelated to this, I tried setting a
WireGuard tunnel to a server abroad, and ran into such tunnels being
blocked, based on the protocol (similarly to the previously observed
IPsec blocks: only the first packet gets through). The ongoing events
keep leading to considerable loss of both time and money, on top of
ruined long-term plans (while planning in regimes like this one is
generally tricky). In the background, mostly the same people who
advocated Internet censorship, the strict blasphemy law, "traditional
values", and the war, now propose to ban the subject of evolution at
schools, which are already stuffed with indoctrination and
militaristic classes. According to RPORC/VCIOM polls, 30% of
respondents support such a ban, even without that being enforced by
the government and promoted by its propaganda yet, and the adjacent
results are worrying as well:
<https://wciom.ru/analytical-reviews/analiticheskii-obzor/darvin-zhiv-ili-o-vere-v-ehvoljuciju>.

Some of the fellow citizens actually cheering such developments is
disheartening to observe, both online and offline. It is
understandable when a government (a certain kind of it, at least)
wants to oppress people: that can be viewed as rational behavior,
assuming that their goal is to stay in power indefinitely. But then
there are folks who are far from the ruling class, yet still support
this, with arguments like "you cannot deal with these people
otherwise". So far I noticed such cheering only from those who were
jingoistic previously, but nevertheless it reminds me of Steinbeck's
(mis)quote on "temporarily embarrassed millionaires"; this lack of
solidarity also seems to illustrate the lack of what may be called
"class consciousness". On the other hand, "class" and other group
identity usage may be quite arbitrary, and sometimes manipulative:
most likely the cheering people employ different divisions and
identities, putting them on the side of people in power. I wonder
whether sociologists play with set theory, category theory, and
topology while modeling such group identities and their effects: those
seem potentially suitable. Though one may also observe people being
awful to their fellow human beings in general, not just any groups
within those, and often being sure that they are right in doing so,
for varied reasons. This whole thing works as an expensive and forced
interactive lesson in history, politics, sociology. While the
increasing isolation in general feels like the relatively sane world
gradually dissipating, leaving the ugliest bits exposed.

Somewhat related to this, there were elections here again, regional
ones this time. I keep voting on those, even without any hope that
they will actually work as elections: possibly there will be at least
traces of actual results left archived, producing a slightly more
complete picture, which may be useful for future analysis.

In yet other related news, there are more and more laws punishing for
sharing of certain kinds of information or views (particularly the
ones that are acceptable in most jurisdictions, and were so here a few
years ago) in public, which makes it increasingly uncomfortable to
publish texts. Which is likely one of the goals of those laws.

And just as I posted that, found that conversations.im (both the
website and the XMPP server) is blocked via TSPU (and its DPI-based
blocks) now. My mom's backup account is there, now it is offline.


A noisy fan
===========

It is chilly now, and one of my computer fans (all of which are about
12 years old) started making noises at night: apparently when things
cool down a little more, and its speed decreases. I used to notice
something like that in the past, but now it is even more
noisy. Uncertain which fan it is, but possibly a 200 mm one, on the
case, and a good replacement fan costs about $60 here, which may not
seem like much, but there are whole computer cases that cost even
less. So I am considering simply disconnecting the noisy fan: I have a
77 W TDP CPU without much load there, no graphics card, and there are
other fans working; the sensors usually show temperatures around 30
degrees Celsius.

Once again checking desktop computer parts, in case if I will have to
build one urgently. Ryzen 5 9600X is available now, so an inexpensive
new workstation with ECC memory can be built using it, which would
cost from about $900 (32 GB of memory, cheaper components, an SSD) to
$1800 (128 GB, more expensive components, SSD and HDD). Or could go
for Ryzen 5 5600GT with 32 GB of non-ECC memory, for about $600. Or
even Athlon 200GE with 8 GB, for mere $250, and that would be a fairly
usable computer.


uberspace.net
=============

The uberspace.net domain is secured for another year, but that went
messily and involved domain transfer to a new registrar: to
webnames.ru, aka Regtime, complete with failures to send confirmation
codes from them to gandi.net's forwarding, gandi.net not disabling
WHOIS contact privacy when it was needed, but webnames.ru briefly
publishing all the private information in the WHOIS database even
while it was supposed to be hidden; also looks like their domain
privacy does not include email forwarding, so the private information
will have to be exposed in case of a transfer out as well. Addition of
DS records for DNSSEC seemed to be buggy there (removing all the
records instead of adding new ones, so one has to re-enable DNSSEC to
get them published), which I reported, but the response was that they
checked the journals and everything worked correctly. No way to remove
individual DS records (only wiping them all and triggering an update
at once, effectively disabling DNSSEC), either. And it requires at
least two name servers to be set. While password length is still
limited to 16 characters there, even though I reported to that company
months ago that it is not great and contrary to NIST SP 800-63B. This
mess was not entirely unexpected: somehow I keep hearing stories of
such messy dealings with registrars. Yet it generally functions, even
if with some limitations, numerous warts spotted in a single usage
session, and help from the support, and it may be suitable for less
important domains. No idea whether there are better Russian
registrars, but I plan to try a different registrar if I will finally
decide to register a new domain name.

Likely the hosting of services using that domain will change soon,
too, so there will be at least a hiccup in their functioning. I moved
most of my things away already, and some of its services were unused
even before that; possibly just email and XMPP will remain, to keep
the contacts working. Those may be particularly tricky to move one by
one without disrupting their usage, but the small number of users
limits the potential disruption caused by it.


emacs.ch
========

I thought to take a break from Mastodon and let the account go along
with the emacs.ch instance, but then decided to move it instead, in
order to preserve the contacts, and to keep it as a backup
channel. Still taking a break, but while having an account, at
hachyderm.io now.

Still planning to let the posts go: I have a backup, but the
highlights are written down in this blog already. There are some minor
news and observations that did not make it into this blog, like me
discovering recently that "The Modern End" song by Tristania is a
cover of the song by Seigmen, former members of which formed
Zeromancer; I had both Tristania and Zeromancer in the playlist for a
while, but had no idea about that connection, and perhaps I should
look more into Seigmen and Zeromancer. Or a link to the "Peppa Pig
effect" Wikipedia article, which I found amusing, and in line with my
past observation that British cartoons are packed with British
idioms. And there are food pictures, some culinary news that did not
make it into blog posts. But nothing particularly useful or notable,
and perhaps it is better to not cling to every little memory or
observation.


Work
====

Quite a lot of work lately, some of it is urgent again, even though
those tasks are about adding new functionality, not about fixing
something that broke. Hurriedly adding new functionality is always
awkward: feels like bad planning (especially given requirements last
modified months ago, first created more than a year ago, which should
be implemented and demonstrated in a day or few), and the resulting
interfaces--which can be hard to change later--tend to be worse when
done in a hurry.

I had a little more time than usual, because of the skipped physical
exercises, but it is not pleasant to work while having a cold.

One of the tasks involved a basic web API and UI. I used a CGI program
for that again, with the Haskell "cgi" library, which is nice:
lightweight and simple, compared to web frameworks, and does the job,
especially for small projects. Also used nginx's http_dav module for
file manipulations, and have set HTTP basic authentication in it. In
the same project, made use of systemd.path to asynchronously process a
file on modification, then thought that perhaps I could have replaced
some of the CGI-based endpoints with simple file upload and retrieval,
then similarly processing the uploaded files on the server: not very
different from what is there now, but maybe a little simpler. Though
CGI usage still has the advantage of returning status codes and
messages.

The UI was trickier: it had to be made in another couple of days,
involving dynamic forms, while I have not done anything of the sort in
many years, and while sick. I already had an OpenAPI/Swagger schema
prepared, so hoped it would be easy to hook it into a generic UI
(something more user-friendly than Swagger UI, that is, which I have
also set): the task is very common, and there is so much of JS around;
possibly at least a little bit of it as useful. After a day of poking
those projects, found some buggy and half-baked projects for that,
then one made as a React component (so I would have had to figure how
to use React), and finally discovered "JSON Editor"
("json-editor/json-editor" on GitHub), which works, even supports JSON
schema references (though I still designed the structures in a way
that avoided duplication without relying on references), and is easily
usable without additional dependencies. Not the nicest UI, but allows
to edit relatively complex structures (involving arrays of structures)
using a mouse. But then frontend developers were found to work on it,
so the JSON Editor was not used in production. As usual, cannot say
that I liked the resulting web UI, but at least it is not as broken as
some of the others.

Apart from that, once again I ran into the crontab-style or
systemd-style schedules not being quite suitable for running tasks at
regular intervals inside a fixed time interval. But then noticed that
since I support those two slightly different formats already, and each
time component in those is represented as an array of "from, to, step"
triplets, with some of the time components already overlapping (day of
week, day of month), I could as well add the third format with a
single new component for Unix time, so that then I can set ranges with
steps like "1728320000-1728492800/600", and the awkward problem is
solved relatively nicely. Maybe could also consider augmenting
crontab-style and systemd-style formats with it, adding it in the end,
maybe with the "@" prefix, so that all those components could be
combined with this one, though it is not needed at the moment.

Now thinking how to deal with the increasing requirements for image
rendering for variable-message signs: those used to be either texts
(using custom Haskell bindings to pangocairo for text rendering,
finding a suitable font size) or fixed-size images, then I added
support for combinations of those arranged horizontally, with padding
to handle smaller images, then added horizontal centering, vertical
centering, then a special layout of three elements for a special case,
and now more requirements arrive to adjust that special layout. Now
thinking that maybe it should support some layout templates, or even
something that would direct text rendering, possibly something like
(La)TeX, PostScript, troff, or SVG, though all those have notable
drawbacks. Would be nice to have something simpler, lightweight, but
with a good support for texts (including drawing it in a box, fitting
its size).

Also trying to use a token bucket to limit how much data is
interpolated during time series data preaggregation in PostgreSQL: a
mechanism more commonly employed in networking, but seemed appropriate
here, to similarly throttle the rate. Not entirely happy with
preaggregation depending on wall clock time though, maybe it would be
better to separately store data on interpolations during the
preaggregation, so that it would not take too long to query.

I have also been asked to introduce worse hacks, like setting system
time to a minute into the future (and disabling time synchronization),
to compensate for some delays that way, not to mention special cases
in the code that is supposed to be generic. Going to try to fix those
things properly once the hurried stage will be over, but collecting
technical debt for now.

The isolation-related weirdness creeps into the work as well: in
addition to considering "fatherland software" (rebranded and certified
old versions of FLOSS or licensed proprietary software), now some
waste the time on "fatherland servers" (rebranded Chinese servers,
with vague specifications). So much effort just to fake things for
political points. While advertising the results as being produced
locally, at the same time diverting resources from what little could
have been actually produced. Though even this way, those are far from
the most wasteful and destructive actions going on. And maybe this
"fatherland" stuff is not too different from "cloud", "blockchain",
and "AI": those also involve peddling the same old things, but with
rebranding, though those still allow to use up-to-date versions.


Cold
====

Caught a cold again (possibly COVID: there is yet another mutation
spreading around now, and I temporarily lost the sense of smell
again), and it is unpleasant as usual. Took a break from exercises,
skipping ten days.

Looked for medicine to alleviate some of the symptoms, been once again
reminded of the abundance of placebos: such faking, reminiscent of
aforementioned "fatherland" thingies, is practiced in pharmacology for
a long time. But the incentives are clearer there.


XHTML
=====

I switched my homepage to the non-XML HTML syntax, since the XML one
is increasingly phased out: XHTML was retired with the XML syntax
incorporated into HTML 5, then HTML 5 was retired, now there is the
HTML "living standard", and the XML syntax is not recommended there,
so we are back to messy HTML, without a fixed specification. I produce
HTML with a few errors (such as XSLT producing closing meta tags), so
it does not pass validation anymore, but it is still more compatible
with clients and other tools than the valid XML syntax was.

Now I am thinking of switching away from XSLT as well, focusing less
on HTML, possibly even using a custom markup language or m4 (which
would not be far from that). Then I could use it for both notes, which
rely on hyperlinking and target the web, and blog posts, which aim
both Gopher and WWW, and do not need inline hyperlinks as much. I
mostly use XSLT to maintain indexes, skip boilerplate while setting
topics via RDFa (which is not really useful), generate the Atom feed;
such tasks should be manageable with m4 or shell scripts.

Could consider lightweight markup languages, too. I am not entirely
happy with any of those, particularly with references in them, which
differ a little too much from what is normally used in actual plain
text, and all the unnecessary things that complicate them,
particularly their processing (arbitrary HTML embedding for
CommonMark/Markdown, Python bits for reStructuredText, Emacs ones for
org). Well, those things I keep speculating on in the "markup
languages" and "formal human languages" notes.


PGP
===

There is this story unfolding since last year, with the new OpenPGP
RFC 9580, and the competing LibrePGP, which is what GnuPG supports. I
only found the LibrePGP's arguments in that split, though I guess
there must be the new OpenPGP RFC's authors' arguments somewhere as
well, something justifying initiation of a likely schism, which
usually complicates the adoption (as it already is with various email
containers for those: OpenPGP's two variants, S/MIME).

In the general struggle between compatibility and simplicity, I think
a fine compromise is for the core specification to stay as simple as
it can, but allowing extensibility for either new features or
compatibility with older versions. It is not perfect, either, and as
demonstrated by XMPP, it still spawns new competing standards, but at
least not a standard per implementation.

I guess some people are happy to have the standard separated from
GnuPG at once, as some are complaining about the experience of using
it, in particular about there being too many options. I personally
find GPG to be fine, as there are many much less pleasant to use
tools, though as one may expect from a long-running and general
project, the standards and the tools come with historical baggage.


Physics
=======

I reached chapter 8 in the physics textbook. At this rate it would
take another half a year to finish the part on mechanics, and two more
years then to finish working through the other parts, but even if I
will keep working through it this slowly, it would be fine: I am not
in a hurry, and it is nice to solve those problems regularly. So far
it is enjoyable, and I hope to keep going with it.

Occasionally I am thinking of writing some game to make use of those
physics: something with movement, ramps, pulleys, springs, friction,
collisions, potato pendulums. Maybe eventually with more than plain
mechanics (e.g., with electromagnetism). Sonic the hedgehog comes to
mind when I imagine those things, and possibly platformers with
cartoon-like two-dimensional graphics (and side view) in general,
since those may look like physics problem sketches. Many of the
problem statements describe an amusing (and simplified) world already,
seems like it may be fun to put it together and extend. Or possibly it
could be more of a quest game, solving physics problems as the player
goes through those animated sketches mixed with amusing
stories. Actually this reminds me of my past thoughts, which I had
while studying other things, or practicing other hobbies, like formal
verification: while enjoying something, I tend to think that others
probably would enjoy it as well, and possibly it could even be wrapped
into a game, but then noticing that it is probably unnecessary, as the
thing itself is available directly, and more useful that way. Yet I
keep thinking of such a quest game, or possibly simply a libre physics
textbook (which would be nice to have as well) with such illustrations
and themed problems. Actually a textbook and a quest game could be
basically the same thing in different forms: the former being static,
the latter being animated and interactive, but with the same story
connecting the same problems.


Armenia
=======

Visited friends in Armenia (Yerevan) for a day, it was nice. Tried a
few tasty local dishes (khurdjin, tava kofta, dolma), saw a few places
(the Cascade and a park near it, the Opera house and adjacent
locations, some old monastery on a mountain).

Attempted to try Armenian coffee (like Turkish coffee, but with
cardamom), yet at first the restaurant staff seemed to forget about
that part of the order, and after my inquiry they brought a cup in
which I did not notice any cardamom. Maybe will try to brew it myself
instead.

Refreshed my memory of airport navigation and flights in general,
too. Bought a small bag for hand luggage, since my usual backpack is a
little taller than 40 cm, while the restrictions in this case were
40x30x20 cm; but then saw that people bring even much larger bags and
nobody cares; apparently I overprepared, but at least did not worry
about it then.

Tried nice mineral water there, "Jermuk"; once back home, found it in
a nearby store, and now trying others as well.

And tried to take selfies, since during the recent personal data
backup revisions I noticed that I do not care much about old pictures
of landscapes and objects, but pictures of people do hold a
sentimental value, and help to capture memories. I tried to look into
the camera while taking those selfies, but still ended up looking at
the display instead, and had trouble fitting everyone into the
picture: apparently it would take some practice to improve at that.


----

:Date: 2024-10-09