vttoth

I am a software developer and author of computer books. I also work on some problems in theoretical physics. For more information, please visit my personal Web site at http://www.vttoth.com/.

Aug 242023
 

Whatever you think of The Rolling Stones, announcing their new album this way is… classy.

What is less classy is that I could not share the original link on Facebook because “news” cannot be shared on Facebook in Canada anymore. What can I say? Idiotic laws deserve idiotic reactions. And I say this despite the fact that I am not particularly fond of Meta/Facebook these days (to say the least) and I am not particularly antagonistic towards Trudeau’s Liberals either. Still, stupid breeds stupid.

 Posted by at 1:47 am
Aug 232023
 

Chandrayaan-3 landed safely on the Moon, cementing India’s position as a space superpower.

What can I say? Congratulations! Not sure who the gentleman is in this image that I saw on Twitter, but he certainly looks happy.

 Posted by at 12:48 pm
Aug 212023
 

Russia’s first probe to the Moon in nearly half a century, Luna-25, has crashed.

It would be easy to react to the news with glee, with schadenfreude. We are, after all, talking about a crash that denied a propaganda opportunity to Putin’s Evil Empire (maybe not quite as evil as Stalin’s regime but more evil, to be sure, than the USSR ever was in my lifetime).

But space exploration transcends, always transcended, national boundaries. Our petty squabbles look pretty… well, petty from the Moon. Chances are, if human beings are still around with an advanced technical civilization a millennium from now (or, if our machine descendants are still around) they’re far more likely to remember Armstrong’s first step on the Moon than Russia’s attack on Ukraine, the Cold War, or even WW2.

So this crash is sad news, Putin or no Putin. I hope India’s probe, Chandrayaan-3, is more successful. Fingers crossed. Things are looking good for now but it has yet to accomplish a tricky landing.

 Posted by at 11:57 pm
Aug 202023
 

Even before I began watching the penultimate episode of the current season of Star Trek: Strange New Worlds, I already considered this series, more than any other “Trek”, a true successor of TOS, The Original Series (or Those Old Scientists, the in-universe meaning of the acronym as revealed in the Lower Decks crossover episode.)

Then came this. A musical.

A bleeping musical! That they had the guts!

And they pulled it off. They actually pulled it off, without turning it into a farce, a ridiculous caricature.

In fact, the episode was actually… good.

Yes, perhaps it was unnecessary. One critic even called it “vapid” I think, though I certainly don’t think that’s accurate. Silly? Yes, but think The Trouble with Tribbles. Or even The Squire of Gothos. Silly is permissible in Star Trek. It doesn’t have to be all-serious, all the time. Not everything that happens in space on a 23rd century starship is about the future of humanity if not all life in the galaxy. Sometimes it’s about just… singing. (Or saving the galaxy from a subspace improbability quantum whatever event that all this singing was about.)

Sure, Subspace Rhapsody is by no means the best of Strange New Worlds. But the fact that they had the guts to make this episode and the talent to pull it off… I think that cements SNW as perhaps the best Star Trek series ever (at least to date), certainly the best since TOS.

 Posted by at 10:17 pm
Aug 182023
 

And then there is this. The rate of increase in atmospheric methane has been rising since the mid-2000s. The curve is becoming ever steeper.

Surprisingly perhaps, it’s not from natural gas producers, industry, or vehicles. Not even cow farts.

It’s apparently in large part coming from tropical wetlands. Climate change is still indirectly responsible as it is the changing climate that changes the vegetation that, in turn, results in more methane production. But the consequences of this rise in methane levels can dwarf anything CO2 will do. A “termination-level” event, they call it, which sounds alarming and it should be: even though it does not mean our immediate termination, it may mark the termination of an epoch, just as in the past, when similar rises in methane events marked the end of the ice ages. Except that there’s no ice age at present.

 Posted by at 5:47 pm
Aug 182023
 

Yellowknife is not a large city by Ontario standards, but it is the capital city and the largest community in the Northwest Territories of Canada, with over 20,000 inhabitants.

And it is about to be evacuated entirely today, because of the imminent wildfire threat.

Yes, it’s a faraway place but it is still incredibly scary that tens of thousands of Canadians are uprooted, some taking their cars, some boarding evacuation buses or flights, fleeing their homes, traveling through landscapes that are like warzones, with burned buildings and burnt-out vehicles often in sight.

