Borland – 1992

I am trying to keep this blog chronological, but there is no guarantee…

I joined the FileMaker Pro team at Claris permanently in late 1989. However, most of the team had been put together before I joined the team by a couple of years. I had a learning curve; I had been working on the Apple IIGS in assembly language for two years. I had to learn Mac OS. I also had to reacquaint myself with my old friend, Pascal.

My first programming courses at Rice were taught in Pascal, but we were switched to C for the advanced courses. I like Pascal better, but Pascal had some major problems. The biggest problem is that the standard for Pascal did not have some basic things like strings, dynamic allocation of arbitrary memory and typecasting, and compilation in multiple files. It was fine for teaching, but really, it was a limiting language, and C was better.

FileMaker Pro was written using the Pascal compiler provided by MPW, the Macintosh Programmer’s Workshop. MPW Pascal was based on a standard of Pascal built by University of California at San Diego. This version of Pascal had the missing features I listed above. It also had some fun classic Pascal features like sets, arbitrary array indices, etc. I found the language much more readable than C simply because the keywords are based more on English. C is designed to minimize typing; it’s very terse.

program Hello;

begin
    writeln('Hello, World!');
end.

Isn’t that friendly?

Alas, the C syntax won. C, C++, Objective C, Objective C++, Java, JavaScript, Golang… these all have syntax derived from C. It takes work to actually distinguish generic code written in any of these languages from each other.

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Hello, World!\n");
    return 0;
}

Isn’t that ugly?

Anyway, FileMaker was written in Pascal (this is public knowledge now; this presentation at a FileMaker Pro Developer’s Conference talks about it). The original database for DOS that FileMaker was built in was written using Microsoft Pascal, which was not that similar to UCSD Pascal, the basis of MPW Pascal. The original FileMaker developers ported their code to MPW Pascal because that was the first supported compiler on the Mac, and FileMaker for Mac shipped in 1985.

There had been an effort to put FileMaker on Windows from that time, even though Windows 1 and 2 were not commercially viable to build apps for. When Claris decided to port FileMaker to Windows 3.0, I joined the team that did the port.

And we had to answer the Pascal question once and for all. Using the 1990 version of Microsoft Pascal would have been painful; we could not have kept a common codebase for the Mac and Windows versions. The Windows version would have always been one release behind the Mac as we transmogrified it to Microsoft Pascal.

I started looking around. The first thing I did was I bought a copy of Turbo Pascal for $99. This compiler was incredible. It was sooo fast. And, more importantly, it was based on UCSD Pascal. This meant the source code for both would be very similar, similar enough to use a couple of custom tools to turn the code from Mac to Windows and back again.

The problem was, Turbo Pascal was only for DOS. It could not yet be used to generate Windows applications. I don’t know how I did it, but I managed to contact the developers at Borland, and I got Claris onto the Borland Pascal for Windows beta program.

It was still a huge task to port FileMaker to Windows, and it was a huge task for Borland to port Turbo Pascal to Windows as well. But we shipped FileMaker Pro for Windows in October, 1992, and Borland Pascal shipped a couple of months before, after we were well on our way.

This was not the first compiler that shipped soon after we got FileMaker to work with it.

There was a Borland Developer Conference in Santa Clara about a mile from Claris that I went to, and I met the developers and the QA team from Borland Pascal. I had lunch with one them, the QA person I had worked the closest with.

“FileMaker is doing OK?”, he asked.

“Oh, yes. Your tools are working great.”

“You have reported a lot of bugs. They were very detailed. Have you worked on compilers before?”, he said, cutting up his entree.

I finished my bite of mediocre conference food. “At school. One of my favorite courses”.

“And you told me you have a lot of assembly language experience?”

“Shh! Don’t tell anybody! I don’t want to program in assembly any more!”

He laughed.

“We have openings in our compiler group. I think that you would be a good candidate for that team. Would you be interested in talking with us?”

I stopped.

“Where is your office?”, my mind whirling a mile-a-minute.

“Scotts Valley.”

“Eew. Highway 17?” I made a face.

“It’s great if you live in Santa Cruz.” He smiled.

“Well, either I do that death-commute, or my wife would have to do that death-commute. She used to live there before we got married, and moved into the valley to stop driving 17.”

“Well, think about it. Here’s my card. Send me your resume if you would like to talk.”

A couple of weeks later I send a Thanks; No Thanks mail. Borland was already starting to fall apart. They had a serious head start on everybody for Windows applications, but dropped the ball and let Microsoft’s apps blow them away. They did an ill-advised merger with Ashton-Tate. They shifted their focus from mass-market software to enterprise software. The reason they had openings in their compiler group is that they had lost some senior people.

I don’t regret turning them down.

