In the 90’s, there were three main platforms to target for software: Mac OS, Windows, and Unix. Unix was far behind as a platform at that point because the reasonable Unix workstations (at that point made by Sun, DEC, SGI, or NeXT) were few in number and vast in price. For end-user products, Adobe targeted Mac and Windows and was very good about building balanced teams.
For Acrobat Search, the balance was not so good. There were two engineers on Windows initially: John Ciccarelli and Carl Orthlieb, plus Daryoush Paknad who was responsible for the indexing portion. Later, they dropped John, brought in Eswar Priyadarshan, and Kevin Binkley (both doing indexing).
On the Mac side, there was me. Or a portion of me since I was on Acrobat proper until it had shipped and Search was targeted for 2.0. Since I was the only Mac engineer for Search, when I was finally released from Acrobat, I was already behind and seriously outnumbered.
Carl was a great engineer. At one point, he was trying to implement a query language parser so that people could write relatively natural phrases “a or b but not c” and have them turn into something the search engine could manage. I had a book by Andy Tannenbaum that had a nice write-up of the railroad shunting yard algorithm. I handed Carl the book and he made short work of it. Out of that came CQL: Carl Query Language. Carl was very careful to pronounce it “COO-kull”, so it wouldn’t be confused with “SQL” (SEE-kwull).
It worked and it worked well and I was happy that all I needed to do was port it, instead of reimplement it. In the meantime, I was busy writing a UI library that could live in a plug-in in Acrobat because we were having so many changes to the UI that I needed a more effective toolset to allow me to keep up.
Carl and I used a shared UNIX box for source control. This was a mistake, but since we were just two engineers, it worked out. We staged files via FTP and then telnet’ed in and used sccs tools to maintain parity. It was painful, but the only other viable alternative was SourceSafe, also known as SourceUNSafe since it frequently self-corrupted its database.
Writing portable code was hard. There were a number of sins that one platform let you get away with that turned into hard crashes on another. When that happened (more often to me since I was behind and catching up), I’d walk into Carl’s office and interrupt him and let him know what was going on so we could collaborate on a fix. Carl, as often as not, would fall into a fit of drama that he had created a bug and would commit mock seppuku.
Carl and I got along pretty well. I teased him a little bit for being Canadian, but then he would turn around and make up stories about being Canadian. Like that every Canadian was required to serve in the Navy or Airforce and those in the Navy would end up with a tattoo of a moose wearing a toque on one butt cheek. A true Canadian knew that the moose’s name was Skippy.
Once I asked Carl’s wife about Carl’s butt tattoo. Utter confusion.
Later on, I moved out of my cube and into an office adjacent to Carl (this story will come later) and I was give and brand new PowerMac 8100 for development. One of the big things on this box was voice recognition (a precursor to Siri), which worked OK. You could name your computer (default was ‘Computer’) and you could address it directly. Things it recognized were, more or less, turned into AppleEvents and sent to the applications that published that they could respond to them.
It really couldn’t do much, honestly. It was a cute novelty, at best.
I named my computer ‘Carl’.
My Carl and the one next door responded with about the same latency except the one next door swore a lot more.
“Carl, what time is it?”
“It’s about two thir…God DAMN it, Steve.”
It was a fantastic misuse of technology, although certainly not the first and definitely not the last.