Coda Music – 1997

I separated from my first wife in December of 1996. My first order of business was figuring out where to live, what stuff was mine, what stuff was hers, etc. But after that, I had to figure out what I wanted to be when I grew up.

I had the opportunity to start over if I wanted. Did I want to do music full time, and maybe go back to music school? Did I want to try to break into major league baseball as an analyst? (Although MLB still did not have people who did that at this point.)

I was not particularly happy at Sun, although it was fine. But I thought maybe I wanted to work on software that really captured my imagination.

I applied and got turned down to positions on productivity applications team like Adobe Photoshop. I talked to some friends who were in the video game industry, and the stories they told had all of the things I hated about StyleWare.

I knew nothing of web programming. I took at class (on Sun’s dime) at University of California Berkeley Extension on Java programming. That was my first introduction to object-oriented programming (and the only A I ever made in a computer science course), so many of the internet startups that were starting to spring up seemed out of reach.

There was, however, one piece of software I used all of the time for my music hobby projects. It was software I had envisioned writing myself the first time I saw a Mac in 1984, but I knew I would have trouble getting funding for and making money off of.

It was Finale. Finale was to music publishing what PageMaker was for traditional print media. It had everything a composer/arranger needed to write down music, play it back trhough the computer, and produce professional looking copy.

Screen Shot 2018-06-27 at 22.23.15
One of my arranging projects. It actually got played!

Finale was a Mac and Windows app. √

Finale leveraged my knowledge of music theory and preparation. √

And, in Spring of 1997, Coda Music had an opening for a programmer on the Finale team pm their website. √

So I applied. I put together a custom resume with all of my music preparation and theory experience, along with my Mac and Windows programming experience, printed it, and the first page of the above arrangement to show I knew something about the product, and mailed it away to Minnesota. In an envelope. With a stamp.

Was not surprised that I did not hear from them for the rest of 1997.

Sun Microsystems Laboratories – 1997

I started at Sun in March of 1996 as a contractor. I did not really like being a contractor, even if a 3rd party company was actually paying me. I had no health plan. The 401K was very limited. I had no vacation or sick days, and I was hourly. And had no job security. There was almost no paperwork to get rid of me.

I was particularly worried about the health plan. I have always had some chronic health concerns. At the time I started, my then-wife just put me on our plan. However, we separated near the beginning of the year in 1997, and I planned for the divorce to be final by the end of the year, and at that point, I needed a health plan. It’s one of the major reasons I was interviewing around in 1997.

After I had been there 6-9 months, I asked my manager about possibly getting a permanent position. He said, “We’ll see”. Finally, after about a year, I got an offer for a permanent position at Sun Labs. It was actually kind of an ultimatum. I was also told my contract was ending the Friday before the first day in the offer.

The pay was actually a little less than I got as a contractor. The assumption was that I was paying more for benefits as a contractor, which wasn’t true as long as I was covered by my wife’s plan. But given that this was the choice I had in front of me if I wanted to stay employed, I accepted the offer. And then I had insurance, a 401K plan, an Employee Stock Options Purchase plan, use of the onsite fitness center, etc.

The only downside: I had to get a new badge at Sun. This was a nightmare.

When I first joined Sun as a contractor, I did not initially get a badge. I had to sign in at the front desk to go to work, sign out when I left for the day, and had to have coworkers hold the door for me to get into the cafeteria (called “Sparcy’s”; Sun’s most successful product at that time were SPARC-based computers). I was told I was going to need to go to the badge offer to take care of this.

There were two badge offices in the Bay Area; one was in Mountain View, on the same campus as where I worked. However, it was only open 9-12 Monday, Wednesday, and Friday. There was a another office in Milpitas 20 miles away open 9-5 5 days/week. On Tuesday, I drove out there. I then found out that personnel records were uploaded and downloaded across Sun offices via satellite on Wednesdays, and I could not possibly get a badge until Friday.

Friday, I got a badge. Hooray. It opened the door to the employee area when I tried it. Hooray.

It did not, however, open Sparcy’s. Boo. I was then told I had to launch a piece of software called “BadgeTool” from a Solaris box to fill out a request for access to Sparcy’s. Well, I was hired to do Mac and Windows, and did not yet have a SPARC box to work with. I was then told that my boss had to launch “IT Support Tool”, and request a SPARC box for me.

So, the following Wednesday, I got a SPARC machine, which, actually, it turns out I needed for work anyway. I launched “BadgeTool”, this hideous X-Windows confusing app, and request access to Sparcy’s.

Friday, I was informed that I then had it. Great.

The next week, I had to go get something in my car, and go back into the building after 5:00. No dice. I went home. The next day, I asked my boss, and he said I needed to launch “BadgeTool” again, and request after-hours access.

That took a couple of days. And I was set.

Until July 1. My badge stopped working. My boss told me that as a contractor, I had to renew my badge every six months, and he had to request it, and he would.

So I had to get another badge. At least by this time, the Mountain View badge office was open 9-5 5 days/week. Oh, and I had to request access to the cafeteria, and after-hours access to the building again.

And I had to do it all again six months later, in January.

So, when I became a full-time employee, I had to get yet another badge. This time, however, I did not have to request the additional access (all employees had it), and I would not have to renew it every six months.

Badges. We don’t need no stinkin’ badges.

Xinet – 1997

A friend of mine had a friend who had a tiny company in Berkeley looking for a Mac programmer. They were a Digital Asset Management company, which meant that they had a system for tracking documents, including licensing, indexing, etc.

Berkeley was a long drive, but I made my way up there.

There was no chemistry here. I was not really interested in the product/company, and the person I talked to was not particularly impressed by me.

Saved me a hard decision about moving to East Bay, so I got that out of it.


Intuit – 1996

Intuit had a job listing on a Usenet listing in for Software Engineer. (Think Facebook group without graphics and you get the idea). I applied.

A nice lady called and talked to me about my Mac and Windows experience, and about computer science in general. She told me that she would get back to me about scheduling an onsite interview.

About a week later, she called back, and said that they had decided not to pursue me any more.

When I started dating my now-wife, I mentioned this to her. One of her friends worked at Intuit, so she talked to him. According to her, an executive at Intuit who had worked at Claris told the team that I was not a good engineer, and they should find somebody else.

Thing is, I loved this executive. I would have done just about anything for him. I consider him a role model for leadership.

Even after he torpedoed my chances at a job at his new company.

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;

    writeln('Hello, World!');

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.