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!

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s