Don’t Upgrade

by Kieran Healy on June 4, 2004

As a devotee of “structured procrastination”: I am constantly on the lookout for things to be doing instead of whatever it is I’m supposed to be doing. As long as what you’re doing has some value (even if it has less value than what you’re supposed to be doing) then you can end up accomplishing a reasonable amount, except for that thing you avoided doing. But I’ve learned the hard way that installing and, especially, upgrading software does not fall into the category of Inadvertently Productive Activity. Upgrading is basically guaranteed to not work properly, break something or otherwise create some unexpected and unpleasant effect. Upgrading can be perversely satisfying because you then have to fix whatever it is that got broken, which can involve a considerable amount of clever diagnosis and problem-solving to bring you back to the point where you were yesterday, before you upgraded. But this is not a healthy approach to life.

This is all common knowledge amongst software developers so I’m surprised that no-one told “The Royal Bank of Canada”: about it.

They upgraded some software and now “today is the fifth day in which [it] cannot tell its 10 million Canadian customers with any certainty how much money is in their accounts.” The bank can’t process automatic payroll deposits. Sadly, though maybe not surprisingly, this isn’t a symmetric error: the bank still knows who owes it money.

The stories are vague about what bit of software went wrong exactly. It would be nice to think that Microsoft is somehow to blame, but this is very unlikely. Although Microsoft’s products are up to trivial tasks like “writing letters”: or “making dogs fly”: or “running the electronic voting systems of the United States”:, no-one would trust them with something like a transactional database, an air-traffic control system or an electricity grid. Applications for stuff like that are usually written in languages you have never heard of, like “APL”: I only know about APL because my colleague “Ron Breiger”: uses it to write routines to do social network analysis. He gave me a tutorial in it once. Unlike most languages, APL has more than a hundred primitive operations, each with its own symbol. You need a “special keyboard”: to work it. Ron insists that it’s really quite intuitive, but alas unlike most professors he is a genius. Because it has so many primitives, APL is a pithy language. Here is a sample APL program to find all the prime numbers less than or equal to a specified integer:

PRIMES : (˜R ∈ R º.× R) / R ← 1 ↓ ιR

That’s the whole thing. A “full explanation”: is available, but not from me. I recommend “this page”: which contains opinions about APL and better-known languages like C (“A language that combines all the elegance and power of assembly language with all the readability and maintainability of assembly language”), C++ (“an octopus made by nailing extra legs onto a dog”) and FORTRAN (“Consistently separating words by spaces became a general custom about the tenth century A.D., and lasted until about 1957, when FORTRAN abandoned the practice”).

There is a broader point here about the sociology of credit and confidence in highly-automated contexts that are subject to failure. But mainly I think the lesson is, Don’t Upgrade.



q 06.04.04 at 10:02 pm

Bundled functions and requirements depend on trust and give greater flexibility which is not always a good thing.
If customers were charged for the service of “how much money is in their accounts” a cost 5 dollars a year, the bigwigs would not have allowed the error to happen, as the mistake would have cost them 50 million dollars.
If George Bush was charged a million dollars for every person who died in Iraq during war and occupation since 20 March 2003 maybe he would have thought more clearly about a clearly defined exit strategy.


liberal japonicus 06.04.04 at 10:20 pm

To paraphrase Johnson, upgrading software represents the triumph of hope over experience


Mr Bill 06.04.04 at 10:23 pm

Joke told by former NCR (remember them?)softwear developer:

What’s the difference between softwear salesmen and used-car salesmen?

The used-car salesmen know they are lying.


Jeff Doyle 06.04.04 at 10:58 pm

Since we are telling jokes: The difference between hardware and software is that you can change hardware.

Seriously, the question to ask before upgrading is: why? The answer is seldom compelling. (usually reduces to raw neophilia.)


yabonn 06.05.04 at 12:22 am

Upgrading : old bugs out, new bugs in.


Chris 06.05.04 at 1:02 am

Back in 2002 at a big company that no longer exists (for unrelated reasons), we used a 1996 or so version of Lotus Notes. It was annoying as heck to use but we never got viruses and there were never any upgrade hassles.


Carlos 06.05.04 at 1:27 am