Fun stats: It took about 35 minutes to build FileMaker Pro using MPW on a Macintosh IIfx. Using Borland Pascal, it took 4 minutes on a 33 MHz 386, and 2 minutes on a 50 MHz 486. Was incredible. And did not need a makefile (a difficult-to-maintain template for building). The only drawback is that it would only show you one error at a time. We got used to that!

 

Oracle – 1997

I honestly don’t know how recruiters operated before Google, LinkedIn, Facebook, etc. It must have been really hard work to get by on just building up your own personal database of contacts, of people who knew people, matched by skill set, where they worked, etc.

For whatever reason, one called me. Introduced himself. I grilled him on what he did and how he actually made money.

“I charge a fee of 20% of your first year’s salary if the company hires you.”

Oh. Now I understand. That’s also fairly lucrative when recruiting software engineers.

He wanted to put me in touch with this hiring manager at Oracle. I told him that I had not heard good things about working at Oracle. He assured me that this was different than the normal Oracle job.

A few days later, a fellow with some kind of accent (my guess was New Zealand) called me. He was going to start a company that was going to be spun out of Oracle. Oracle was going to set aside a bucket of cash, and looks for other investment partners to also put in cash. In any case, they were starting a software company, and wanted to talk to me about working there. He had me set aside an hour for a phone call.

To talk to him. We talked about software methodology. We talked about nit-picky areas of the C standard. We talked about QA and its importance (where I got to talk about my recent expertise in test-driven development). At the end of the hour, he said:

“Right then. I am going to make you an offer. But first I need to see some code samples.”

“I can send you the main files for my menu work on Tk for both Mac and Windows.”

“That will be fine.”

I asked a question that had been bothering me. “What kind of software is this?”

He replied, “That’s confidential. Once there is an offer on the table, there should be an NDA, and we can talk about that to help you make your decision on whether or not to accept it.”

“Well, I am looking forward to seeing this offer.”

“What do you expect in terms of salary?”

I took what I was making and multiplied it by 1.1. A 10% pay raise sounded nice.

“That shouldn’t be a problem. There will also be equity, and Oracle is providing the benefits.”

“Sounds good”.


Two weeks later, I got an email:

“My apologies – normally the process is a lot quicker than this. Unfortunately, Larry Ellison and Jerry Baker are reviewing the hiring budget and are sitting on the approval which I am waiting for – I’m told that this will be complete by Wednesday – and then it will take me a few more days (perhaps a week) to get a formal letter into your hands.”

He then laid out the terms, which were reasonable.

“I hope that you will forgive the delay and am sure you will find the offer a good one with good upside potential – significantly better than the potential elsewhere. If you have any questions, please let me know.”


One week later:

“I’m really sorry that I haven’t contacted you before now. My hiring is still being held up because Larry Ellison is undertaking a budget review. However I do hope to hear something positive tomorrow. I really regret the delay – profuse apologies and several beers owing – I really hope to have something in your hands by the end of this week in the form of a written offer but currently my hands are tied.”


Four more weeks later, I got a phone call.

“I’m afraid I have bad news. The entire project’s funding has been cancelled. Oracle decided that even if it was spun out, the work that this company would be doing was not something that Oracle wanted to be involved in. I am going to try to get venture funding on my own. If something happens then, may I call you?”

“Sure. That’s disappointing.”

“I assure you; nobody is more disappointed than me. Thanks so much for allowing me to waste your time.”


I never heard from him again. Still waiting to have beer with him. Would have been nice to meet him face-to-face.

And that would not be the last time the hiring manager has said that he was just “waiting for the approval” for an offer to be forthcoming. It’s amazing that companies post jobs, but when it comes time to pull the trigger, they have a change of heart, and eliminate the position or reorganize or lie to a candidate that they were going to receive an offer.

And this also did nothing for my image of Oracle as a company.

Microsoft – 1996

A friend got in touch with me.

“Hey, I’m working on the Internet Explorer team for the Mac. It’s just getting off the ground. We are recruiting, and I thought of you.”

“Sounds good,” I said. “Tell me more.”

He filled in a lot of non-important details (at least 20 years later), and then dropped the bombshell.

“It’s in C++.”

I gulped. “I don’t know C++.”

“Well, everybody understands that there is not a lot of expert experience out there, so if you know the basics you should be OK.”

The interview was scheduled, and I had two weeks to learn C++.


It was a different world in 1996. There were many roadblocks to learning C++:

  • Google was not yet up and running. There were other search engines, like Altavista and Yahoo, but having all of the language knowledge at your fingertips was a few years away. I bought Stroustrup’s book, and tried to read through it.
  • C++ was still relatively young. The language itself had been kicking around for a decade, but the available compilers were slow to implement all of the features.
  • I owned a Mac. I did not own any development environments. There were not free. They were several hundred dollars, and I spent money for my personal machine on music software.
  • At work, I had access to C++ compilers on Mac, Windows, and Solaris. However, I did not feel right learning C++ for a job interview on another company’s machines with the versions of compiler they were paying for.

