Notes On Notes On Postmodern Programming
posted in CS Literature, Code Reads, James Noble, Postmodern Programming, Robert Biddle, Software Industry |0. Preamble
Let us go then, you and I,
When the code is spread against the sky
Like a patient etherised upon a table;
Code Read #11 from Scott Rosenberg deals with James Noble’s and Robert Biddle’s “Notes on Postmodern Programming”.
1. A Sentimentalist’s Apology
Let us go, through certain half-deserted streets,
The muttering retreats,
Of all-night coding, of cheap cube walls,
Of pizza boxes in the halls:
I have a confession to make: I love arithmetic. Not the addition and multiplication of engineering, but the study of numbers themselves. From Euclid’s Algorithm to RSA Encryption, no other subject mixes such simplicity and such depth. Even more beautifully, there is still so much unknown. For example, from Richard Guy’s book “Unsolved Problems in Number Theory“: Is every even number greater than 4 the sum of two primes? Are there infinitely many primes which are one more than a square? Is there an odd number that is the sum of its own divisors? Nobody knows.
However, a lot of progress in number theory is not so simple. The most newsworthy bit of math in living memory is Andrew Wiles’s proof that “all rational semistable elliptic curves are modular”. Even with a degree in pure mathematics, I don’t know what that means. But I have it on good authority that this implies Femat’s Last Theorm: the only solutions to an + bn = cn are those where n <=2.
Sadly (for me), important parts of the math behind this are beyond me.
In fact, important parts of the actual math so subtle that although there is no doubt this result will be used in many great proofs, some authors of those proofs will not completely understand the foundation of their own work. And while this is very postmodern, and pragmatically efficient, it leaves me feeling hollow.
2. On Success
Streets that follow like a tedious argument
Of insidious intent
To lead you to an overwhelming question …
I’m writing this on a browser written in JavaScript and C++. In a strangely modern way this browser runs programs written in JavaScript and HTML. But the brief hint of a JavaScript theme is gone long before becoming a narrative.
(How very postmodern to make a word processor on a web browser.)
The HTML and JavaScript are created by a program written in PHP, which is a remake of a bunch of PERL scripts. The database behind this PHP program took most of its APIs from a science project. The web server was originally professionally developed, but it is now run by volunteers. The whole thing runs on an operating system that started as a hobby. Amazingly, each one of these pieces of software was and is developed independently of the others, with perhaps only some plug-ins to make things work together.
They’re reliable, they’re free, and they’re so popular that thousands of people volunteer their time to maintain and improve them. By any measure this is a great success. And it is thoroughly postmodern: there is no grand narrative, nor ruling metaphor; it is complete, rather than consistent; it is wildly heterogeneous; there are hints of modularity; and while it’s all a bit messy, it is completely of its moment.
3. Delving into the Scrap Heap
To lead you to an overwhelming question …
But Noble and Biddle do not ask it.
Despite this scrap heap’s great success, I am frustrated because I have no real idea how any of it works. When something doesn’t work as I expect, the expectation is clearly that I should be able to just open the hood and start tinkering. But everything becomes a learning experience. I need reference pages on PHP, JavaScript, CSS, and HTML (which I feel a bit silly needing, but without such pages, I can’t remember whether onKeyPress works the way think it does in IE or Firefox). Then there are the pages for WordPress, MySQL, and sometimes Apache. (What was that directive again? Does this attribute, er.. parameter, er.. whatever, does it need quotes?). Then there are the blue-sky queries, where I find myself asking Google if there is anything like IceFaces for PHP.
Finally, I get something that works. Or rather, I get something that works once, on my computer. I try it a few more times (“hmm, still works for me…”), wish I had a QA department, knock on wood, and toss it out on this site. I hope somebody will complain if it doesn’t work for them, on their computer.
4. [[ Notes on ] …] Notes On Postmodern Programming
I grow old … I grow old …
I shall wear the bottoms of my trousers rolled.
Shall I part my hair behind? Do I dare to eat a peach?
I shall wear white flannel trousers, and walk upon the beach.
9350, 671, 305, 3, 0, 0, 0 ….
Add one simple phrase “Notes On Notes On Notes On Notes On Postmodern Programming”:
9351, 672, 306, 4, 1, 0, 0 ….
A little bit cute; a little bit clever.
5. Pragmatic Partial Capitulation
I will watch the scrap heap grow,
Watch languages come and go,
And yet I will softly call through this postmodern night,
For code with firmness, commodity, and delight.
All postmodern joking aside, postmodernism is more descriptive than prescriptive. This is the state of the industry, whether I like it or not.
A programmer today can do so much more, and do it so much more quickly, than was possible ten years ago. Our success is impressive. Perhaps we can hold less tightly to the idea that it should be easier and come at less cost.
And so, with only a little grace, and with some reservations, I yield to the inevitable. Grudgingly, I admit it’s all basically good.
P.S: Mea-culpa, Mr Eliot. You are il ultum miglio fabbro.

