A Life of Software Development : Distributed Programming, Interview for a Job at Apple
1992-1995
Academia
Once I returned from Harvard, I concentrated on teaching and research. This meant that I did less programming of my own but worked with students on their theses and term projects. The department computer lab environment gave us a number of Mac computers, a few PCs, a Unix computer with HP-UX on it and a newly emerging Internet connection.
I could not continue my work on massively parallel computing since we did not have such a computer at the university. Since the algorithms I worked on relied on running multiple simulations in order to reach an expected result quickly, I thought I could use a different strategy and use all the computers in the lab for this purpose. The idea was simple: Since running multiple simulation experiments was scalable, I could use something similar to what I did on the massively parallel computer and distribute simulation experiments to the different computers from a central dispatcher and collect the results as they become available.
One problem I immediately noticed was the different computing power of all these different computers. If I sent the work equally to all of them, some would take a long time to finish the job sent and others would finish immediately. I decided to use the processor speed as a proxy for computing power and distributed work based on a normalisation using the computing power (thus faster computers got more jobs etc.) In order to make sure I did not block everyone working at the lab, I facilitated a remote start mechanism which let me start simulations after hours, when the lab was empty. These experiments gave me a lot of leeway in my research topic.
In this time period, I wrote a textbook teaching Object Pascal and going through data structures using object-oriented concepts. Most of the good books about data structures were written before the OOP era and I thought this book would be useful, with a lot of sample code and exercises to write more.
When I check the code included in the book today, I notice a few things about Object Pascal. First of all, pointers were very important and probably half of the code was to make sure pointers were handled properly. There were almost no collection classes and as such I had to develop my own linked-list objects. There were also lots of semicolons etc. which are not needed in modern programming languages. There was a lot of emphasis on subclassing and polymorphism, which was achieved through virtual methods.
I moved to an Associate Professor position after fulfilling the requirements. Apart from programming courses, I was also teaching Stochastic Processes and other statistics and engineering courses. Although I was thoroughly enjoying the academic life, it was now time to look for new challenges, thus I started to check for jobs abroad.
The Apple Interview
I was always an Apple enthusiast, from around 1983 when I started working at an Apple distributor and used the Apple // and Apple III. When I started searching for a new challenging job, I thought about applying to Apple and said to myself “Why not?”.
Steve Jobs had left Apple in 1985, in fact he had been forced out by John Sculley and the Board of Directors due to lack of success against the newly rising IBM and compatible PCs. He had gone and established the Next computer company with a bunch of his loyal employees. He had then bought Pixar. Although his Next was not commercially successful due to its high prices, it would eventually be the foundation for the modern Mac operating systems in use today.
Well, it was the year 1995. Apple was struggling with its operating system and had tried to uphaul it through a joint venture with IBM (Taligent). However, the new OS was not materialising and being postponed continuously. Although Macintoshes were semi-successful, their market share was dwindling against the myriad PC-compatible computers dominating the market.
Apple had started to produce a precursor of today’s iPad tablet in 1987. Apple had named this Personal Digital Assistant (PDA1) as Newton and had shipped the first devices in 1993. When I applied to Apple in 1995, it was for a position in the Newton team. I had quite some experience in the MPW suite and other Apple tools, but also brought a theoretical background that could be useful for the team.
I sent my resumé to the recruiter from Apple. She sent me a kind note praising my background and experience, but asked if I could prepare a resumé which was less academic. It was no big problem, so I revised it and emphasised the professional/software activities. After a couple of emails going back and forth, she asked if she could arrange phone interviews to facilitate the process ahead of face-to-face interviews. It was August 1995 when I had the interview. I remember that the interview was with around 4 people, including the Project Manager of the Newton team. They were in California and I was in Istanbul, so the interview was held at strange hours. The overall atmosphere was positive, or maybe that was my impression.
However, in the next few months the process was not moving very fast and I was getting frustrated to have no feedback. In the meantime I had interviewed for an Operations Research / Programming Senior Scientist post in the Netherlands and that resulted positively in September 1995. I had already started the academic semester and as such could only join the organisation around March 1996. I went back to Apple one last time to check whether there was any progress in their recruitment process. They replied that they were having talks with some local people as well and it would be far easier for them to hire a local developer, so they advised me to go ahead and accept the position I was offered. So, that was the end of my attempt at a dream position at Apple.
However, when I look at this years later, I considered myself lucky. The reason being, of course, that after several failures (for Newton and other Apple products), Steve Jobs would come back as a new saviour with his Next team and one of his early decisions in 1997 would be to scrap the Newton. Newton was well-ahead of anything at the time it was created but failed due to a few reasons: It was very expensive; it was announced but it took quite long to get it released but by that time competitors had already produced similar PDAs; it relied on technologies (e.g. handwriting recognition) which were not yet mature. The Newton team was disbanded, I don’t know if they stayed with the company or not.
I had already started to use some C++ instead of Pascal in my last years at the University and I would use it in my next job in the Netherlands.
This term was actually coined by John Sculley to refer to this product and took its place in IT vocabulary.