No, I won’t rant about climate change. There can be other contributing reasons behind this unprecedented wildfire season, though I bet climate change is by far the most significant contributor.

I wonder what prompted N.W.T. authorities to take this drastic step. I may be wrong but I have a feeling that the devastation in Maui was a wake-up call, and they wanted to avoid a similar disaster. Having said that, I sincerely hope that Yellowknife will be spared and its inhabitants can return in a few days.

 Posted by at 2:43 am
Aug 162023
 

In case there is any doubt, Putin’s Russia is doing its darnedest best to prove that they are a bona fide menace to the world.

There are people in the world who are hungry today. Food prices are rising again worldwide. In a leading industrialized country, it’s a mere inconvenience to most people. Elsewhere, it’s a disaster.

Russia, meanwhile, bombs… no, not military installations, not strategically important infrastructure, not even elements of Ukraine’s defense industry…

… but grain warehouses.

Seriously, forgive me for not mincing words but what the fuck is wrong with these people? I mean Putin and his followers and their almost textbook case of villainy.

 Posted by at 7:12 pm
Aug 122023
 

Here’s a Hungarian-language letter, an official note from 120 years ago that has been making the rounds on the Hungarian Interwebs for many years already. As far as I know, the letter is real, penned by a well-known Hungarian scholar, also known for his poetry. Below is my translation: watch it, the language is more than a little, hmmm, rough.

506/1903

To the esteemed Public Works Office
in the town of Pecs

Concerning your official transcript 1090/1903 that arrived with yesterday’s mail, in which you ask what needs to be done with the old spurs that were found in the outskirts of the village Magyarbeki? With official respect, my answer is that you gentlemen should fuck your spurs, because in this heat of 35° Reaumur, we cannot deal with such shit.

Aug 18, 1903, Budapest.

With all due respect,
Horsedick up your ass
Dr. Laszlo Rethy
Deputy Director, Hungarian National Museum, Department of Coins and Antiquities

To the Hungarian Royal Public Works Office of District XIV, Pecs

Ahem. For what it’s worth, 35°R is 44°C or about 111°F.

In other words: damn hot.

 Posted by at 4:51 pm
Aug 122023
 

One of the many unfulfilled, dare I say unfulfillable promises of the tech world (or at least, some of the tech world’s promoters) is “low code”. The idea that with the advent of AI and visual programming tools, anyone can write code.

Recall how medieval scribes prepared those beautiful codices, illuminated manuscripts. Eventually, that profession vanished, replaced by the printing press and, eventually, the typewriter. But what if someone suggested that with the advent of the typewriter, anyone can now write high literature? Laughable, isn’t it. There is so much more to writing than the act of making nicely formed letters appear on a sheet of paper.

Software development is just like that. It is about so much more than the syntax of a programming language. Just think of the complete life cycle of a software development project. Even small, informal in-house projects follow this model: A requirement is identified, a conceptual solution is formulated (dare I say, designed), the technology is selected, problems are worked out either in advance or as they are encountered during testing. The code is implemented and tested, bugs are fixed, functionality is evaluated. The code, if it works, is put into production, but it still needs to be supported, bugs need to be fixed, compatibility with other systems (including the operating system on which it runs) must be maintained, if it is a public-facing app, its security must be monitored, business continuity must be maintained even if the software fails or there are unexpected downtimes… These are all important aspects of software development, and they have very little to do with the act of coding.

In recent months, I benefited a great deal from AI. Claude and, especially perhaps, GPT-4, proved to be tremendous productivity tools of almost unbelievable efficiency. Instead of spending hours on Google searches or wading through StackExchange posts, I could just consult Claude and get an instant answer clarifying, e.g., the calling conventions of a system function. When I was struggling to come up with a sensible way to solve a problem, I could just ask GPT-4 for suggestions. Not only did GPT-4 tell me how to address the problem at hand, often with helpful code snippets illustrating the answer, it even had the audacity to tell me when my approach was suboptimal and recommended a better solution.

And yes, I could ask these little robot friends of ours to write code for me, which they did.