Now, there are many, many free resources with free compilers for any language you want. Then, however, it was really hard without spending lots of money for the off-chance I might get the job.


Interview day. This Microsoft office was in Foster City. There were the only team there. Most teams, of course, were in Seattle.

  1. Resume deep-dive: The hiring manager went over my resume with me, asking me about each position, my education, etc., and tried to feel out whether or not I knew what I was talking about and whether or not I had social skills.
  2. Technical discussion: Discussion of some computer science concept. I don’t really remember the topic for this particular interview, but hash tables were very common for this in the nineties.
  3. Open-ended question: Here the Microsoft people were famous for asking strange questions. They asked me the famous “Why are manhole covers round?”. I talked about the fact that circular shapes minimized the area-vs-perimeter relationship. Oh, and it keeps them from falling in. (I’m ok with talking about this question, as it is one of the most discussed questions in the early days of the Internet).
  4. Coding example: “Write a C++ class for managing shapes”

How hard could it be? It is the quintessential example in almost every object-oriented programming book. I read through one.

I wrote all of the member variables and methods; they were straightforward. Then I had to write a constructor.

And I froze. It was painful. It was obvious to me that the interviewer wanted me to succeed. The vibes from all of the interviewers were awesome, and if I could just write this very simple constructor, I would get an offer.

I did not get an offer.

 

Connectix – 1996

One of my friends that had been at Claris contacted me about a position at his company, Connectix. They needed Mac engineers to work on Virtual PC, an application that pretended to be PC hardware so Windows could run. At this time, the Mac processor was on Power PC, but Windows was running Intel. So, Virtual PC provided an emulator that took Intel-compiled problems and ran them on the Power PC.

At the interview, we talked a lot about my assembly language experience, and my API experience in Mac and Windows. I thought it went well.

Not well enough. I was informed that they liked my experience, but really needed somebody with more low-levels Windows experience, like device drivers. They would keep my resume on file in case something came up.

Still waiting for that call…

JavaSoft, a division of Sun Microsystems – 1996

I was a contractor when I started in the Sun Microsystems Laboratories, and as a result, my security in the job was suspect. Oh, I think I was doing fine working on Tcl/Tk. I was learning something about X Windows, and I learned Test-Driven Development. Learning Tcl/Tk taught me an entire new paradigm of programming, that of scripting languages. Learning Test-Driven Development has been amazingly useful for the rest of my career. And befriending an industry pundit like the head of the Tcl/Tk team was exciting. In more mundane concerns, it was one of the best commutes I have ever had, 12 minutes from Menlo Park to Mountain View. The campus was next to a small lake, and adjacent to the Bay, and the walk I took everyday through that park was good for me.

But being a contractor bothered me. I had to go through hoops to get my badge to work (Sun reset them every six months). I did not get paid vacation, had any holidays forced upon me (and they weren’t paid either), and the medical benefits were non-existant at first, and then later, they were poor. And expensive. I was not treated the same by other personnel in the labs as everybody else was. And, as a contractor, I would have been first on the chopping block if there had been problems.

And there were problems. Our team was in a political competition for resources. We had a lot of people on our team compared to all of the other groups in the labs. We supported platforms other than Solaris (which is why they hired me).

And we weren’t Java.

110px-Duke_(Java_mascot)_waving.svg
Is this the first time a programming language had a mascot? I think that this is a 90s thing.

Java 1.0 had been released a few months earlier by developers in the Labs who had worked on it for 5+ years. It was the Labs’ biggest success story. Java 1.0 spread like wildfire throughout the industry, as it was much easier to develop websites with it than with C and C++, popular at the time. Sun Labs was pushing it for use everywhere, going so far as to develope a computer with everything written in Java. (Customers never saw this one. It was SLOW!) Java had all of the political clout and money, and Tcl/Tk was a weird little corner of the labs that was NOT Java.

Sun spun Java into another division called Java Soft. Late in 1996, Java Soft had an opening for an engineer to work on Java for the Mac. I interviewed for the position, not knowing anything about Java.

I honestly don’t remember much about the interview. They asked some technical questions, and gabbed with me about culture fit.

I still have two emails from that period. The first is a “well, we aren’t saying yes; we aren’t saying no”:

Sorry it has taken so long to get back to you.  The team thought you
would fit in here, but wants to interview some more people to see if we
can get someone with a bit more relevant experience.  So you are still
under consideration, but it is going to take some time for us to make a
decision.  Please feel free to ping me for an update on the situation
any time.

Note that there are hard carriage returns in that text; that was what email was in 1996, folks!

And then later:

Things have changed, and we’re not actively looking for a Mac person
at the moment, pending discussions with Apple on how we can work more
closely with them.

Well, it turns out that Apple basically agreed to take all of Java’s Mac development in-house, so Java Soft closed the Mac developer position.

So, no Java Soft for me. They did not have any Windows positions open…