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:
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.
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.
To paraphrase Johnson, upgrading software represents the triumph of hope over experience
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.
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.)
Upgrading : old bugs out, new bugs in.
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.
Ah, APL. APL is the Zukofsky of programming languages.
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.
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.
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)…
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
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.
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.
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?
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…
À Gauche
Jeremy Alder
Amaravati
Anggarrgoon
Audhumlan Conspiracy
H.E. Baber
Philip Blosser
Paul Broderick
Matt Brown
Diana Buccafurni
Brandon Butler
Keith Burgess-Jackson
Certain Doubts
David Chalmers
Noam Chomsky
The Conservative Philosopher
Desert Landscapes
Denis Dutton
David Efird
Karl Elliott
David Estlund
Experimental Philosophy
Fake Barn County
Kai von Fintel
Russell Arben Fox
Garden of Forking Paths
Roger Gathman
Michael Green
Scott Hagaman
Helen Habermann
David Hildebrand
John Holbo
Christopher Grau
Jonathan Ichikawa
Tom Irish
Michelle Jenkins
Adam Kotsko
Barry Lam
Language Hat
Language Log
Christian Lee
Brian Leiter
Stephen Lenhart
Clayton Littlejohn
Roderick T. Long
Joshua Macy
Mad Grad
Jonathan Martin
Matthew McGrattan
Marc Moffett
Geoffrey Nunberg
Orange Philosophy
Philosophy Carnival
Philosophy, et cetera
Philosophy of Art
Douglas Portmore
Philosophy from the 617 (moribund)
Jeremy Pierce
Punishment Theory
Geoff Pynn
Timothy Quigley (moribund?)
Conor Roddy
Sappho's Breathing
Anders Schoubye
Wolfgang Schwartz
Scribo
Michael Sevel
Tom Stoneham (moribund)
Adam Swenson
Peter Suber
Eddie Thomas
Joe Ulatowski
Bruce Umbaugh
What is the name ...
Matt Weiner
Will Wilkinson
Jessica Wilson
Young Hegelian
Richard Zach
Psychology
Donyell Coleman
Deborah Frisch
Milt Rosenberg
Tom Stafford
Law
Ann Althouse
Stephen Bainbridge
Jack Balkin
Douglass A. Berman
Francesca Bignami
BlunkettWatch
Jack Bogdanski
Paul L. Caron
Conglomerate
Jeff Cooper
Disability Law
Displacement of Concepts
Wayne Eastman
Eric Fink
Victor Fleischer (on hiatus)
Peter Friedman
Michael Froomkin
Bernard Hibbitts
Walter Hutchens
InstaPundit
Andis Kaulins
Lawmeme
Edward Lee
Karl-Friedrich Lenz
Larry Lessig
Mirror of Justice
Eric Muller
Nathan Oman
Opinio Juris
John Palfrey
Ken Parish
Punishment Theory
Larry Ribstein
The Right Coast
D. Gordon Smith
Lawrence Solum
Peter Tillers
Transatlantic Assembly
Lawrence Velvel
David Wagner
Kim Weatherall
Yale Constitution Society
Tun Yin
History
Blogenspiel
Timothy Burke
Rebunk
Naomi Chana
Chapati Mystery
Cliopatria
Juan Cole
Cranky Professor
Greg Daly
James Davila
Sherman Dorn
Michael Drout
Frog in a Well
Frogs and Ravens
Early Modern Notes
Evan Garcia
George Mason History bloggers
Ghost in the Machine
Rebecca Goetz
Invisible Adjunct (inactive)
Jason Kuznicki
Konrad Mitchell Lawson
Danny Loss
Liberty and Power
Danny Loss
Ether MacAllum Stewart
Pam Mack
Heather Mathews
James Meadway
Medieval Studies
H.D. Miller
Caleb McDaniel
Marc Mulholland
Received Ideas
Renaissance Weblog
Nathaniel Robinson
Jacob Remes (moribund?)
Christopher Sheil
Red Ted
Time Travelling Is Easy
Brian Ulrich
Shana Worthen
Computers/media/communication
Lauren Andreacchi (moribund)
Eric Behrens
Joseph Bosco
Danah Boyd
David Brake
Collin Brooke
Maximilian Dornseif (moribund)
Jeff Erickson
Ed Felten
Lance Fortnow
Louise Ferguson
Anne Galloway
Jason Gallo
Josh Greenberg
Alex Halavais
Sariel Har-Peled
Tracy Kennedy
Tim Lambert
Liz Lawley
Michael O'Foghlu
Jose Luis Orihuela (moribund)
Alex Pang
Sebastian Paquet
Fernando Pereira
Pink Bunny of Battle
Ranting Professors
Jay Rosen
Ken Rufo
Douglas Rushkoff
Vika Safrin
Rob Schaap (Blogorrhoea)
Frank Schaap
Robert A. Stewart
Suresh Venkatasubramanian
Ray Trygstad
Jill Walker
Phil Windley
Siva Vaidahyanathan
Anthropology
Kerim Friedman
Alex Golub
Martijn de Koning
Nicholas Packwood
Geography
Stentor Danielson
Benjamin Heumann
Scott Whitlock
Education
Edward Bilodeau
Jenny D.
Richard Kahn
Progressive Teachers
Kelvin Thompson (defunct?)
Mark Byron
Business administration
Michael Watkins (moribund)
Literature, language, culture
Mike Arnzen
Brandon Barr
Michael Berube
The Blogora
Colin Brayton
John Bruce
Miriam Burstein
Chris Cagle
Jean Chu
Hans Coppens
Tyler Curtain
Cultural Revolution
Terry Dean
Joseph Duemer
Flaschenpost
Kathleen Fitzpatrick
Jonathan Goodwin
Rachael Groner
Alison Hale
Household Opera
Dennis Jerz
Jason Jones
Miriam Jones
Matthew Kirschenbaum
Steven Krause
Lilliputian Lilith
Catherine Liu
John Lovas
Gerald Lucas
Making Contact
Barry Mauer
Erin O'Connor
Print Culture
Clancy Ratcliff
Matthias Rip
A.G. Rud
Amardeep Singh
Steve Shaviro
Thanks ... Zombie
Vera Tobin
Chuck Tryon
University Diaries
Classics
Michael Hendry
David Meadows
Religion
AKM Adam
Ryan Overbey
Telford Work (moribund)
Library Science
Norma Bruce
Music
Kyle Gann
ionarts
Tim Rutherford-Johnson
Greg Sandow
Scott Spiegelberg
Biology/Medicine
Pradeep Atluri
Bloviator
Anthony Cox
Susan Ferrari (moribund)
Amy Greenwood
La Di Da
John M. Lynch
Charles Murtaugh (moribund)
Paul Z. Myers
Respectful of Otters
Josh Rosenau
Universal Acid
Amity Wilczek (moribund)
Theodore Wong (moribund)
Physics/Applied Physics
Trish Amuntrud
Sean Carroll
Jacques Distler
Stephen Hsu
Irascible Professor
Andrew Jaffe
Michael Nielsen
Chad Orzel
String Coffee Table
Math/Statistics
Dead Parrots
Andrew Gelman
Christopher Genovese
Moment, Linger on
Jason Rosenhouse
Vlorbik
Peter Woit
Complex Systems
Petter Holme
Luis Rocha
Cosma Shalizi
Bill Tozier
Chemistry
"Keneth Miles"
Engineering
Zack Amjal
Chris Hall
University Administration
Frank Admissions (moribund?)
Architecture/Urban development
City Comforts (urban planning)
Unfolio
Panchromatica
Earth Sciences
Our Take
Who Knows?
Bitch Ph.D.
Just Tenured
Playing School
Professor Goose
This Academic Life
Other sources of information
Arts and Letters Daily
Boston Review
Imprints
Political Theory Daily Review
Science and Technology Daily Review