June 04, 2004

Don't Upgrade

Posted by Kieran

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 a 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.

Posted on June 4, 2004 09:16 PM UTC
Comments

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.

Posted by q · June 4, 2004 10:02 PM

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

Posted by liberal japonicus · June 4, 2004 10:20 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.

Posted by Mr Bill · June 4, 2004 10:23 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.)

Posted by Jeff Doyle · June 4, 2004 10:58 PM

Upgrading : old bugs out, new bugs in.

Posted by yabonn · June 5, 2004 12:22 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.

Posted by Chris · June 5, 2004 01:02 AM

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

Posted by Carlos · June 5, 2004 01:27 AM

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.

Posted by Mike Huben · June 5, 2004 01:44 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.

Posted by consigliere · June 5, 2004 03:26 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 http://www.jsoftware.com
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)…

Posted by bryan · June 5, 2004 04:54 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

Posted by Mary Kay · June 5, 2004 07:03 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 http://kx.com 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.

Posted by infoshaman · June 5, 2004 08:07 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.

Posted by novalis · June 5, 2004 10:00 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?

Posted by John Quiggin · June 5, 2004 10:05 PM

Re:
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…

Posted by Jonathan Goldberg · June 8, 2004 04:16 PM
Followups

→ Programming Languages.
Excerpt: Kieran Healy provides a pointer to how to understand different programming languages, and warns against upgrading: Crooked Timber: Don't Upgrade : APL is a pithy language.... A full explanation is available, but not from me. I recommend this page which...Read more at Brad DeLong's Semi-Daily Journal (2004)
→ Miscellany.
Excerpt: MISCELLANY....Teresa Nielsen Hayden:A student at the University of Kent who got zapped for plagiarism right before his final exams is suing the university for negligence, on the grounds that he’s been cheating in exactly the same way throughout his stu...Read more at Political Animal
→ Miscellany.
Excerpt: MISCELLANY....Teresa Nielsen Hayden:A student at the University of Kent who got zapped for plagiarism right before his final exams is suing the university for negligence, on the grounds that he’s been cheating in exactly the same way throughout his stu...Read more at Political Animal
→ Genius and wit in Arizona.
Excerpt: Here’s one Arizona sociology faculty member commenting on the genius of another. 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...Read more at Brayden King
→ Programming Languages.
Excerpt: Just for fun Programming Languages .Read more at McGee's Musings

This discussion has been closed. Thanks to everyone who contributed.