Initial exposure to computing ideas
I probably first read about computers in volume 'C' of the World Book Encyclopedia in my grade 5 classroom's library. But my earliest memory of being introduced to the concept of electronic computers was when the library in Greendale Elementary School (in Chilliwack BC Canada) received a new science book in the spring of 1963 when I was in grade 6. This book described all the various fields of science, including fields I had never heard of before, such as biochemistry and geophysics. It also had at least two pages about computers, including pictures, and a chart describing the binary number system. I was fascinated and hooked!
One year later our family purchased a brand new Encyclopaedia Brittanica set. I'm sure I read all the articles relating to computers in those volumes.
Three years later, the June 1967 issue of Popular Science had an article about fluidic computing elements -- non-electronic computing devices that can perform logic functions using fluids instead of electricity. I sketched various logic gates, and many years later, at my wedding, one of my high school classmates still remembered me doing this.
I attended Sardis Secondary School (in Chilliwack BC) for grades 10-12, and their library had the Time/Life series of books on computers, which I "devoured". My grade 11 and 12 math teacher, Mr. Koropatnick, had a DigiComp I mechanical computer in his room -- but I was disappointed to find out how little it could do.
The Chilliwack Public Library was small and didn't have many books about computers. One book I remember borrowing was How to Build a Working Digital Computer (1967), which showed how to build a device with a large tin can, light bulbs, and lots of paper clips. But upon further reading I was disappointed to learn it didn't actually perform any calculations automatically, so didn't really deserve the name "computer".
In grade 11 or 12 I saw a magazine ad for a correspondence course in learning to program the IBM System/360. When I requested more information about the course, they suggested I finish high school before taking the course.
As far as I know, there wasn't a single computer anywhere in the Chilliwack area while I was attending elementary or high school. The first time I actually saw a real computer was probably in the Spring of 1969 when I was in the city of Vancouver BC (an hour's drive away). I had to wait for a few hours to get a ride to somewhere, so had time to wander around downtown, where I found the (old) IBM building at 1445 W. Georgia. This was in the days before terrorism in the world made computer installations very security conscious. IBM had a System/360 computer installed in the room facing the street, probably with the curtains open so I could see it from the street through the large windows. I walked in, explained to the receptionist that I was very interested in computers but had never seen one before, and asked if I could go into the computer room to look at it -- and was given permission! Several people from another large company (I seem to remember it was the Pacific Great Eastern Railway, later called BC Rail) were in the room trying to use the computer to run their programs, but were having problems, and had opened the side panels of the computer. When they left for lunch, I was left alone in the room with the computer! I looked closely at all the circuitry that was visible, being careful not to touch anything. Wow, what a rush!
Around 1970 I read in our local newspaper that a company had set up a computer in Chilliwack and was operating it as a service bureau. But I was out of town that year, and by the time I finally came home and looked for it, they had already closed up shop.
I remember sending for data sheets on some early digital ICs that were packaged in round metal cans, rather than the DIP packages that became popular later. But I never bought any, as they were rather expensive, and I hadn't yet designed anything that would use them.
From 1971 to 1973 I worked as a bookkeeper for York Farms (a division of Canada Packers), a food processing company. But our accounting was totally manual, with paper ledger sheets and non-electronic calculators -- mine was an Addo-X. Once a week I had to manually write up dozens of accounts receivable statements, which was very tedious. I would dream of how I could automate the process with a homebuilt computer. When I visited the office a few years later they had installed their own computer -- it might have been an IBM System/34?
Formal education in computer programming
I attended Trinity Western College (now Trinity Western University) for the '73-'74 school year. It was a small school then, and they didn't offer any computer courses, so their library didn't have many books about computers. But one interesting book was Ten Statement Fortran. They also had the September 1973 issue of Radio-Electronics magazine that featured Don Lancaster's construction article for the TV Typewriter -- now that was very interesting! Just before Christmas break the college announced that they would be offering their first ever Introduction to Computer Programming course in the next semester -- I very quickly signed up for it!
The college couldn't afford a "real" computer, so had bought a used HP 9100B programmable desktop calculator, which was adequate to explore the basic concepts in programming. The course was taught by professor Dr. Harold J. Harder. I discovered I had an aptitude for programming, as I almost immediately understood concepts such as subroutines, while some of my classmates couldn't grasp some of these ideas even after having them explained several times.
For my term project I wrote a bubble sort program that could sort 10 numbers. The program and data just barely fit into the available memory. This program was difficult to write because the HP 9100B didn't have any kind of indexed or indirect addressing, so I had to use self-modifying code, and had to reverse-engineer the floating point format. Memory registers could contain either one floating point number or 14 program steps, but the only way for a program to modify its own steps was to perform a very carefully crafted numerical calculation on the floating point register containing the program steps. I spent so much time and had so much fun playing with this calculator that some of my other courses suffered a bit.
Until I took this course I hadn't yet decided on a career, but this clinched it. Before the college year was finished I had already applied to BCIT to take their two year Computer Programming and Systems diploma program. While being interviewed by David Breckner, the department head at BCIT, I saw A Pocket Guide to Hewlett-Packard Computers on his bookshelf, and when I expressed an interest in it, he gave me a spare copy. I still have that book.
Before deciding to apply to BCIT I also investigated the computer programming course taught at McKay Technical Institute in Vancouver BC at Burrard and 6th. Don McKay showed me their Burroughs computer that was used for teaching and for running jobs for customers. Less than 3 years later they opened a Byte Shop computer store in that same building.
In the summer of 1974 BCIT had installed a new HP 2100A minicomputer system to replace their old IBM 1620 computer for use by first year computer programming students. This 2100A had 32Kx16 core memory (the maximum), a paper tape reader for bootstrap loading, a hard disk drive, a punch card reader, and a Tally line matrix printer, but I can't remember whether it had a tape drive, or what it used for a console.
Our Introduction to Programming course used Fortran IV on the HP 2100A. I wrote a Tic-Tac-Toe (Noughts and Crosses) program in Fortran IV in my spare time. But after the first semester, the HP 2100A was no longer used for teaching, and just sat idle. I soon remedied that! One program I wrote, in HP 2100A assembler, just read a stack of punch cards in the card reader and sent the data to the line printer, thus getting an immediate printout, as opposed to the several hour turnaround time if submitted to the school's main computer, an IBM System/370 (model 125?). This not only helped me, but many other students.
At BCIT we could either punch our own cards on the IBM 029 card punch, or write on special coding forms, hand them in to the keypunch ladies, and wait an hour or two (or even longer in the busiest times) to get our cards back. I could touch type, so always punched my own cards. This made it possible for me to get 2 jobs run in a 24 hour period: arrive in the morning, pick up the printout from the overnight run, quickly determine the problem and punch corrected cards, resubmit the job; before leaving in the afternoon pick up the printout from the daytime run, quickly determine the problem and punch corrected cards, resubmit the job to be run overnight. Waiting for the keypunch ladies usually resulted in only one run per day. (Nowadays for a small program I can click on the Compile icon and expect a result in one second, instead of many hours, plus extensive warning messages.) As a result we learned to very carefully desk check our programs before submitting them, otherwise we would lose half a day or even a full day for just one overlooked bug.
Over the course of half a year I also wrote a program to play chess. This took 3000-4000 punch cards as it was also written in HP 2100A assembler. The program wasn't very powerful and was missing a few moves (en passant capture, castling, and promotion), but was still fun to create and to play with. (A big thank you to instructor Keith Holden for allowing me to use the HP 2100A during the summer break. But since BCIT was at least an hour's drive from home, I didn't make the trek very often.)
The following September I saw the new first year students struggling with the long turnaround times on the IBM System/370, so I started to write an IBM System/370 instruction simulator. It allowed them to submit the same deck of cards that they would submit to the IBM System/370, complete with JCL -- but they would get the results back in a matter of seconds, instead of many hours. It was also written in HP 2100A assembler on punch cards -- eventually almost 4000. I tried to add new instructions to the simulator as fast as the students were being taught them, but after a while I couldn't keep up, so never simulated all the instructions of the 370. But for the first month or two it helped some students. (Fay Dang, if you see this, I'd love to hear from you.)
Most of our programming courses at BCIT used IBM BAL (Basic Assembly Language) or the PL/I language, both for the IBM System/370, as the larger computer installations in our area (who would hire many of BCIT's graduates) tended to use these. But we were also introduced to Cobol and BASIC.
During the two years I studied at BCIT I found many interesting things to read in their library. I remember reading the HP Systems Journal, where one article said that they had finally gotten the cost of 1 megabyte of magnetic core memory (which included error detection and correction) below the $30,000 level. (Today SDRAM costs approximately 1 cent per megabyte!) The July 1974 issue of Radio-Electronics magazine had an article on building the Mark-8 "minicomputer", that used the new Intel 8008 microprocessor. Then there was the amazing January 1975 issue of Popular Electronics that introduced the Altair 8800 computer kit that used the even newer Intel 8080 microprocessor chip, and helped kickstart the microcomputer revolution.
Computer work experience and hobby
After graduating from BCIT in 1976 I spent the next 8 years programming mostly in RPG II (and some RPG III and COBOL) on IBM System/32, IBM System/3 Model 15D, Wang VS-100, and IBM System/38 systems. Computer scientist Edsger W. Dijkstra once said that "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." So then, what did 8 years immersed in the much uglier "languages" of RPG II/III do to my brain?! Not to mention many additional years writing in various assemblers? But the salaries I earned from programming in RPGII/III allowed me to purchase and completely pay for my house in Vancouver, so I have no regrets!
The IBM System/3 Model 15D was interesting because it had up to 512KB RAM, but could only address 64KB at a time. It used address translation registers that were very similar to the DAT on the SwTPc MP-09A 6809 CPU board. The Wang VS-100 was interesting in that program code could be shared and was position independent, much like the program modules in Microware's OS-9/6809.
During those 8 years I also was a member of the West Coast Computer Society (WCCS), bought and played with a Motorola MEK6800D1 evaluation kit, bought a SwTPc 6800 system, which I eventually upgraded to a 6809 processor, then designed my ST-2900 computer system. In the beginning I had hoped to write my own text editor, assembler, operating system, and various other system software. But I found that if I spent much time in the evenings or weekends programming my microcomputers, my productivity at my paying day job suffered too much, so unfortunately had to reduce the time I spent on this hobby.
In early 1984 I quit my well-paying job to run Sardis Technologies full-time, which I did for 5½ years. Much of this web site is devoted to products I developed and sold during this time.
In the Fall of 1989 I started working for BC Hydro. My first project was to write host software in Microsoft QuickBASIC 4.5 for MS-DOS for their Air Gap Monitor (AGM) system. This was before Microsoft Windows 3.0 was introduced, so I wrote my own GUI in QuickBASIC. I also wrote a real-time multi-tasking kernel in Zilog Z8000 assembler for the instrument portion of the AGM. (This was after I had taken a night school course in real-time programming taught by David Querbach, a fellow WCCS member. By the end of the course we had written a simple multi-tasking kernel in Motorola 68HC11 assembler.) Later I ported the multi-tasking kernel to Intel 80C196 assembler for a custom timebase module I helped develop for the Allen-Bradley PLC bus.
One small project involved developing a custom instrument to measure the phase angle between two 60Hz signals. It had a single pushbutton switch for Start/Stop, and a small 4-line LCD display to show the results. But after the hardware had been built, "scope creep" required adding the ability to change settings and enter values. In order to avoid rebuilding the hardware, I developed a user interface using only long and short presses of that one switch to navigate a menu system and enter numeric values!
In July 2002 I started working for Veriteq Instruments, now part of Vaisala. My first project was to develop the hardware and write the firmware for a Texas Instruments MSP430 microcontroller for a module to interface between the Infrared (IR) port of a Palm PDA and the RS-232 serial port of our data loggers. Since it was to be powered by a single AA alkaline cell for several years, it required interesting techniques to minimize energy consumption. (I later used some of these techniques in my IR altimeter for model rockets.)
I designed part of the hardware and wrote the firmware in C for the microcontroller in their network cradle. I designed the hardware subsystem and firmware for one of two microcontrollers in a family of data loggers. Then I spent lots of time developing the hardware and software (in Visual Basic 6.0) for a time-base calibration system for these data loggers.
I learned many valuable things from Kevin Bull, who was the owner/CEO of Veriteq Instruments, among them:
I retired from Vaisala in February 2012.
Other computer related memories
The Pacific Computer Store at Rupert and 29th -- the first computer store in Vancouver BC -- opened approx. December 1976. The Byte Shop of Vancouver at Burrard and 6th in Vancouver BC opened approx. March 1977. Both stores were listed in the 1977-April issue of Byte magazine.
Some time during the 1980's I bought a used Smoke Signal 68008 SS-50 bus system that ran the UNIX-inspired Regulus operating system (from Alcyon Corp.). It came with a 5MB(?) hard drive, a 5¼" floppy drive, and dual 8" floppies (not supported by Regulus). I spent more time fixing the inodes in the file system after repeated system crashes than actually using it, so finally sold it.
For many years I had been interested in how computers work (at the very low level), and eventually found some very useful information. Some was in a second hand book I bought, Computer Architecture and Organization, 2nd ed., by John P. Hayes, published in 1988 by McGraw-Hill. Then there was the excellent 3-part article by Jan Gray in the March, April, and May 2000 issues of Circuit Cellar magazine on the design and implementation of a 16-bit RISC processor for a Xilinx FPGA. More recently I found a very detailed 6502 block diagram, and information on how the Z80's 4-bit ALU (yes, not 8-bit) was implemented.
On 2019-Feb-26 I was interviewed by several members of The CoCo Crew Podcast regarding my DMC floppy disk controller, ST-2900 computer system, etc. The podcast notes and audio were posted 2019-Mar-29.
Being part of the computer revolution has been an exciting ride for me, from punch cards and large, expensive, power-hungry mainframes, to powerful desktop computers, smartphones, and tiny microcontrollers that cost only pennies and can run on tiny coin cells for months or even years! I'm glad God put me on this earth when He did. Two decades earlier I might have chosen a different but less interesting career. Two decades later I would have missed the early microcomputer era where it was possible to understand how things worked, which I enjoy.