But this was when things took a really surprising turn. On several occasions, Claude or GPT not only offered solutions but offered inspired solutions. Elegant solutions. Except that the code they wrote had bugs. Sometimes trivial bugs like failure to initialize a variable or assigning a variable that was declared a constant. The kind of routine mistakes experienced programmers make, which are easily fixable: As the first, draft version of the code is run through the compiler or interpreter, these simple buglets are readily identified and corrected.

But this is the exact opposite of the “low code” promise. Low code was supposed to mean a world in which anyone can write software using AI-assisted visual tools. In reality, those tools do replace armies of inexperienced, entry-level programmers but experience is still required to design systems, break them down into sensible functional components, create specifications (even if it is in the form of a well-crafted prompt sent to GPT-4), evaluate solutions, perform integration and testing, and last but not least, fix the bugs.

What worries me is the fact that tomorrow’s experienced software architects will have to come from the pool of today’s inexperienced entry-level programmers. If we eliminate the market for entry-level programmers, who will serve as software architects 20, 30 years down the line?

Never mind. By then, chances are, AI will be doing it all. Where that leaves us humans, I don’t know, but we’re definitely witnessing the birth of a brand new era, and not just in software development.

 Posted by at 12:23 pm
Aug 112023
 

One of the things I asked Midjourney to do was to reimagine Grant Wood’s famous 1930 painting with a gentlecat and a ladycat.

Not all of Midjourney’s attempts were great, but I think this one captures the atmosphere of the original per… I mean, how could I possibly resist writing purr-fectly?

Well, almost perfectly. The pitchfork is a bit odd and it lacks a handle. Oh well. No AI is, ahem, purr-fect.

 Posted by at 7:21 pm
Aug 112023
 

Here’s a sunflower, which grew in a large planter right here on our driveway, as photographed by my beautiful wife just the other day (before Ottawa got an incredible deluge of rain):

If you look closely, there’s a bumblebee in the flower. May there be more! I keep reading about the crisis pollinating insects face worldwide, sometimes accompanied by tragic images of entire beehives, dead. Pollinating insects play an essential role in nature, including our food supply. And they seem to be in serious trouble. Climate change, habitat loss, reckless use of insecticides, whatever the reason, it might be a good idea to take this problem seriously before it is too late. (Just don’t turn it into politics please. It’s a real crisis, not fodder for virtue-signaling by wannabe liberals or progressive-bashing by wannabe conservatives.)

 Posted by at 5:38 pm
Aug 112023
 

Howard Hughes was a great example. A captain of industry, a tycoon, whose life ended in mysery, ruined by mental illness no doubt, but wealth and success must have played their part, along with nearly limitless hubris.

There are others, both real-life folks and characters in fiction who fell into this trap. The tycoon Andrew Ryan of the Bioshock computer game franchise. Elon Musk with his increasingly erratic decisions that led, among other things, to the on-going corporate value destruction at Twitter.

We all know the expression, tragedy of the commons. But what to call it when wealth and power destroys a person, one who gave so much real value to the world, one who started off as a visionary, a revolutionary “captain of industry”? I asked our AI friend Claude and Claude offered a perfect answer: call it the tragedy of the tycoons.

I even have the perfect illustration, courtesy of our other AI friend, Midjourney.

 Posted by at 4:03 pm
Aug 082023
 

Sticking to the cat theme (in case anyone has any doubt, yes, I am quite fond of cats) here’s Midjourney’s take on some gentlecats and ladycats celebrating this momentous occasion.

 Posted by at 3:24 pm
Aug 082023
 

For the longest time as developers, we were taught not to reinvent the wheel. “There is a library for that,” we were told, so instead of implementing our own solutions for common, recurring tasks, we just imported and linked the library in question.

And sure, it made a lot of sense. Countless hours of development time were saved. Projects were completed on time, within budget. And once the system worked, it, well, worked. So long as there was a need to maintain the software, we just kept the old development tools around for the occasional bug fix and recompile. I remember keeping a Visual Studio 6.0 configuration alive well into the 2010s, to make sure that I could offer support to a long-time customer.

But then… then came the Internet. Which implied several monumental paradigm shifts. One of the most fundamental among them is that a lot of software development no longer targeted cooperating users in a closed environment. Rather, the software was exposed to the public and, well, let’s face it, not all members of the public have the best intentions in mind when they interact with our systems.

