>>14Whenever you see your colleague, you are always surprised. He is clean shaven, save for a carefully trimmed moustache, dressed in a nice, ironed shirt carrying a TI-89 in the front pocket, and 501 jeans. He has no smell, and has medium length hair and deep intelligent eyes. However whenever you try remember his face or describe him to others all you recall is an ancient man with wisdom (not just intelligence) in his eyes, and a long white beard, the only words you can utter in such a situation are inexplicably "The Sussman". You ignore this phenomenon.
Your colleague walks you through the high level algorithmic program flow required to solve the problem using Mathematica. Your eyes glaze over as he offers explanation after explanation of finite element analyses, efficient vector field simulation, how Mathematica possibly does this or that, how Mathematica can't give you the last term of some ODE while Macsyma can etc. etc.
You partition definite tasks regarding interfacing with the CAD software, which is written partly in Java partly in C++, but your colleague and yourself also leave a lot of room for improvization. You write the GUI extensions to the program in a week and spend the next week or so visualizing their use and refining the design. You implement the required stubs for the heavy lifting. Your colleague on the other hand attempts to understand the heavy lifting discussed earlier using Mathematica by experimenting in Common Lisp and looking at the Maxima source with his hands on his head. He explains what he is doing to you and you provide constant input, which he values and respects. You like the way he writes programs, but you have huge reservations on how these things will work in Java without being slow or overly verbose.
Once your colleague thinks he has everything down-pat, you and your him to work implementing and refining things Java. Your colleague and yourself work together writing tests and making them pass.
But when it came to the system as a whole, your colleague surprises you with feats of Java wizardry you had not previously dreamed of. Java to him was as malleable as Smalltalk. He summoned Java spirits you have never even heard the name of: The reflection API (yes you've heard of it, even used it, but like this? never), hand coded .class files, dynamic generation of classes and methods in one amazing symphony. The internal data structure of the 3D part was turned into a winged edge structure, from this symbolic expression trees represented by Java objects were generated, from those programs were born! You finally understood. Of course, the STRUCTURE and INTERPERTATION (nay, in this case compilation!) of computer programs. From data structures representing symbolic expressions (You had often made the mistake of describing this or that algebraic expression from this or that source literally, "No no no!" the wizard would admonish, "how are you to check if its monotonically increasing? how are you to know if adding another term wouldn't give you a better local optimum? keep it symbolic, only when you are sure you can't do better then compile it and send it to the FPU!") programs were born. Efficient. Beautiful. Computer programs tailored to the needs of the run-time system.
The beauty! In Java! You had thought it impossible. You thought such beauty was reserved for those mysterious and impenetrable languages like "Haskell". But what "elegance" you saw in all those Haskell tutorials could not compare. Nay in the face of such magnificence all the things you once admired were revealed to be cruel farces, jokes, bad jokes. Bitterness flowed through you for a second, but just as quickly your thoughts turned back to the magic that was now taking place. Such wizardly control over the machine. You were enamaored!
One day however there was a segfault. When it happened your colleague shed a single tear of sorrow. You hastened to explain if you could ask the vendor for sources and use valgrind and maybe in Visual Studio which has a good visual debugger but your colleague put his hand up and said "It's no good, back in the old days this would trigger a restart, I could M-. right to the source, we could write the hack and shadow the faulty symbol, leaving the bug in for any other part of the program that relied on it... as it is, it would be a waste of time".
Your remarkable colleague fell into a deep depression. He called in sick the next two days, while you worked your hardest to get things to an acceptable level. It was only a week till shipping time.
Your colleague eventually came back, and you both ironed out what was left, finishing your task only a week late, which the customer didn't seem to care about.
The wizard left just as mysteriously as he came, and you never saw him again. However you learned an important lesson, and the experience changed your life.