Career Memoirs

Well it has been an adventure…  I was born in Rotterdam, The Netherlands but when I was in my teens my parents and I immigrated to Australia where I lived for about 18 years.  Then I immigrated to Canada and lived there for about six years and for the past 18 years or so I have lived mostly on the west coast of the USA with a few trips back to Europe and Australia to work on short term contracts.

This means I have worked in four different countries and over the years I have worked as a Computer Software Engineer, Software Developer, Computer Hardware Design Engineer, Enterprise Architect, Information Systems Manager and Software Development Manager.

Currently, I am residing in the Northwest of the USA and for over 10 years I have been working with Microsoft platforms and development tools like Visual Studio and the .NET framework.  I also monitor developments in the open source and Linux world and alternative development tools. 

Over the years, I have had the opportunity to work professionally in almost all aspects of the computer industry and this has given me a unique and broad perspective of the industry and projects I work on.  I have used this to my advantage in the past and present as this gives me an advantage.  Since I live in a small city like Boise, Idaho that does not offer many employment opportunities, I have mostly been engaged in contract work in recent years. 

It all began while attending college in Australia in the late 70’s and early 80’s.  Before this time, I was already experimenting with electronics and CPU evaluation kits.  Technology companies like Intel, TI, Zilog, Motorola, National Semiconductor etc. developed CPU chips and they would offer so called evaluation kits consisting of a printed circuit board with sockets for memory, a CPU, and usually a hexadecimal keypad and simple LED display and perhaps connections for such things as an RS-232 terminal (serial ASCII CRT or teletype with keyboard) and I/O ports some of which may be able to be connected to peripherals like a tape reader or some storage device.  In any case the early ones would require you to write assembly code on paper and you would compile this manually by looking up the object codes in a manual to generate the object code (binary numbers that the CPU chip could execute) and then push a button to put it in program mode and you would enter your object codes in and then put it in run mode to execute your code and hopefully see some results.  This may not sound like much fun, but it was; it was new and amazing at the time.  I am not sure if you can still experience the same feeling today like the first time you successfully manually created a little program that actually worked.  I guess today people buy those small micro-controller boards like Arduino Uno which may in fact have some of the same fun factors.

In any case, the next step was to build a complete computer system and at the time before the PC as we know it was available, enthusiasts using the so called Altair S100 bus had created cards and cases you could purchase or you could build your own based on circuits and designs published in various magazines.  By the late 1970’s they were mostly based on Zilog’s Z80 and would run an operating system from Digital Research called CP/M and later M/PM (a multi-user version).

Then not long after this, PCs started to become available such as the Apple 1, Tandy/Radio Shack TRS-80, the Commodore PET and others.  I chose the TRS-80 since I liked the Zilog Z80 chip as most of the others ran on different chips like the 6502 which I felt was not as powerful as the Z80.  At that time user groups were forming and I joined one of these and I started to realize that I had a talent for programming as in short time I was writing software for sale and teaching others in the user group how to program in Z80 assembly language and the Microsoft Basic embedded in the TRS-80 ROM.  In fact, I wrote a disassembler for Z80 object code and disassembled and reverse engineered the Basic interpreter and wrote the
“TRS-80 ROM Reference Manual” outlining the entry points of useful routines available in the TRS-80 ROM code.  This was happening during and after the time I was attending college studying electronics and I decided to focus my studies also on any courses I could find on computers and software development so I studied anything from Assembler programming, computer techniques (how to design CPU based computer systems) and even COBOL programming.  In any case I decided to gamble my career on PCs, or more exactly that they would become so popular that I could build a career on them.  This was at a time that “real” computer professionals regarded the PC as a hobby toy and only “real” computers like IBM mainframes and so called mini-computers from companies like DEC were worthy of building a career on.  Then in the early 80’s the IBM PC arrived and I easily moved to work with it and to support it.

TRS-80

TRS-80 Computer with expansion interface.

So after college, I started work fulltime for a start-up in Adelaide, South Australia called Micro-80 originally started to publish a magazine to support the TRS-80 which was popular in Australia, and to have a base to advertise TRS-80 based products.  We quickly expanded to sell and support a variety of equipment like Olivetti computers and typewriters as well as Hitachi PCs amongst others.  I used to write articles for this magazine as well as software in my spare time for these computer systems for sale but at work I was appointed to manage the technicians and design various computer hardware items, some of which are:

Centronics Interface for Olivetti typewriters.

I designed a printed circuit board with the necessary circuitry to interface Olivetti typewriters to the parallel port of a PC (also known as the Centronics Port since this printer manufacturer first invented it).  This typewriter was an electronic daisy wheel typewriter with its own CPU chip so it could print at a good speed but it did not have a port to interface to nor did we have a circuit diagram.  So to make it work I designed an interface to the keyboard socket that made the typewriter think it was being typed on.  At that time (before cheap PC printers became available) computer printers were expensive and small businesses like law offices wanted to be able to print out their contracts and letters using early versions of word processing software and since they also needed a typewriter this saved them money.

TRS-80 Expansion Interface.

Radio Shack (known as Tandy Electronics outside the USA) originally sold the TRS-80 as a keyboard unit with the CPU and up to 16 KB of memory in it and some simple ports for saving data to a Cassette recorder and a socket for the CRT screen.  If you wanted more memory or floppy disk drives you had to purchase a so called “expansion interface” which was a box that fitted under the CRT screen (see picture above) and was connected to the TRS-80 keyboard / CPU unit via a ribbon cable.  Now due to not so good design, the expansion connector was not properly buffered and the card edge connector was not plated.  The result was that the TRS-80 was notorious for crashing when the card edge connector corroded in time or there was electrical noise or static electricity around the unshielded ribbon cable.  The problem was that the first 16 KB of RAM was in the keyboard unit and the rest of the RAM was in the expansion box.  Now Dynamic RAM needs a regular refresh signal or it loses its memory and these relatively high speed signals did not like traveling through the un-buffered ribbon cable.  Static RAM was becoming available in the early 80’s and I designed an expansion interface for the TRS-80 with proper buffering and Static RAM that solved these problems.  In addition the circuitry also included the usual ports like RS232, Centronics Parallel Printer port and Floppy Disk ports.

Memory Cards for Olivetti Computers.

The Olivetti M20 computers were based on a Zilog Z8000 chip and for some reason there was a shortage of memory boards for them and I designed a plug in memory card which even Olivetti in Australia sold and supported at that time.

Switching to Software Development.

In addition to developing and supporting various computer hardware products, I would also write the occasional software application especially when we started selling the Osborne Computer systems.  This was a portable computer the size of a sewing machine containing two 5.25 Inch Floppy Disk Drives and a small CRT screen with the lid containing the keyboard.  It ran the CP/M operating system and there was a COBOL compiler available for CP/M so I developed a software system to gather statistical data and generate reports for the Citrus Growers Organization (or called something similar) which was a government related organization if I remember correctly.

Osborne Computer

Osborne Computer.

At that time, there was also a programmer that worked out of the Micro-80 offices that would write software for the computer systems Micro-80 sold; some of which were in its day quite sophisticated multi-user systems running MP/M.  In any case around that time, Hilton International (a five star international hotel chain) was building a new large Hotel in down-town Adelaide.  The new general manager (who was also a computer enthusiast) had made contact with our company and ordered a multi-user computer system but also needed software for Sales and Marketing and to manage and plan Banquets and Conventions.  At the time there were no software packages for this and software in general had to be custom written (no SQL either!) so Micro-80 was contracted to do this work as a pre-requisite to selling the computer system.

So as the time got closer to when the computer system was to be delivered with the software, one Monday morning the programmer’s office was empty… the guy must have thought that it was too difficult and gone what they call in Australia “Walk-About” (I think this is what the Australian Aboriginals said they did when they would disappear when expected to do something?)  In any case he was a goner and the manager of Micro-80 came to me and said “what are we going to do now?” and “I don’t suppose you can write the software?”  Probably foolishly; I said “Sure, I will do it…”

So there I was; first interviewing the Hotel Manager on what the requirements were.  The only thing available at the time was dBase a database system with its own interpreted programming language there were no SQL databases as yet.  Then I had to read the manual trying to work out how best to use dBase and how to program it to develop the software.  At one time during the development, I remember not knowing how to solve a problem, I was really stuck and I went to bed thinking about this and stressing out about it.  Then that night, I actually dreamt the solution and I woke up and about 2:00 AM in the morning I coded the solution.  I have heard some other people having a similar experience under similar circumstances; it is amazing how the mind works. The system was delivered on time with the software applications acceptable to the client.