Which means that third-party code turned from an asset into a substantial liability. Why? Because of potential security issues. Using old versions of third-party libraries in public-facing systems is an invitation for disaster. Those third-party components must be kept up-to-date. Except…

  • Updating a component may break other things. There is a need for extensive regression testing, especially in complex systems, to ensure that an upgrade does not result in unintended consequences.
  • Updates are not always available. The third-party code may no longer be supported. Source code availability can mitigate this to some extent, but it can still result in a disproportionate level of effort to keep the code secure and functional.
  • Long-term reliance on third-party code implies long-term reliance on the integrity and reliability of the vendor. Code ownership can change, and the new owners may have different objectives. In extreme cases, once reliable third-party code can end up being used as Trojan code in planned cyberattacks.

For a while, there was a great need for third-party code in Web development. HTML4 had limitations, and browser implementations varied wildly. Widely used third-party libraries like jQuery made it possible to prepare code that ran well on all major platforms. But this really is not the case anymore. “Out of the box” HTML5, CSS3 and modern JavaScript are tremendously capable tools and the implementation across major browsers is quite consistent these days, with only minor idiosyncrasies that can be easily dealt with after a modest amount of testing.

So really, my advice these days to anyone developing a new Web application is to avoid third-party libraries when possible. Especially if the application is intended to have a long life-cycle. Third-party code may cut down development time slightly, but the long-term costs may far exceed those savings. And there will still be more than enough to do just to keep up with other changes: witness the changes over time that occurred in browser security models, breaking once functioning Web applications, or the changes between, say, PHP5 and PHP7.

And of course there are still valid, legitimate use cases for specialized third-party libraries. For instance, in a recent project I used both MathJax (for rendering mathematical formulas) and markdown (for rendering displayed code). Developing something like that from scratch is just not an option.

Why am I harping on all this? I am currently facing a minor crisis of sorts (OK, that may be too strong a word) as I am trying to upgrade my Web sites from Joomla 3 to Joomla 4. Serves me right, using a third-party content management system instead of writing my own HTML! Worse yet, I used some once popular extensions with Joomla, extensions that are no longer supported, and which are wholly incompatible with Joomla 4. Dealing with this is difficult and time-consuming.

It would be a lot more time-consuming were it not for the help I get from our LLM AI friends. Thankfully, these tools, GPT-4 in particular, are immensely helpful. E.g., one third-party Joomla extension I used offered a nice way to present images as clickable thumbnails. This extension is now badly broken. However, GPT-4 already helped me write a clean, functional alterative that I’ll be able to use, and thus avoid having to redesign some important pages on my site.

 Posted by at 2:16 am
Aug 072023
 

The game’s Web site may be dated (hey, it’s a nearly 20 year old template… yes, we’ve been around that long, a lot longer in fact) but it now has a new feature: it is again possible to play MUD1/British Legends from the browser.

The feature is experimental and may still need to be disabled if it glitches but here’s to hoping that it doesn’t.

 Posted by at 2:57 pm
Aug 062023
 

I don’t usually like climate panicmongering but this chart that I came across today is… Well, see for yourself.

These are ocean temperatures, by the way. Oceans are supposed to be large, stable reservoirs of heat. Which they probably are, except that surface temperatures also reflect changing patterns like changing ocean currents.

This massive deviation from the 20+ year average (more than four sigmas!) is difficult to comprehend. What it says about the changing climate, I have no idea, but it is unlikely to be good news.

If only we stopped making this political. OK, well, it is of course political in the sense that we need to make collective, i.e., political decisions on how we manage Spaceship Earth. But it should not be political in the sense that the facts are not political, and the proposed solutions should be weighed by their feasibility, efficacy and social impact, not political palatability.

And for heaven’s sake, stop the dumbed down oversimplifications. Next time I hear about someone emitting “carbon”, I’ll scream. Carbon is solid at room temperature. Carbon is not carbon dioxide, just as hydrogen is not dihydrogen oxide. I have yet to see anyone drinking liquid hydrogen… or emitting carbon. Perhaps the first step to take is to give people a more decent education in the sciences so that they actually understand what carbon dioxide is, what it does in the atmosphere, what “four sigma” means, and what things like heat reservoirs are in a climate system? Is that really too much to ask? Am I being a silly elitist or something?

 Posted by at 7:59 pm