Ah, APL. APL is the Zukofsky of programming languages.


Mike Huben 06.05.04 at 1:44 pm

APL was my first programming language. I loved it, but it warped me in many ways that took years to unlearn. Funny how I can still read and understand it 30 years and roughly 16 languages later.


consigliere 06.05.04 at 3:26 pm

My brief love affair with APL (a “write-only” language) was 25 years ago. It was the perfect programming language for undergraduate students of analytic philosophy – especially those who wrote miserable, confused senior theses on Frege.


bryan 06.05.04 at 4:54 pm

Well nobody seems to have linked to J yet, so after APL two other Vector languages rose to compete, J, by Iverson with help from Roger Hui available at
say “APL but only using the ASCII character set” although of course there is more to it than that, and K, used by many top finance companies and totally unreadable IMHO found I can’t remember where.

“Applications for stuff like that are usually written in languages you have never heard of,”
or in C (eerhh), C++ (aaarggh), Java (ugh)…


Mary Kay 06.05.04 at 7:03 pm

I don’t do software upgrades myself, that’s why I have a husband. A husband whose doctoral thesis was, in effect, an enormous computer program. (An Automated Search for Supernovae — for a PhD in astrophysics.) A husband whose *hobby* is hardware geeking. Who knows I am a more than competent user but totally uninterested in programming. So I just had to try to explain to him why I was laughing hysterically at a blog entry about programming languages and upgrading software. Finally I said, “It’s Kieran Healy. Everything he writes is both good and funny.”

MKK–still snickering


infoshaman 06.05.04 at 8:07 pm

Thanks for the entry. You connected me with a part of my intellectual past. I programmed in APL in the 70s for a professor of sociology named Nick Mullins, who forced me to read papers by Ron Breiger. I vaguely remember reading a part of Ron’s PhD thesis. Ron’s subdiscipline, social network analysis, is evidence to the contrary that “anyone can do sociology”!

I now support the US air traffic control system. The current US ATC software is written in a mix of “C”, Jovial and assembly language. The software’s ancient (early 1980s design) and held together by a small cadre of very dedicated engineers. If the Bushies don’t keep cutting Federal civil agency funding, the next version of the US’s ATC software will be fielded around 2010. And it will be written in “C++”.

I suspect that, as with many major software projects, the Royal Bank of Canada cut corners on its development effort. Only about one of every six hours of SUCCESSFUL software projects is spent writing code. But since managers are in a hurry, they don’t let the designers do their up-front job properly, then they insist on cutting over to new software before the testers are finished. The consequence is not surprizing: “Pay me now, or pay me later!”

Bryan: “k” is available at I discovered it about two months ago, and it’s a blast…like APL on speed! Give it a look.

Finally, not all APL code is unreadable. In the mid-1980s, the General Accounting Office reviewed my implementation of an econometric model of the US military compensation system. Once I taught the auditors the APL basics, they could understand the model well enough to approve it for use.


novalis 06.05.04 at 10:00 pm

I know at least one person who programs in Perl these days because it reminds him of APL.

And if you really want APL back, Perl6 will allow unicode operators.


John Quiggin 06.05.04 at 10:05 pm

I loved the structured procrastination link – this is precisely how all my filing, tidying and similar jobs get done. Contrary to Perry, I find a paid job with a genuine deadline best, since it really encourages procrastination. The cost is that you have to actually do the job in the hours left after fear of failure overrides desire for delay.

But how does all this tie in with the Dilbertian principle of active waiting, namely that if you ignore a problem long enough, someone will fix it for you?


Jonathan Goldberg 06.08.04 at 4:16 pm

no-one would trust them with something like a transactional database, an air-traffic control system or an electricity grid. Applications for stuff like that are usually written in languages you have never heard of, like APL.

If you think anything like the above is or should be written in APL then I really, really, really hope you never write one. And I am totally confident you won’t. APL, marvelous for what it’s for (up to a point), is not for any of those things.

Like others here, I went though a period of infatuation with APL. Later I began to see its limitations. One of which, in the dim and distant days when I used it, was a tendency to crash the machine. Although that’s not among the reasons I was thinking about above…

Comments on this entry are closed.