In any case since about 1983 then, I have been developing software fulltime and since Hilton International was pleased with my work they offered me a job which I accepted.  At first as the so called “PC Coordinator” where I was maintaining the software I had developed for them and writing new software as well as traveling to other Hotel properties in Australia and installing the computer systems (IBM PCs) and training people how to use them.  Then in 1986 a new Hotel was being built in Brisbane, Australia and I was offered the position of Information Systems Manager and in addition to developing PC software I was in charge of IBM system 36’s running Hotel reservation and housekeeping software written in RPG (if you think COBOL is bad try RPG! Yikes…), point-of-sale systems for the restaurants, night clubs and other outlets in the hotels as well as the computer controlled telephone systems.  Since the Brisbane property was still being build I had the opportunity to oversee and design the building of the computer rooms, and wiring for terminals etc. as well as the training of staff on how to use the various computer and point-of-sale systems.

Developing “Shrink Wrap” Software for Sale.

During that time several things had happened.  First of as I was writing code in dBase for new applications, I was getting annoyed at the time (before we had UI design tools and before Windows) about how much time it took to basically copy and paste code from existing applications (at the time the only way to reuse code!) and the slow speed of the interpreted dBase application causing you to sometimes recode parts trying to speed it up.  Secondly, I had received a copy of the then new Borland “Turbo Pascal”.  Now unlike other dBase programmers that soon after that time switched to dBase like compilers like Clipper, I quickly recognized and became excited about the fact that this was a real programming language and that it was properly compiled and it had the ability to create overlays which was important due to the early PC’s having such little memory (64Kb).  In any case Borland also had this source code called “Database Toolkit” if I remember correctly and I recognized that I could modify this to create database files and indexes and the speed was very good in its day.

Therefore, I switched to Turbo Pascal and dropped dBase, but I still wanted to be able to reuse code without having to copy and paste and edit each time.  I also did not want to manually code the database access and screen display UI code.  So thinking about this I decided to create a kind of code generator and application development system where you could design the screens (later Windows) for data input and display and a report generator as well as a relational database editor / generator.  All this before SQL was known or available, so I developed the first system in Turbo Pascal and started using it for my own software development.  Using this system, I could now literally create applications in days that took weeks before as it generated all the code for me.  So when I was asked “how come I seemed to be so productive”, I demoed the system to the Hotel Manager who was an early PC adopter and he got excited and we decided to market the system for sale in our spare time as a side business.  It was sold until about 1994 under the name DataBoss.  Using this system various software packages were developed and sold and the system was eventually extended to have windows and was even ported to the UNIX operating system as well as to C++.

Then in 1987, I was called over to the USA to do some consulting for a company in San Francisco that specialized in banking software.  They wanted me to help them design and create banking software using the DataBoss system and extend it to include certain communications protocols to communicate with bank mainframes.  I worked on this project first in San Francisco and remotely in Australia but in 1988 I was offered a position to work with them full-time in San Diego, CA which I accepted.  Then in 1989 they struck a deal with a company in Spokane, Washington called ISC / Bunker-Ramo (later purchased by Olivetti) to work together with them and develop their Pinnacle PC product for banks using the DataBoss development system and I worked on that project until December 1990.  I did a lot of X86 interrupt driven real-time assembly language programming for terminal emulator and communications software so that the system could communicate with mainframes common in banks at that time like Burroughs and NCR.  At the end of 1990 my visa had run out and I decided not to stay as an illegal alien like everyone else was doing and wait until I could return as a legal alien (green card).

In 1991, I decided to return to The Netherlands for a while and contracted in Rotterdam for some software associated with the “Grand Slam” tennis tournament and in June that year I returned to Australia for a while until I was accepted for immigration to Canada. 

Focusing on Windows Development

