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
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
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
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
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.
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
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.
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
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
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
like buildings, bridges, roads and even nuclear power stations and the
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
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.