Jul 312023
 

My high school classmate György (Gyuri) Matavovszky spent the last almost 17 months volunteering for the Red Cross, helping Ukrainian refugees. Without further ado, with his permission, here is an English translation of his latest Facebook post, which sums up his experiences and his personal journey, while also revealing a lot about the sociopolitical environment in which he lives in present-day Hungary.


I shall now take off the Red Cross vest that I first put on 503 days ago and have worn for about 50 night shifts since then. The Hungarian government is closing down the aid point set up at the BOK Hall due to the war, where newly arrived and other homeless refugees from Ukraine could come until now and receive very modest care, minimal food and drinks, hygiene facilities, camp beds with bedding in a communal sleeping area for one, in some exceptional cases two-three nights (since life in Hungary is so good that everyone’s situation surely gets resolved in one-two days, so no one needs to stay longer).

The hall opened for this purpose at the end of March last year. Back then, aid organizations and representatives of various other bodies were moved here from the train station. There was a children’s corner, doctor, pet care, child welfare services, ticket office, mental health support, shuttle buses ran hourly between the train stations and the hall, 1000-2000 people came through here daily back then, who were very easy to provide for initially, as we received huge amounts of donations. The number decreased exponentially, but willingness to donate even faster, so we soon reached the point where rather than abundance, it was need that made things difficult for us. Then everything slowly shifted to a lower gear, for example in November the medical care was also terminated, which I know because I had to accompany a sick person to the Military Hospital, and wait with them from 11pm to 3am for the four hours the Hungarian healthcare system needs to carry out a routine examination. In February, I was a hair’s breadth away from someone dying in front of me. I failed to recognize the signs of a heart attack in a refugee who arrived across the green, or rather blue, border (the Tisza River) – luckily a colleague of mine was more alert and called an ambulance just in time. In the end he survived, now he lives with his family in Győr, has a job too, we know about him.

But this is just one example, because there were many other very difficult situations, too. It wasn’t just the arrivals from Ukraine that were problematic, we Hungarians often didn’t get along easily either, there was tension even among the volunteers at times. Is it okay to give coffee in the middle of the night—this remained an eternally returning question that still has no consensus answer. Because if we give it, they get more lively and won’t let the others sleep, or make more demands of us, too. But if we don’t, we deny them the one joy they may have that day. We too often lost patience, but I won’t focus further on the downsides of our performance. On the very first night I decided that I’m not here to help the refugees, but they are helping me, and I stuck to that pretty much. I accompanied some of them to trains, planes, airport buses, when that was the simplest or most humane way to give directions. In the process, I always developed a connection with them that could no longer be let go of without tears—the worst is when you stand on the platform, hugging them and they hug you too, and you both know you will never see each other again. These moments were always unbearably painful.

The nights had their own arcs—the shift started at 8pm, by midnight we only felt like we were getting into it, by then we were usually tired enough to start feeling a bit numb from it. Somewhere between 2 and 2:30am was the low point, from when the mental state tips over, you start to feel the dawn coming, and this generally calms you down too. The second half of the night was always much easier, and in the morning not only does the sun rise outside, your heart is flooded with light inside too – I always left tired but with great peace in my heart – I will miss this feeling a lot.

Let no one think the BOK Hall is closing because the war is over and there is no more need for it. The war is not over, the BOK Hall would be needed, but the community is poor, I mean there is very little good intention in the budget, we are completely exhausted morally, in character, currently at rock bottom, though I’ve written a lot about this before. There will be something, somewhere instead, but it will be operated by the pro-government Maltese Charity Service, and for sure it won’t be worth even this much. I won’t participate because I’m not Catholic enough and anyway I’m sick of the whole thing. I was sick of it before too, but the Red Cross supervisor kept my spirit up, his name is Gyuri too, we could never decide whether I’m one and he’s the other, or vice versa, I think it’s the latter actually, in my phone he’s saved as Egyik Gyuri (Gyuri One).