I worked in Vancouver, BC for a few years first as a Software Development manager from 1991 until early 1993; late in 1993, I free lanced and wrote the “House by Mouse” software for the National Real-Estate company.  They had released a DOS version which was mentioned on a radio news broadcast as I was driving home one day.  Now at that time I had trained myself in Windows development using the Win32 messaging API.  So I went and got hold of this software and it was very rudimentary and awkward to use; it was screaming for a Windows version.  So I phoned them and contacted the developers at the company and asked them if they would be interested in a Windows version… they obviously did not know how to go about this but were “planning” for this.  Subsequently, I met with them and contracted to do the work.  At that time you could be a real “Consultant” and actually do the work and help teach them how it is done.  Now especially since the dot-com crash around 2000, so called consulting work is actually nothing more than contract programming where you get to sit in a cubicle and do the work the employees don’t want to do.  Often, you just end up doing menial work and do just what you are told; initiative or creativity is not desired.   But I digress; so I designed and wrote the system for them and helped their developers to come up to speed with Windows development.   

This was before the internet was commonly available, so this software was handed out to the general public on a floppy disk allowing them to view listings with pictures of properties and it had search capabilities.  It connected to a server via modem where it downloaded compressed information and pictures to view.  The system was written with Borland Object Pascal using the Win32 APIs.  I had rejected C++ in which I had done some work up to that point as an awkward convoluted programming language (which it still is) and shifted to Borland Object Pascal with great success.  Borland’s compilers were much faster than Microsoft’s compilers and Pascal also generated faster code than both Microsoft’s and Borland’s own C++ compilers.  And hey, Pascal had real strings (like C# does today) instead of these clumsy string pointers which always caused null pointer crashes those days.  This was a highly successful project and made me known as a Windows “expert” at that time; so from then on, I concentrated on Windows development exclusively. 

But at the end of the project I decided to leave Vancouver as it was one of the most expensive cities to live in at that time and moved to Calgary, Alberta and I really liked it there.  I ended up working for a consulting company called Minerva and consulted for a number of the local oil and gas companies like Petro Canada.  Then around 1996 I was accepted for legal immigration into the united states and worked in Portland, Oregon for a while, first as a consultant and finally for ODS a Dental Insurance Company amongst other things, as Software Development Manager to oversee development of their “Daisy” software providing insurance and accounting features as well as scheduling for Dental offices.  Then around late 1997 I was asked to return to San Diego to work for the same company as before in 1988 mostly to work as a senior consultant even though they gave me the title of “Vice President of Development”.  I accepted and started in early 1998; at that time I developed a Windows based application similar to a Desktop Publishing system allowing data sourced from IBM mainframes and able to design formatted text for printed statements such as credit card statements and the like.  Up to that point COBOL programmers were extracting the data and creating code to drive the high speed printers which was a slow and tedious task.  With this new software they could now design the statements or form letters on screen, see what they would look like with the fonts and sizes selected as well as images and then send them to the printers to be batched. 

By 2000 things changed and work was harder to come by so I moved to Boise, Idaho to wait until the industry might recover since it is economical to live there.  Since then I have worked in Boise in various jobs mostly as a consultant but also as Software Development Manager for URS (previously Washington Group) a large engineering company.  While there, I worked on a large application used by the company to quickly create accurate quotes for large engineering and building contracts like buildings, bridges, roads and even nuclear power stations and the like.

Software Development Today

The industry has changed much; in the last few years especially, rates have been dropping and I have seen a drop of 25% in some markets and the work tends not to be as satisfying as in the past. The software industry also tends to have outspoken marketeers of various techniques or technologies that cause the industry to be somewhat “fad” driven. The result is that every 18 months or so something “new” will arrive and you have to retrain yourself to ensure you stay current.

Having worked in the industry a long time it has occurred to me that in the past software was actually quicker and cheaper to develop than today. Since then, Microsoft’s Visual Studio and .NET framework have come on the scene, which from a purely theoretical perspective are quite elegant and I work with these extensively, but from a pragmatic perspective they can be slower to develop applications with compared to some development tools in the past. For instance, in the late 90’s with rapid application development tools (RAD) like Borland’s Delphi (probably still one of the best development tool available, now sold by Embarcadero) you could develop quicker and easier than in .NET today.

As of late (i.e. early 2013) it seems that the focus for development is shifting again to write apps in HTML5, CSS3 and Javascript.  Pretty much because of the apparent shift to target mobile devices for which the common denominator is writing HTML based apps rather than targeting multiple OS'es like Windows Phone, Windows 8, Android and IOS.  See my blog entry on this development.