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
Jul 202023
 

The new tonight is that notorious murderer Paul Bernardo was lawfully transferred to a medium security prison and shall remain there.

And that’s the way it should be.

No, I am not a friend of Bernardo. He deserves to remain behind bars for the rest of his life and then some.

But he also deserves to be treated exactly like any other criminal in Canada’s justice system. We don’t do mob justice in this country.

Keeping him in a maximum security establishment just to satisfy the public’s demands, just to further the political interests of those in charge would be an appalling thing to do, and I am very glad that Canada has not chosen this path.

 Posted by at 9:01 pm
Jul 142023
 

So here is the difference between a normal and a polarized society.

Suppose your country has a blue party and a yellow party. One day, a prominent blue politician gets caught. Doesn’t matter what, corruption, sexual abuse, whatever. A common, but serious, crime.

In a normal society, the reactions are like this: The blue party expels the person and expresses its regret that such a person held a prominent position within the party. The yellow party condemns the politician, but refrains from generalizing; they express recognition that such a “bad apple” does not represent their opponent.

End result: the political status quo remains, the perpetrator lands in prison, the rule of law is upheld and the respect and trust in the system of institutions remains strong.

In a polarized society, however, something else happens: The blue party defends the person, calls the accusations politically motivated lies, and accuses the yellow party of abusing the system of institutions in a “witch hunt”. The yellow party will point at the perpetrator, using him in propaganda that suggests that his behavior is characteristic of the blue party, which is full of corrupt abusers who think that they are above the law and would twist institutions just to protect the guilty.

End result: political polarization deepens; the perpetrator may go free or, if punished, celebrated as a victim of politically motivated false charges and persecution, the rule of law is undermined, and respect and trust in the system of institutions plummets.

A town square with citizens divided into two opposing groups spewing hate at each other — MidJourney

This, of course, benefits the most those activists and political opportunists who thrive on conflict and corruption. They exist everywhere: their presence is not restricted to any particular political party or ideology.

So take your pick. I much prefer not to live in a politically polarized society.

 Posted by at 2:02 am
Jul 042023
 

It appears that common sense prevailed over politically correct virtue signaling at The Weather Network (or maybe Environment Canada). Pregnant members of the species homo sapiens are again designated by the appropriate word from the vocabulary of the English language: they’re women.

Or is it that heat affects only pregnant women, whereas smoke affects pregnant non-women, too? I wonder.

In any case, I am firmly of the opinion that if we truly strive to build a society in which folks can enjoy life and live to their full potential without fear of discrimination or worse, theatrical excesses like the expression “pregnant people” are not helping. Quite the opposite, while they appease a vocal, exhibitionist minority of activists, they are far more likely to bring tangible harm to others through the backlash they induce. I shall refrain from speculating how much of it is intentional (this is a big world out there, I’m sure some activists are cynically self-serving, intentionally contributing to a problem that they pretend to try to solve, in order to secure their own future, but others are just as likely to be genuine believers in a cause that’s important to them) but I have no doubt that it is harmful.

 Posted by at 3:15 pm
Jun 302023
 

I am looking at images of nearly 4000 year old clay tablets.

Clay tablets like Si.427, depicting a survey of land. And incidentally, also demonstrating the use of the theorem of Pythagoras well over a thousand years before Pythagoras was born.

If only I had a time machine… To witness how these people lived. How they laughed, how they cried. They studied, the learned, they applied what they knew. They built a magnificent civilization. They loved and they hated, they offered sacrifices and committed betrayals. They had fun, they enjoyed a good meal, they entertained. They lived.

And we know so little about them. What did they do for fun? What were they talking about at the dinner table? What were their hopes for their children? What did they know about the world? What were their trades? How did they pass on their knowledge to others? Did they travel? Did they enjoy a day of rest at the beach?

All gone. An entire civilization, that was routinely using artifacts with precision diagrams like this tablet. All gone and almost completely forgotten, other than these bits and pieces, these fragments.

It’s humbling.

 Posted by at 11:40 pm
Jun 262023
 

The next time (it happens often) I hear someone complain about scientific ‘orthodoxy’ that is used to ‘stop innovation’ and prevent ‘new entrants from entering’ the field (or equivalent words), I’ll remind them that these were exactly the words used by Stockton Rush, defending the design of his ill-fated submersible Titan.

Of course the consequences are far less deadly when the subject is purely theoretical, like fundamental particle physics or general relativity. But that does not validate nonsensical arguments.

Orthodoxy is adherence to tradition or faith. Science and engineering are about testable and tested knowledge, which is the exact opposite. What folks like Stockton describe as orthodoxy is simply knowledge that they do not possess (maybe because it takes too much of an effort to learn) or knowledge they purposefully ignore because it contradicts their preconceptions or expectations.

My condolences to the families of Rush and his passengers on Titan. But foolishness has its consequences. Sometimes deadly ones.

 Posted by at 10:33 am
Jun 252023
 

Here is a bit of history of which I was not aware: The window tax.

Back in the 18th, 19th century in many jurisdictions around the world, buildings, especially rental properties, were taxed by the number of windows that they sported.

The advantage of this tax was that it was easy to assess: the assessor just had to walk around the building and count.

The unfortunate reality, namely that the tax most disproportionately affected the poorest of the poor? Well, eventually these taxes were repealed but I wonder how many generations grew up in windowless rooms.

 Posted by at 2:26 am
Jun 082023
 

Glad I am not a politician or public personality as I am about to commit what would amount to political suicide, a’la J. K. Rowling.

The reason? This health warning by The Weather Network, that truly blew my fuse:

Middle line of the red warning at the bottom. That list of folks at high risk:

“[…] older adults, children, pregnant people, and people who work outdoors […]”

Pregnant “people”??? Seriously, why not pregnant primates? Pregnant mammals? Pregnant vertebrates?

Let me not mince words. This is virtue signaling at its worst, pandering to a loud, obnoxious group of “alphabet soup activists”, claiming to, but not really representing gays, lesbians and others who simply just want to live a life in dignity, respected as human beings, enjoying what should really be the inalienable right of every human being on this planet, to be left alone, to be allowed to live a life to the fullest in the company of those they love.

The biggest irony of all? Even as conservatives in many corners of the world, especially here in North America, are busy turning the fictitious country of Gilead from The Handmaid’s Tale into actual reality, what these activists do is no less harmful to women. Their agenda amounts to little more than the idea that “men are better than women at everything, including being women,” as someone recently put it on Quora.

Dear Weather Network, dear Environment Canada (if that’s where the text of the warning came from): Let this serve as a friendly reminder that the English language has a perfectly serviceable word to describe those members of the species homo sapiens who are biologically capable of becoming pregnant: they are called women. Check your dictionaries, it’s there.

 Posted by at 3:09 pm