I don’t want to be without social work long term, I hope one day I’ll wear a Red Cross vest again, I hope not too long from now. Now I need to pull myself together for mural painting, but if I can get that going maybe I’ll have time for something similar again. I don’t want to be a social worker, but from now on I want something like this always to be part of my life, because meeting unfortunate people results in a fantastically intense wake-up call, and I think in the long run it really helps staying awake. For example, you understand that they often live a much more real, much more honest, much more self-consistent life than us, who collect a pile of assured money every month, which we then spend floating in a beautiful bubble.

There is a lot of cognitive dissonance in the Red Cross too, but still it’s far from the worst organization in the world, its past shines through its present a bit, in my work I managed to meet exemplary people, including some much younger than me who can behave very consciously, very maturely in trying human situations, and in whom I see a lot of potential still. As I look at it, this hidden potential will be needed sooner or later, or rather is needed now, it’s just very hard for the penny to drop, it’s very hard for us to notice this spiritual need.

I won’t beat around the bush, before the war I too spent my days in deep slumber, and I still don’t feel fully awake. However, I very much hope enough bridges have burned behind me that I won’t be able to flee back to where I was living before. In this service ending now, I feel the next personal message from life: Gyuri – one or the other, doesn’t matter – You are mature enough now, You don’t need to do this anymore, because with what you’ve done so far, you’ve detached yourself enough from your previous mode of existence, you’ve gotten from A to B, and even if you don’t see filthy, dirty refugees around you for a couple months, you won’t slide back to where you were before. Yes, I feel this whole thing was an initiation, a tangible step on the path to becoming human, which I desperately needed, and by some miracle this time I didn’t brush it off with some stupid response, as I’ve done countless times before, but this time not. This is what war does!

 Posted by at 3:07 pm
Jul 272023
 

Don’t look a gift horse in the mouth, they say, so I will not question how, or why, just express my happiness that my frustration is over: Redmine, the software package that I use internally for project management, works again.

It all began with an unpleasant but unavoidable upgrade of the MariaDB database from the ancient version that is part of the CentOS distribution to a more recent one. (Which, in turn, is needed to upgrade my content management software on some of my Web sites.)

Everything worked after this (planned, reasonably well pre-tested) upgrade except for Redmine.

Redmine is beautiful, very useful, but also very frustrating to install and manage. It uses Ruby on Rails, a software environment that… OK, let me not go there. I’ll keep my opinion to myself.

I spent countless hours yesterday, to no avail. The Redmine system refused to start. I installed, reinstalled, configured, reconfigured, uninstalled, reinstalled… Redmine, Ruby, its various management tools, you name it. Nothing did the trick. I gave up long after midnight.

I dreaded the moment today when I’d be resuming that thankless, frustrating exercise with no assured outcome. But I need Redmine. I have too much information in that system that I cannot afford to lose. So eventually I rolled up my sleeves (literally) opened the browser tab that had the link, and hit F5 to refresh the page, expecting the same error message that I’ve seen before to reappear.

Instead… Redmine came up in all its glory, with all my existing project data intact. Everything works.

I was so shocked by surprise I almost felt physically ill. A bit like this Midjourney cat, upon receiving an unexpected, very welcome gift.

Don’t look a gift horse in the mouth they say, so I am not complaining. But I’d still like to know what exactly happened. Why things started to work all of a sudden. I told my beautiful wife to imagine leaving a half-finished knitted sweater in her room one night, only to come back the next morning and finding a beautifully finished sweater there.

My mind, for now, is in a deeply boggled state. I honestly don’t know how or why it happened. But I am a very happy cat tonight.


A footnote: After I wrote the above, late, late, late at night, all of a sudden Redmine failed again, with a different error. I was ready to tear my hair out. But I was able to fix the problem. The likeliest cause as far as I could determine is that although the Redmine site had the correct Ruby version identified, a default setting specified an older, incompatible version of Ruby. It was fortunate that I was able to fix it, otherwise chances are I’d have spent a sleepless night trying.

 Posted by at 7:06 pm
Jul 212023
 

I admit that for the longest time, I didn’t even like Tony Bennett. But that changed in recent years. Acquired taste, perhaps?

Anyhow, the legendary Tony Bennett is no longer with us. I asked MidJourney to imagine him in the afterworld, performing his most favorite song.

While there doesn’t appear to be anything particularly afterworldly in this picture, I think it’s a fitting tribute nonetheless.

 Posted by at 2:31 pm