Technological Change (in my life)

edit: 2020-01-29 (this is a stream-of-consciousness thing)

How I Went Backwards (for a time) in the 1970's

Ontario's ST&T program for secondary schools (1967-1970) instilled in me a strong working knowledge of vacuum tube based electronics (known as valves to the Brits). Conestoga College provided a strong working knowledge of semiconductor-based electronics (transistors, thyristors, diodes, chips, etc.)  I began working for Bell Canada in 1973 where I was surprised to discover Bell's switching equipment was still based upon an electromechanical technology known as step-by-step (SxS).

Fork 1 (employment puts food on the table)

To be fair, our switching center (a.k.a. "central office") in Kitchener Ontario hosted 70,000 lines of which only 40,000 were based upon SxS. The other 30,000 were based upon a newer electromechanical technology known as number five crossbar (5XB). Crossbar employed one-or-more electromechanical computers, called a marker, to set up a path through the central office by operating various horizontal (select) and vertical (hold) magnets on a crossbar switch (which are connected to other crossbars) or, ultimately, the called customer's line.

blast from the past: I met Gus Lorimer (a descendant of one of The Lorimer Brothers) while working in the Preston C.O. in 1976. I reiterated my usual complaint about how Bell Canada would be better off ditching relays for transistors. He looked at me glaringly then said "Anything you can do with transistors, I can do with relays" smile
comment: You should have seen the Lorimer call-through test set which was built into a cherry-wood cabinet (looked a lot like a vacuum-tube table-top radio). An electromechanical work of art that was never as good as the all-digital test set which replaced it.

It is not like the phone company didn't know about semiconductor technology (because Bell Labs invented the first working unijunction transistor in 1947 and the bipolar junction transistor in 1948), they only intended to squeeze every invested dollar out of the current technology until they were forced to move to the next generation. So while big central offices in Canada were employing electromechanical technology, PBX (private branch exchanges) in large corporations were introduced to SL-1 (stored logic one) technology where computers were employed as markers to set up a call through a minibar (miniaturized crossbar) switch. Why minibars? In those days, unhardened semiconductor circuits were easily destroyed by "natural lightning" or "accidental contact with commercial power". The cost of hardening the semiconductor circuits was too expensive so mechanical switching of the analog signal was deemed the only way to go. Within a year of the introduction of SL-1, Northern Electric released SP-1 (stored program one) for use in central office switching centers. SP-1 employed minibars as well.

Okay so in my Kitchener-Waterloo location we finally got an all-digital toll-switch (DMS-200) in 1978 and an all-digital local-switch (DMS-100) in 1981.

Fork 2 (continuing education)

Within a few months of starting at Bell Canada in 1973, I realized my freshly minted electronics skills were going to decline so began searching for an antidote. I landed a part-time job as a repair technician at a local musician retail store by the name of Mother's Music (owned by David Boehm). There was lots of work including:

The handwriting was on the wall (so to speak) for analog technology so I returned to Conestoga College (evening classes) in 1976 to catch up on the continuing semiconductor revolution which included TTL and CMOS technologies in their two Digital Electronics courses. I also learned to program in BASIC and COBOL on their HP-3000 minicomputer. In this field you should resolve to continue your education for as long as you work, or longer.

Forks Merge

Bell Canada became more digital in 1978 when they replaced traditional paper-tape long-distance billing recorders with computers ("Interdata Model 70") and industrial controllers ("TeleSciences SRS-1200 Data Recorder"). Both technologies stored digital data on a HP-7970E 9-track tape system and Bell was looking for someone who wanted to maintain this stuff "full time". Since I was attending night courses at Conestoga College, I was offered first crack and the rest, as they say, is history.

Also in 1978, Bell Canada introduced a minicomputer system named TELCON (teletype concentrator) which replaced a room full of thirty-two ASR-35 teletype machines (connected to remote SL-1 and SP-1 switches) with a single PDP-11/04. This led to other projects based upon the PDP-11/23 (ACD for SL-1), PDP-11/44 (BSIMS and CALRS) as well as the PDP-11/73 and PDP/11-84. Then later (over the decades) to projects based upon the VAX-11/730, VAX-11/750, VAX-8550 (MFAS), uVAX-3500, uVAX4300, VAX-6430, AlphaServer-2100, AlphaServer-4100, AlphaServer-DS20e and Itanium rx2800-i2

 link: dips-n-certs (involved a huge amount of corporate training provided by: DEC, HP, etc.)

Personal Computers

Around 1978 I was contacted by Bits-n-Bytes (a retail computer store in Waterloo, Ontario) to repair a HeathKit-H8 computer along with a HeathKit-H9 terminal with a horrible key-bounce problem. Fred Hoffman (the owner) asked for a quote. I offered to fix it for free provided I could keep both units for a month. That's when I learned Benton Harbor BASIC and Benton Harbor DOS. Thanks Fred (especially for letting me keep it for 6-weeks).

Later that same year, I purchased a 48k Apple][ (Apple2) with a 16k Language Card. Since the Apple][ had INTEGER BASIC (written by Steve Wozniak) in ROM, it would load APPLESOFT BASIC (written by Microsoft) into the language card. Apple][+ machines had APPLESOFT BASIC in ROM so loaded INTEGER BASIC. I used this machine to also learn:

Epiphany 1: Digital Entertainment Evolves (Part 1/2)

In 2008 I purchased a PS3 game console bundled with a game titled Grand Theft Auto IV which was a bit of a shock. Why? You can drive around Liberty City for hours in various cars, listening to 18 radio stations (playing the music from: ELO, Genesis, Heart, Bob Marley, Queen, Joe Walsh, ZZ-Top, etc.), all the while experiencing different weather conditions including rain, shine, day, night, lightening, thunder, and fog. Your vehicle will actually handle differently depending upon road conditions, weather, weight, technology (front wheel drive vs. rear wheel drive), etc. At certain points you can exit your vehicle to run, walk, buy a hotdog, or board a number of subways. A self-contained digital world on a Blu-ray costing $59. To see what this world looks like, just search for GTA4 at

comment: PS3 architecture consisted of one 3.2 GHz Cell Broadband Engine with one PPE and six SPEs. This gaming console was so powerful that they could also be used to aid in scientific research (see: folding-at-home). Some universities would buy 25 to 50 then connect them together to produce a PS3-based super computer. Yikes! Not many people saw this coming.

Jump ahead to 2012 when I was playing Batman: Arkham City borrowed from my nephew. This is also a self-contained digital world to support a game which is more like an interactive comic book where you play the role of either Batman or Cat Woman. Most games are only good for 6-10 hours but Batman: Arkham City and Grand Theft Auto IV can require more than 100 hours if you do all the side missions. Okay, so at the original price of $59 dollars this entertainment will cost you 59 cents per hour. Contrast this to a movie you buy for $25 then watch once for 90 minutes. Now I understand why Warner Bros. published this title.

This got me thinking (the epiphany) about my earlier years...

Flashback to 1970

I was in Sam the Record Man when I first heard, and purchased, Switched-On Bach by W. Carlos. At the time, I was misled into believing this was music produced by a programmed computer ("computerized" was the popular phrase). It turned out that this wonderful album from 1968 was painstakingly assembled, note-by-note, on the Moog synthesizer employing keyboard and sequencers running voltage controlled oscillators, voltage controlled filters, and multi-track tape recorders. Electronic: "YES" but computerized: "NO". On top of that remember that this was an analog recording of a machine with an analog audio output. Nevertheless, none of the instruments heard were real, yet the associated harmonics could (when cranked up) blow the output transistors of most solid state audio amplifiers which had been designed for natural instruments.

A similar classical music experience occurred a few years later when I heard, and purchased, the 1974 album Snowflakes Are Dancing by Isao Tomita. If you liked Debussy then this album was a must-have.


In 40 years (1970-2010) humanity has gone from "really good fake musical instruments which a few hundred could play (or afford to play)" to "today's (2012) video gaming industry which employs tens of thousands and rakes in $25 billion ($25,000,000,000.00) annually". The total number of XBOX-360 and PS3 machines sold by 2012 exceeds 145 million and this number doesn't include other gaming consoles or the number of people playing 3d games on high end PCs.


Now I could have also mentioned lots of other technological changes including:

...but I think you've already got the idea.

Addendum1: the PS3 and XBOX-360 are seventh-generation gaming consoles. In 2013 we will see the release of the PS4 (PlayStation 4) and the XBOX-One (a.k.a. XBOX-720) which are eighth-generation consoles promising greater realism. I wonder how many years will pass before humanity is playing on a holodeck. It might be sooner than we think.
Addendum2: abridged paragraph from page-41 of the book "Thank You for Being Late" (2017) Thomas Freidman
In response to the 1992 Russo-American moratorium on nuclear testing, the US government started ASCI (Accelerated Strategic Computing Initiative) in 1996 to provide a method for developing nuclear weapons in simulation. ASCI Red was delivered in 1997 and could execute 1.8 TeraFLOPS. It cost $55 million, was a little smaller than a tennis court, and required the equivalent power of 800 homes. In 2006 Sony released the PS3 which could also execute 1.8 TeraFLOPS but only cost £200.00 but only required the equivalent power of three 120W incandescent light bulbs.

Epiphany 2: The Dominance of C/C++ (Part 1/3)

No serious telephone company employee should ever admit this, but I didn't learn "C" until the summer of 1988. On top of that, I didn't see any value in it at the time, but that would change.

Some of what follows comes from internet FAQs like this one:
Title: A very brief look at Unix history Author: Pierre (P.) Lewis <>
comment: the author was an employee of Bell-Northern Research which was 70% owned by Nortel Networks and 30% by Bell Canada. BNR was the Canadian version of Bell Labs

All "C" programming language stories start with the creation of UNIX by employees at Bell Labs in 1969. The original UNIX offering was written using a Macro Assembler and was buggy. To make matters worse, Bell Labs was already working with multiple computers (starting with an 18-bit PDP-7 but intending to soon move to a 16-bit PDP-11/20 which was a completely different processor architecture from Digital Equipment Corporation). They solved the first problem (buggy) by creating languages "B" (based upon BCPL) then "C" which would allow UNIX to be rewritten using a higher level (than macro assembler) language. They solved the second problem (different CPU architectures) by using a CPU-specific code generator in the backend. Now both "C" and UNIX were portable.

comments: perhaps Bell Labs only intended to work with different PDP computers from DEC but here, "portable" means the code can be moved relatively easily to any computer built by any vendor. And this got me thinking (the epiphany) that no computer manufacturer would have ever produced a software tool like this since it provides customers with an exit strategy (the customer now can move their business software to any computer platform from any manufacturer; this must be why Ken Olsen and his company, DEC, disliked UNIX and C). While many companies produced ANSI-standard languages, these offerings also included vendor-specific extensions which made moving to another platform difficult, if not impossible. On a related note, third-party software vendors working in "C" can more easily move their work to other machines thus supporting a larger base of customers. This is also true for the UNIX operating system which is usually the first OS to be ported to new computer architectures and processors. "I am now convinced" that portable languages and operating systems facilitated the explosive development in computer hardware seen since 1970.
Boot-Up of a Portable Software Paradigm

Phase 1 +------>| PDP Assembler -> UNIX +-------------->+
		+-----------------------+		|
	|	+----------------------------------+
Phase 2 +------>+ UNIX and PDP Assembler -> B -> C +--->+
		+----------------------------------+	|
	|	+---------------------------+
Phase 3 +------>| UNIX and C -> better UNIX +---------->+
	|	+---------------------------+		|
	|						|
	|	+---------------------------+		|	
Phase 4 +<------| UNIX and C -> better C    +<----------+

Notes:	1) Assembler will always exist but is only used in the code generator (not shown)
	2) Platform specific information (i/o addresses etc.) are found in platform header files
	3) Phases 3 + 4 are totally portable if pure "C" (no embedded assembler instructions)

According to The Linux Programing Interface by Michael Kerrisk, the first UNIX ports beyond PDP-11 happened in 1977 (Denis Richie and Steve Johnson working on the Interdata 8/32; Richard Miller on the Interdata 7/32 at the University of Wollongong) and 1978 (John Reiser and Tom London on the Digital VAX at University of California at Berkeley)

Most people already know the story of how ARPA (now DARPA) funded the development of a self-healing digital communications network meant to survive a destructive war. Experiments started in the 1960s (ARPANET starts in 1969) but activity sped up in the early 1970s when Bell Labs began licensing UNIX to educational institutions for an incredibly low price only to recover their costs (under monopoly rules, Bell Labs was "not allowed to be a software vendor" -or- "make any money vending software") which meant that the majority of ARPA-funded work slowly moved to C on UNIX. This also meant that anyone working on the ARPA project in C on UNIX could easily share their work with peers at other universities. By about 1980 it appeared that all these universities (too many chefs syndrome?) were producing something which would soon break. Another reason for incompatibilities was the fact that TCP was implemented before the creation of the OSI Model and DARPA wanted...

At this point the story shifts to a gifted programmer at Stanford by the name of Bill Joy who was working with "C" on another DEC platform known as VAX-11. By 1982, Joy had developed all the software necessary to implement what we now refer to as TCP/IP running on IPv4.

By the early 1980s, many universities had modified UNIX sufficiently that they were able to rebrand/republish/relicense it to others. The University of California at Berkeley was one such group to do this by offering BSD UNIX to other universities for free or corporations for $1000.00 (IIRC) which was incredibly low compared to commercial products. BSD also introduced Berkley Sockets which allows a programmer to read/write an internet connection in the same way programmers read/write file systems. Bell Labs copied this idea then produced the STREAMs libraries (IIRC) for the AT&T flavor of UNIX.

Some people in the IT industry today are still very critical of "C" (or UNIX/Linux) while they simultaneously promote their favorite language (or OS) but they are fighting a losing battle. Why? When universities became financially squeezed in the early 1970s, many were forced to be more frugal and only consider inexpensive or free alternatives. So most universities went with C and UNIX. Now students had access to all the source code (which meant they could improve the product) which had the unintended consequence of creating a "critical mass" of human talent. In this environment it didn't matter which language was better because a choice had already been made; then students entering the workplace stuck with the software skills they already had. Companies selling software to universities probably saw some short term profits but never had a chance of succeeding in the long run. One day soon even COBOL will fall. FORTRAN is still around but nowhere near as popular as it once was although the libraries for doing math in the complex-plane still remains rather unique.
Question: Is "C" a high level language or a low level language?
Answer: Both. It is a low level language (think portable assembler) which becomes a high level language as soon as your program references external libraries via the #include directive. 


Example 1:

I knew of many Nortel projects (CALRS was one) where conversion to "C" and UNIX increased stability while reducing licensing costs. Nortel's flagship product at the time was DMS which was written in a Pascal variant called Protel (Procedure Oriented Type Enforcing Language). In those days, Nortel was spending a lot of money each year training freshly minted university grads how to program in Protel. Since many of these people already knew how to program in "C", Nortel embarked upon an internal project to convert DMS from Protel to C. They did a fairly good job of this except that the changeover was done "flash style" rather than "gradually". Bugs and delays meant that Nortel's cash cow delivered virtually no revenue for 18 months. Oops!

Example 2:

We now know that 1988 was the year Dave Cutler left Digital Equipment Corporation for Microsoft. Cutler was responsible for the development of Windows-NT (New Technology) which was meant to (and did for a time) run on multiple CPUs including: IA-32, MIPS, and Alpha, with plans for PowerPC, Itanium, AMD64 and ARM. Because this new OS was meant to run on multiple CPUs and computer platforms, "C" was chosen as the language-du-jour because it was portable. Bill Gates (no idiot) was not convinced that 32-bit Windows-NT would be successful -or- would replace 16-bit Windows anytime soon. So unlike the Nortel FUBAR described, Gates funded both projects then ran them in parallel (DECies vs. Microsofties). Perhaps this is where having a technologist at the helm of a company is better than employing a financial person.

comment: click this 2013 link then hit "control f" to perform a page search for the phrase "Microsoft".
Quote: Literally everything at Microsoft is built using recent flavors of Visual C++ including major products like:
  • Windows XP, Vista, System 7
  • Windows NT (NT4 and 2000)
  • Windows 9x (95, 98, Me)
  • Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)
  • Internet Explorer (including Outlook Express)
  • Visual Studio (Visual C++, Visual Basic, Visual FoxPro). Some parts of Visual Studio, like the Base Class Libraries that ship with the .NET Framework, were written using C# but the C# compiler itself is written in C++.
  • Exchange
  • SQL
Note: The yellow paragraph mentions C++ which many people consider a better way to use "C". If you don't use streams or objects in your C++ programs then your code will almost look like "C" and will certainly be read by any modern "C" compiler.

Example 3:

I didn't learn "C" programming until the summer of 1988 during a labor stoppage. I was using Lightspeed C on a Macintosh and I remember thinking "this has got to be someone's idea of job protection". But it always produced really small binaries so I thought it might have some advantages. Also, the concept of reusing your own code, or code written by others (free or purchased), via the #include mechanism seemed an obvious advantage. In subsequent years I noticed professional programmers getting really impressive results using "C" on 80486 and 80586 CPUs so I attended up the following evening classes at Conestoga College:

1993-1996 (my personal changeover from Assembler to "C")

6811 assembler

In 1993, I did some contract work for a local (Kitchener/Waterloo) company described here. I designed the control board which employed a MC68HC11F1 from Motorola. All the software was written using a plain-text editor in 6811 Macro Assembler Notation on an Apple Macintosh. The binaries were generated using the uAsm 6811 cross-assembler from Micro Dialects. This approach worked well until the code exceeded 8K in size which introduced other problems (you always wanted to use branches for improved size and speed but often needed to switch to jumps when the target location was too distant).

Whitesmiths C

In 1995, I rewrote the whole thing for the Whitesmiths 68HC11 C Compiler/Assembler on an IBM-PC. Implementing startup and interrupt vectors was child's play with this package. Although I loved programming in 6811 Macro, Whitesmiths "C" was a much more productive tool. Descendants of this compiler are still available from COSMIC Software ( ) but you can find cross-compilers and cross-assemblers available for every CPU chip still in production. Here are two of many:

Desktops get TCP/IP

Anyone who remembers working on desktop platforms (PCs as well as Macs) in the early 1990s also remembers not getting TCP/IP stacks from Microsoft or Apple. For example, Windows 95 was released in August 1995 without a TCP/IP stack so if you wanted one (because you wanted to TELNET, FTP, or use the Netscape Navigator) then you needed to get a copy of Winsock from a third party. Windows-95a and Windows-NT4 were both released in 1996 with TCP/IP stacks so 1995-1996 might be considered a major inflection point in the history of computer technology.

But I need to point out that many of these companies were able to directly port the TCP/IP stacks from university sources because the government-funded research was not allowed to be patented or copyrighted -AND- because the software was written in C.



C++ introduces object oriented concepts to C which can only result in greater productivity with fewer bugs. For example:

Modern client software, like browsers (especially tabbed-browsers) from all vendors would be impossible without C++. In fact, I suspect the whole client-server paradigm has been taken further with C++ than was possible with C or any other language. Be sure to think about object-oriented technology whenever you see something (JPEG, GIF, Java Plugin, WAV player) sitting in the middle of your webpage.

Staying with Microsoft for a moment, most technology from them is object oriented in order to support COM (component object module) which is the basis for other Microsoft technologies and frameworks, including: OLE, OLE Automation, ActiveX, COM+, DCOM, the Windows shell, DirectX, and Windows Runtime.

2010-2013 (my partial changeover to C/C++)

Up until 2010, I was able to do all my application programming using HP-BASIC-1.7 Alpha for OpenVMS. But in 2010, I ran into a couple of situations where I had to directly interface with open-source software written in "C". One application involved interfacing an HP-BASIC application to OpenSSL. The second involved interfacing an HP-BASIC application to gSOAP. With most so-called "DEC languages", a developer can supply the compiler with command-line switches to control how variables are written to the symbol table which is used during linking. The appropriate "case control" switch doesn't exist with HP-BASIC-1.7 which means all symbols are up-cased. This means that a programmer needs to write a wrapper in order to facilitate linking. While this is possible, it might be more trouble than it is worth. Add to this the fact that HP-BASIC doesn't have all the data-types available to C/C++ (for example, there are no unsigned variables in HP-BASIC).

For me, it was easier to write the apps in "C" (HP C V7.3-009 on OpenVMS Alpha V8.4) then call the open source software directly.

Now the two C programs I wrote (one client, one server) are fairly ugly because I used pointers to reference the XML structure buried within the SOAP packet. I found a few spare hours in 2013 to go back to gSOAP in order to play with suggestions for a table-walker which can only be done well in C++ (well, you can always do pointer-to-pointer work in C but it looks really ugly; I have also seen table-walkers in C# and Java but those languages are out of scope on this project). Anyway, this time I used HP C++ V7.3-009 for OpenVMS Alpha V8.4 and discovered the resulting source code was smaller and beautiful. Not sure if I will ever be granted time to rewrite the "working" C-based gSOAP apps into C++

This thought continues below: Epiphany-5

Epiphany 3: The Dominance of Linux

Not much to say here except this: where ever you find C/C++ you will also find UNIX® (the trademarked name), Unix (the name of this technology), and Linux


As mentioned above, Bell Labs created the "C" programming language with the intent of squeezing the bugs out of Unix. In case you haven't been paying attention, Unix is now only written in "C" which may leave you with a chicken-or-egg nightmare if you happen to think about this stuff before falling asleep smile

After the US government finished (1983-1984) the breakup of Bell system, AT&T inherited Bell Labs then attempted to turn UNIX into a marketable product

  1. after 1956, Bell Labs had been forbidden from working outside the telephone industry
  2. 1956 law makers had no idea computers would be found in every industry including telephony (see Nortel above)).

MIT lifer, Richard Stallman, tried to get around the commercialization of Unix by creating the GNU Project (Gnu Not Unix) which was a total Unix rewrite. Since writing OS applications is a whole lot easier than writing a kernel, it shouldn't be a surprise to anyone that GNU wasn't entirely free of Unix until 1992.

Engineering Students

Engineering students, specializing in both hardware and software, had studied Bell Labs UNIX kernel "source code" for years and were now worrying about the legality of this practice. Many universities began to look for alternatives and I remember the MINIX kernel (from the "Free University" in Amsterdam, Netherlands) being a popular contender. I might even have a hardcover manual stashed away someplace in my home office.

I sometimes wonder what is in the Scandinavian water supply because

  1. the next big thing in kernels is Linux which was written by Linus Torvolds at the University of Helsinki, Finland. It was the Linux Kernel which was used to get the GNU Project entirely free of UNIX.
  2. The C language is morphed into C++ by Bjarne Stroustrup who hails from Denmark


Today, the merger of the Linux kernel with GNU is simply referred to as Linux although some prefer the alternative GNU/Linux (see: GNU/Linux naming controversy)

There are already huge volumes of web information available about Linus Torvolds so let me include one quote from his bio found here:

In 2003, Torvalds left Transmeta to focus exclusively on the Linux kernel, backed by the Open Source Development Labs (OSDL), a consortium formed by high-tech companies, which included IBM, Hewlett-Packard (HP), Intel, AMD, RedHat, Novell and many others. The purpose of the consortium was to promote Linux development. OSDL merged with The Free Standards Group in January 2007 to become The Linux Foundation. Torvalds remains the ultimate authority on what new code is incorporated into the standard Linux kernel.
Wow, that is a lot of corporate support (critical mass?).
According to the site in 2003 mentions these partners (alphabetical order): Alcatel, Cisco, Computer Associates, Dell, Ericsson, Force Computers, Fujitsu, HP, Hitachi, IBM, Intel, Linuxcare, Miracle Linux Corporation, Mitsubishi Electric, MontaVista Software, NEC Corporation, Nokia, Red Hat, SuSE, TimeSys, Toshiba, Transmeta Corporation and VA Software.
OSDL is now shut down and everything is referred here: but their corporate member list is still impressive.

Smart Phones

Back in 2005, Google wanted to put their Google Talk app on Apple's iPhone but Steve Jobs refused because the app would allow people to make free long distance calls (Jobs was certain this app would cause problems with one of the iPhone's main financial backers, "Cingular Wireless", which was a division of AT&T.

  1. Even though Apple customers paid big bucks for the iPhone, Apple always controlled what apps the customer put on the customer's phone. They did this by locking the phones so that app installs could only be done through Apple's iTunes store
  2. This is an example of Karmic Irony because Steve Jobs started off selling Blue Boxes designed by Steve Wozniak and built by both of them to allow people to make free long distance calls over the telephone network.

in 2006, Google made an ultimatum to Apple: either allow Google Talk to be placed on the iPhone or we (Google) will produce a competing product called the gPhone.

Apple refused which caused Google to purchase California Linux vendor Android Inc. Google then created the Open Handset Alliance where member companies would be given the Android OS Software for free provided the manufacturer preset customer modifiable preferences to do searching at Google (where Google makes most of their money).

Tablets and Notebooks

There isn't much difference between gPhones and tablets (other than the screen size) so it should be no surprise that most tablet manufacturers would power their devices with Android. (er, Linux). Other emerging operating systems, like Chrome OS (which is currently only found in Google's Chromebook) and Firefox OS are also just different Linux variants so you can see that Linux is everywhere.

Epiphany 4: Vector Processing

Back in the late 1980s, I found myself in DEC's Field Service Lab (Training Center) at 12 Crosby Drive, Bedford, Massachusetts. We had lectures in the morning and lab assignments in the afternoon. I was assigned the VAX-8550 in Row-W Bay-4 and was working on it while I noticed visitors occasionally walking through a curtained-off area in the back corner and wondered what was happening. I asked my instructor who informed me that the system hiding behind the curtain featured a new computer module capable of vector processing. He further explained that vector processors were all the rage in various kinds of scientific computing like "computing particle trajectories" or "climate circulation models" because they could perform a single instruction (e.g. multiply or multiply-and-accumulate) on multiple data points. Those data points can represent anything you wish including a location in three dimension (or higher) space. In those days, "vector processing" was available as an expensive option ($$$) but today it is built into all modern CPUs but most people aren't aware of it.

This side of y2k, modern "graphics cards" employ 1000-3000 streaming processors so that numerous vector/tensor operations may be executing in parallel. On top of that, If you also remember that graphics cards typically have between 1 and 4 GB of private memory then you come to the realization that graphic cards actually provide a private protected computing environment within your computer platform. Originally, cheap graphics cards only supported single precision floats while many today now also support double precision floats. In fact, some computer engineers look upon graphics cards as an array of several thousand floating point co-processors (think: several thousand 80387).

Going even further, specialty companies now produce motherboards which can simultaneously host four, or more, graphics cards. Meanwhile, companies like Nvidia also manufacture graphics cards which do not have any monitor connectors because they are only used for number crunching.

Here's a brief snapshot of vector processing development:

Traditionally, processor technology was defined like this:
Then CISC and RISC vendors began to add vector processing instructions to their processor chips which blurred everything:
  1. Minicomputer / Workstation
    1. 1989: DEC adds vector processing capabilities to their Rigel microprocessor
    2. 1989: DEC adds optional vector processing to VAX-6000 model 400 (called VAXvector)
    3. 1994: VIS 1 (Visual Instruction Set) was introduced into UltraSPARC processors by SUN
    4. 1996: MDMX (MIPS Digital Media eXtension) is released by MIPS
    5. 1997: MVI (Motion Video Extension) was implemented on Alpha 21164PC from DEC/Compaq. MVI appears again in Alpha 21264 and Alpha 21364.
  2. Microcomputer / Desktop
    1. 1997: MMX was implemented on P55C (a.k.a. Pentium 1) from Intel
      • the first Intel offering involved 57 MMX instructions
    2. 1998: 3DNow! was implemented on AMD K-2
    3. 1999: AltiVec (also called "VMX" by IBM and "Velocity Engine" by Apple) was implemented on PowerPC 4 from Motorola
    4. 1999: SSE (Streaming SIMD Extensions) was implemented on Pentium 3 "Katmai" from Intel.
      1. this technology employs 128-bit instructions
      2. SSE was Intel's reply to AMD's 3DNow!
      3. SSE replaces MMX (both are SIMD but SSE uses its own floating point registers)
    5. 2001: SSE2 was implemented on Pentium 4 from Intel
    6. 2004: SSE3 was implemented on Pentium 4 Prescott on from Intel
    7. 2006: SSE4 was implemented on Intel Core and AMD K10
    8. 2008: AVX (Advanced Vector Instructions) proposed by Intel + AMD but not seen until 2011
      1. many components extended to 256-bits
    9. 2012: AVX2 (more components extended to 256-bits)
    10. 2015: AVX-512 (512-bit extensions)
Putting hyper threading aside for a moment, we first see true SMP on the desktop in 2005 with Intel's dual-core Pentium-D. Since then, the number of cores from all vendors has only gone up.
But GPU (graphics programming units) take vector processing to a whole new level. Why? A $200.00 graphics card now equip your system with 1500-2000 streaming processors and 2-4 GB of additional high speed memory. According to the 2013 book "CUDA Programming", the author provides evidence why any modern high-powered PC equipped with one, or more (if your motherboard supports it), graphics cards can outperform any supercomputer listed 12 years ago on
I've been in the computer hardware-software business for a long while now but can confirm that computers have only started to get real interesting again this side of 2007 with the releases of CUDA, OpenCL, etc.
One final point. In late 2013 Sony released the PlayStation 4 which is based upon an APU from AMD. What's an APU you might ask? It is an Accelerated Processing Unit which consists of CPU integrated with a GPU (something Intel had already been doing for a number of years without the fancy acronym). The PS4 is built around an APU consisting of two 4-core Jaguar x86-64 CPUs coupled to an equivalent HD 7850 graphics chip. Because the PS4 is build around GDDR5 memory which is only found in graphics cards, it appears SONY built a graphics system with a built-in CPU rather than the traditional processor system with a built-in graphics card.

Epiphany 5: The Dominance of C/C++ (Part 2/3)


In the early 1990s, Microsoft was smaller so was "looking for problems to solve" and "markets to expand into". Since many people were attempting to develop computer games, Microsoft informally aligned itself with SIGGRAPH to help produce tools. Next, they offered to do a free port of the game Doom (which only ran on DOS) to Doom95 (to run on Windows95) only for the technical experience. Their first Graphics API (application programming interface) was named DirectX and appeared in 1995 for Windows-95 and 1996 for Windows-NT4.

DirectX is neat because it defines a number of hardware devices in software (including a reference graphics card) then replaces those software devices with hardware when compliant hardware is present. This means that game programmers do not need to worry which CPU, or GPU (if any), is present. Just send your commands to DirectX and it will carry out your wishes.

While recently poking around a game programmer site, I noticed this caveat:

Microsoft recommends you call DirectX directly from Visual-C/C++ or indirectly from a .NET wrapper. Doing direct calls will result in the fastest code possible.

While I have used Microsoft Visual Studio for a few corporate projects, I am no expert. I was always under the impression that you could set the build-options of all Visual Studio languages to produce either "x86-binary for Windows" or "MSIL for the .NET framework". I still believe this. So is it possible that DirectX expects to be called from C/C++ for some reason? I am not certain but I do know is that COM (component object module) is the basis for other Microsoft technologies and frameworks, including: OLE, OLE Automation, ActiveX, COM+, DCOM, the Windows shell, DirectX, and Windows Runtime. And that COM is written in C++

Here is the opening paragraph of the Introduction from the book "Introduction to 3D Games Programming with DirectX 11". (which I highly recommend to programmers)

quote: Direct3D 11 is a rendering library for writing high performance 3D graphics applications using modern graphics hardware on the Windows platform. (A modified version of DirectX 9 is used on the XBOX 360.) Direct3D is a low-level library in the sense that its application  programming interface (API) closely models the underlying graphics hardware it controls. The predominant consumer of Direct3D is the games industry, where higher level rendering engines are built on top of Direct3D. However, other industries need high performance interactive 3D graphics as well, such as medical and scientific visualization walkthrough. In addition, with every new PC being equipped with a modern graphics card, non-3D applications are beginning to take advantage of the GPU (graphics processing unit) to offload work to the graphics card for intensive calculations; this is known as general purpose GPU computing, and Direct3D 11 provides the compute shader API for writing general purpose GPU programs. Although Direct3D is usually programmed from native C++, stable .NET wrappers exist for Direct3D so that you can access this powerful 3D graphics API from managed applications.

Vector Math (again)

DirectX is a collection of other modules. Direct3D and D3DX (Direct3D Extension) are two of many. D3DX is a math library capable of doing math in three (or more) dimensions to support 3d video games but some programmers used D3DX to do scientific work. This led Microsoft to develop XNA (unofficially: DirectX-Nextgen-Architecture) which is a better vector math library.

game vs. non-game

Early in 2013, Microsoft announced that DirectX and XNA will both be folded into Windows-8 and will only be available as a Windows Kernel Service. Oops! Scientific application developers have been told to use move to DirectCompute (but many will move to OpenCL or CUDA)


Most people do not know that the first "X" in XBOX represents DirectX. Yep, the XBOX-360 run a modified version of DirectX-9 (despite what you have read on the web, nothing higher).

Many people do not know that the XBOX-360 is powered via a tri-core PowerPC chip from by IBM rather than an x86 chip from either Intel or AMD.

Now I guess it is no surprise that DirectX is written in C/C++ and is just compiled differently to generate code for different target processors (game console or Windows PC). Doing this in a non-portable language -or- macro assembler would be too labor intensive as well as bug prone.

Parallel Programming, CUDA, etc.

A few months back (May of 2013) I was trying to learn more about parallel programming so was reading a book titled “CUDA Programming: A Developer's Guide to Parallel Computing with GPUs ” where the author gives evidence that any high-end desktop today (2013) with multiple graphics cards (if your motherboard supports them) can out FLOP anything found at the top of twelve years ago in 2001. Wow! Who knew? One restriction here is that the CUDA technology is only available in C/C++ as a bunch of included libraries. Sure I was aware of vector instructions in VAX and Alpha CPUs but these appeared to only provide pseudo-parallel programming capabilities. But graphics-cards from NVidia and AMD/ATI often provide several thousand streaming processors which are available for whatever you wish; this is true parallel programming on the desktop. You needed CUDA to talk to these cards when you wanted to do math but later discovered that lots of people were using the huge amount of vector math libraries created for DirectX/Direct3d as well as OpenGL. Apparently all the modern games would not be possible without these libraries. Talking about DirectX/Direct3d for a moment, I’ve visited a few of the game programmer sites where most people say “Microsoft allows direct communications with the DirectX/Direct3d API’s from Visual-C++ but for all other languages you need to go through a .NET wrapper (which reduces performance)”. Oops! Another plug for C++

Clustering and Parallel technology

I can only recall three interconnecting technologies that made a large contribution to the computing industry

I hadn't given much thought to clustering or parallel software on microcomputers until I received this recent (2013) advert from Intel for two products:

These products were designed to plug into the Microsoft Visual Studio IDE (Integrated Development Environment) targeted at Windows or Linux. However, after visiting the Intel site on 2013-07-20 it appears that these Windows-based tools now only generate code for Linux targets. I'm not sure if a windows flavor is around the corner or not.

This thought continues below: Epiphany-19

Epiphany 6: Digital Entertainment Evolves (Part 2/2)

Two PS3 games were released in 2013 which were head and shoulders above all others.

The Last of Us - Is a movie-quality experience about future life after a biological holocaust. In part of the game, YOU play the roll of Joel who is travelling across a post-apocalyptic United States in 2033, in order to escort the young girl, Ellie, to a research facility where it is believed that Ellie may be the key to developing a vaccine. When Joel and Ellie become separated, YOU play the roll of Ellie for a time.

Grand Theft Auto V - is played from a third-person perspective in an open world environment, allowing the player to interact with the game world at their leisure. The game is set within the fictional state of San Andreas (based on Southern California) and affords the player the ability to freely roam the world's countryside and the fictional city of Los Santos (based on Los Angeles). The single-player story is told through three player-controlled protagonists whom the player switches between, and it follows their efforts to plan and execute six large heists to accrue wealth for themselves.

Note: in this game "open world environment" translates into approximately 49 square miles (127 square km).
One can only wonder what these games will look like when next-gen consoles (PS4 and XBOX-One) appear later this year.

Epiphany 7: The cloud has always been there, sort of

Whenever I attended "communication technology" lectures over the past decades, the instructor almost always started by drawing a picture of a cloud (usually muttering "you don't need to know what goes on up here"). It didn't matter if the topic involved PSTN, X.25 or the Internet, a picture of a cloud was nearby. So today's use of the word CLOUD is actually marketecture for multiple marketing connotations:
  1. Computers in the internet implementing web 2.0
  2. Software as a service
  3. Cloud computing

Early Cloud: Networked Computers before the internet

Everyone reading this will have their own examples. My first memories involve VAXclusters which consisted of multiple VAX computers running the VMS operating system. They could be tightly coupled through a common memory interface, or medium coupled through network communications. Applications were programmed in such a way that the loss of one of the computers does not cause the loss of any storage or transactional data. In fact, the recommended way of performing an OS upgrade was to roll one computer out of the cluster, do the upgrade, roll the computer back into the cluster then repeat the operation on the next VAX.

32-bit VAX evolved into 64-bit Alpha which meant that this technology was referred to by the lesser known name VMS Cluster. Improvements allowed the distance between clustered processors to increase, and such a cluster could be seen in operation during the 9/11 attacks on New York when one VMS Cluster processor was destroyed with one of the twin-trade towers while its partner in New Jersey continued transactional processing without dropping a single transaction. (not something any company with a conscience would want to advertise)

Early Cloud: Computers in the internet (web 1.0)

brief historical overview

 specialized computers

protocol function description how high
in the
domain name service
berkley internet name domain
translates names into I/P addresses high
smtp simple mail transfer protocol email OUTBOX medium
pop3 post office protocol email INBOX medium
http web server transfers (usually html) formatted data low

Web 1.0 vs. Web 2.0 (more marketecture because no official definition exists)

Most technical people know that protocols like telnet and ftp are connection oriented, and that connection stays up until it is terminated by the client (via user command) or server (timeout). Most people do not know that http (the protocol to support www and/or web) is connectionless. Yep, you read that correctly; Before Y2K, a browser opened a connection to a web server, retrieved a page of data then closed the connection. If there were multiple pictures on the page, a separate open-close transaction was necessary for each one.

caveat: what I am describing here is HTTP/1.0 which still works that way. A second newer protocol called HTTP/1.1 was added in 1999. The keep-alive feature of this protocol keeps the TCP/IP connection open for a short time (programmable by the server) while the client makes multiple requests of the server.
SSL (Secure Sockets Layer)
Many people consider Web 2.0 the ability to do business over the web which would be impossible without the secure transmission of information.

non-secure web transactions usually occur on port 80
secure transactions usually occur on port 443 using (https = http with security)
Experiments in Secure Network Programming beginning in 1993 resulted with Netscape developing SSLv1 in 1994 which was never released. SSLv2 was released in 1995 with a number of security flaws which resulted in the release of SSLv3 in 1996. And now the story takes a strange twist.

The Browser Wars

Microsoft was a little late in recognizing the importance of the internet so went to war with its perceived rival, Netscape.  Netscape was not able to defend themselves against the attack from Microsoft (the US Department of Justice filed an antitrust law suit against Microsoft in 1998 citing monopolistic behavior). Netscape placed a lot of their software into the public domain (open source) in February of 1998. Netscape was acquired by AOL (America Online) in November of 1998. Even though the software was in the public domain, AOL employees tinkered with it as if it was their own product but kept released software into the public domain. And here the story gets stranger.

One programmer, or perhaps it was a team, wanted to triple encode session keys in SSLv3 and so wrote "C" routines to do so. But they made a mistake in the declaration of one variable making it a "long" rather than a "long long". This had the effect of reducing the resultant key space to a much smaller (and now crackable) size. No one knows how much of this open source code mad it into other products.

Two Security Forks
  1. Most programmers aware of the debacle fixed the problem then moved on
  2. People at the IETF worried that any secure system communicating with an unfixed SSL3 system would be hackable so they introduced a fourth protocol as well as a new API to call it.

Enter TLS1

The IETF improved upon SSLv3.0 and might have called their new protocol SSLv3.1 or SSLv4.0 but, since they did not want people to continue to use the old libraries or even accidentally link against them, they named their new protocol TLSv1.0 (Transport Layer Security). They also modified the calling structure to prevent accidental linking. Security improvements continued with TLSv1.1 which morphed into TLSv1.2


Not only has security allowed consumers to securely purchase goods from the sites like Amazon an eBay using credit cards and PayPal, it has allowed many companies to put their corporate records into computers located in the cloud. One neat feature of cloud computers is their ability to automatically backup data to other cloud computers located around the world. Companies would only do this if it was secure.

Oracle Corporation

Almost anyone alive today will recognize that Oracle has been very successful in getting their flagship database product connected to communications networks, including the internet. The following timeline may shed some light on Oracle's view of these phrases.

Product Year Introduced Comments
Oracle 8 1997
Oracle 8i 1999 i = internet (implemented by incorporating a built in JAVA VM)
Oracle 9i 2001
Oracle 10g 2003 g = grid computing
Oracle 11g 2007
Oracle 12c 2013 c = cloud computing

Epiphany 8: A huge amount of technological change is due to video gaming

this Epiphany is under construction

video cards

solid matter displays

3d display technology

cloud computing

AAA Games

Okay so as near as I can tell, the phrase "triple-A game" is a marketing term created by the video game industry to distinguish "big budget projects" from the indie community. Anyway, here are what some industry-watchers think are the unofficial criteria for a triple-A label in 2015:

That last item should raise a few eyebrows for several reasons:

Epiphany 9: Game consoles lead, PCs follow
(or is it the other way around? perhaps it is a neck-to-neck horse race)


Originally, video cards were just another peripheral device sitting out on the relatively slow ISA bus (Industry Standard Architecture bus) but in order to produce higher quality "generated" video the CPU needed a faster path to the video card. The ISA bus led to the EISA bus (Extended ISA bus) which led to the PCI bus (Peripheral Component Interconnect bus) but this was still too slow for generated video so Intel created the AGP (Accelerated Graphics Port) which allowed the video card to sit on a high-speed bus directly connected to the CPU. Industry did not take kindly to this proprietary approach and so countered by creating PCIe (PCI express) bus with Intel being one of the partners.

{ in this discussion I have purposely ignored technology that didn't take root like PCI-X etc. }


Over the years we've seen both CPUs and RAM memory get faster. The fastest memory has always been SRAM (Static RAM) but it was too expensive so vendors relied upon slower DRAM (Dynamic RAM) which led to DDR then DDR2 then DDR3.

With video cards now being electrically closer to the CPU, it was time for video card vendors to raise the ante with their own improvements. Because video memory is accessed differently than main system memory, video card manufacturers optimized DRAM designs then prefixed their acronyms with a "G" for graphic.


Okay so up until 2013, video cards were something you added to a computer system. In November of 2013, Sony released their PS4 (Play Station 4). All of main memory is composed of GDDR5 memory and the ATI portion of the 8-core Jaguar CPU has full-direct access to memory (as does the CPU).  It is almost as if Sony put a CPU inside a video card rather than a video card inside a CPU-based computer system.


Back in 2005, Microsoft released the XBOX-360 sporting a tri-core PowerPC CPU built by IBM. Around the same time, Sony released the PlayStation 3 which employed an 8-core Cell Processor (7x SP6E; 1 x PPE) built by IBM. This doesn't sound like a big deal until you realize there were no multi-core CPU systems available in the retail marketplace. Yep, the fastest retail hardware was only available as a gaming console.

In 2013, Microsoft released the XBOX-One and Sony released the PlayStation 4 and both platforms are based upon an 8-core Jaguar APU from AMD. What's an APU? It is a CPU and Video Card Controller integrated into one chip (or chip carrier). I guess I do not need to point out that 8-core chips are not yet available in the retail market. Video consoles still lead the way

In 2016, Intel released a new core-i7 desktop processor featuring 10 cores (this extreme edition was aimed at the gaming community)

Epiphany 10: Smart Phones are really Star Trek Tricorders

Epiphany 11: "Moore's Law Revisited" and "the Big Data Revolution"

caveat: The following was inspired by the book Thank You for Being Late (2016) by Thomas Freidman

The Chessboard

The Integrated Circuit (chip)

Big Data (explodes in 2007-2008 but no one noticed because of the financial crash

Epiphany 12: GPU's and Moore's Law

The original definition of Moore's Law stated that the number of transistors on a single chip would "double every 18 months" while "costing the consumer the same amount". (note: after the first decade Gordon Moore revised the doubling period to every 24 months). I remember reading articles in the mid-1990s claiming that Moore's Law would hit a limit in 2005 or 2006. The main reasons were attributed to manufacturing problems related to "the limits of photo lithography" and "gate sizes so small that electrons would be able to quantum tunnel across barriers thus rendering them conductors rather than semi-conductors"

Around 2004 Intel announced a change in direction away from "faster single CPUs" toward "single multi-core CPUs" for which they charged more money. Technically speaking, they avoided Moore's Limit by revising Moore's Law to not include the phrase "costing the consumer the same amount". So now we have an economic Moore's Law as well as a technical one.

Advances including FinFET technology, Tri-Gate technology, Gate-all-around (GAA) technology, and 3D IC Stacking have enabled the semiconductor industry to keep innovating. Most people reading this page will already be aware of the fact that the computing industry appears to be shifting from CPUs to GPUs. I was surprised to learn that graphics cards from Nvidia have beat the technical Moore's Law fore the last few product iterations.

NVidia science cards (graphics cards without a video connector) break Moore's Law every year

YearProductGate Size
2006-2007 Tesla 1.0
2008-2009 Tesla 2.0
90, 80, 65, 55, and 40
2010 40, and 28
2012 28
2014 28
2016 16, and 14

Epiphany 13: The Second Renaissance (Storm before the Calm?)

The Renaissance was a period in European history, from the 14th to the 17th century, regarded as the cultural bridge between the Middle Ages and our modern world. It needs to be mentioned that most people at the time did not know they were in a renaissance.
  1. Before Johannes Gutenberg introduced printing to Europe in 1439, it is safe to say that Europe was effectively run as a Catholic theocracy centered in Rome. But Gutenberg's technology enabled an alternative view of Christianity to flourish which we now refer to as the protestant reformation. Many people thought it was their duty to reject this change which eventually plunged Europe into the Thirty Year's War (1618-1648). While many Europeans died unnecessarily (since Christ was non-violent), European culture survived. The main take away from Gutenberg's technology is this: because many more people were able to get access to books, many learned to read. Some even learned to question church authority.
  2. Galileo Galilei is best known for employing a telescope (a.k.a. Dutch Spy Glass) to observe four large moons of Jupiter orbit Jupiter rather than objects on Earth. The Cliffs Notes version of the story has him going up against the Vatican who clung to their belief that every heavenly body orbited Earth which was located at the center of god's universe. Galileo was found guilty in 1633 (this was an inquisition) and sentenced to live out the remaining years of his life under house arrest (he was too well known to be put to death). YOU WOULD THINK that Galileo could have better defended himself by convincing his inquisitors to look into the telescope eyepiece while it was pointed at the moons of Jupiter. In fact, he tried this but his accusers refused to look into it claiming the device was the work of the devil.
    It needs to be pointed out that without a telescope to extend human senses, it is very difficult to determine if "the sun orbits the earth" or "earth orbits the sun" (although non-telescopic measurements by Tycho Brahe come very close but you would need to be a mathematician to interpret the results). This is the beginning of an era where technology was used to extend the limits of the human senses.
  3. Within ten years of Galileo's trial, some early scientists had begun to interchange telescopic lenses to become a microscope which then facilitated the discovery of bacteria and cell biology. Once again, technology had been employed to extend human senses into a new realm.
  4. There have been countless improvements in telescopes and microscopes since those days but it would appear that humanity had hit a new limit. I say "had" because the inventions of the smaller while more powerful computers, along with computer networking via the internet, have ushered in a new age of astronomy and biology where we have put electronic eyes on our machines. For example, computers associated with the Kepler Spacecraft are able to sense planetary occultation of distant stars. This is something human eyes could never do. Similarly, computers, robotic sequencers, and the internet enabled the first two Human Genome Projects as well as the Human Proteome Project


  1. The internet actually gets its start in 1969 as ARPAnet but is never taken seriously by the world until 1989 when Tim Berners-Lee invented the World Wide Web to solve a document sharing problem at CERN. (yep, the American military invented the internet but European scientists made it useful to the world; It would appear that this renaissance began in Europe as well)
  2. Many people have already claimed that the internet (er, web) will eventually enable more people to read (on a per capita basis) than did the efforts of Johannes Gutenberg and I think this is true but we're not there just yet.
  3. The downside of the internet is that it has facilitated communications between purveyors of various conspiracy theories (like-minded weirdoes), and has recruited more people into terrorist organizations like ISIS. It has also facilitated a large crop of radio-like internet broadcasters which have further divided the population into political tribes. I believe this is why we witnessed "couldn't happen" events like BREXIT, or the election of a real estate tycoon for President of the United States. On the flipside, society might not be as divided as we think: While the political left dukes it out with the political right, we observe ~ 50% of the people not voting. This means members of the political left or right only represent 25% each.
  4. This fight between left and right seems very reminiscent of the fight between Catholic and Protestant more than four centuries ago. While some people could not imagine a non-Catholic Europe, it was the children of the people who started the Thirty Year's War who put a stop to the madness by reminding everyone that Christianity was supposed to be a religion of non-violence; not war or inquisitions resulting in new ways to torture people to death. While 2019 marks 30 years since Tim Berners-Lee invented the web, we don't need to engage in a thirty year's war to put an end to our social madness. Just as Gutenberg introduced technology which enabled the advance of science while (eventually) reducing the importance of religious dogma, I wonder if the world-wide-web will make the dogma of political extremes a thing of the past.

Epiphany 14: What's in the water in the Nordic/Scandinavia Countries?

year who Birth what original work location notes
1985 Bjarne Stroustrup Denmark C++ New Jersey was looking to add object support to the C language
1987 Andrew S. Tanenbaum American MINIX Netherlands was looking for an alternative to UNIX®
1990 Guido van Rossum Netherlands Python Netherlands was looking for a successor to BASIC
1991 Linus Torvalds Finland Linux OS Finland was working on a smaller more-efficient kernel
1995 David Axmark
Michael Widenius
MySQL Sweden was looking for an inexpensive SQL engine for PCs
1995 Rasmus Lerdorf Denmark PHP Waterloo, Canada was looking for a better CGI tool
2009 Michael Widenius Finland MariaDB Sweden was looking for an alternative to SUN-supported MySQL

Epiphany 15: Big Data renders first-past-the-post voting as irrelevant

This next section requires the reader to have some familiarity with a few terms. If you are familiar with these then jump forward
  1. Demographics and Demographic Analysis
  2. Psychographics
  3. Big Data
Facebook and Cambridge Analytica - A summary of what happened
re: American presidential election of 2016
re: BREXIT vote of 2016
  1. Facebook sold access to their customer data. Their business partners included Global Science Research and Cambridge Analytica to only name two of many
  2. In 2014, part-time Cambridge University researcher, Aleksandr Kogan (who was also a co-director of Global Science Research), created a voluntary questionnaire in the form of a Facebook app called This Is Your Digital Life
  3. Aleksandr Kogan's company, Global Science Research, sold his questionnaire data to Cambridge Analytica, a data mining firm now known to be working for Trump's 2016 presidential campaign.
  4. The results of the voluntary questionnaire were run through a psychographic analysis which resulted in the Facebook participants being slotted into ~ 27 categories
  5. Some of the categories identified Facebook users who...
  6. This last group was targeted with advertising which may have masqueraded as fake news. The intent of this targeted advertising was to tilt the result ever so slightly in the desired direction (pro-Trump or pro-BREXIT). Something like this can work in spades in any a first-past-the-post (winner-take-all) election or plebiscite. In the case of the Hillary Clinton supporters, all that was needed here was to convince her centrist supporters to "change their" vote or "stay home"
  7. Even the silicon valley big-wigs didn't see this one coming.
Comments - Observations
  1. Since all first-past-the-post elections can now be manipulated by big data technology combined with psychographics, democracies need to shift to proportional representation. Big data and psychographics will be able to affect these as well but this would be happen without a winner-take-all award.
  2. Mark Twain once said “It’s easier to fool people than to convince them they have been fooled.” There is no way you will be able to convince the winning side of the American election that there should be a do over; especially now that Trump has already been sworn in. But Britain has not yet left the EU so could engage in a do over. However, I suspect that the winning side in BREXIT are thinking politically rather than rationally.
  3. I am very worried about America's continual blaming of Russia and/or Putin. As long as Americans continue to play this blame-game, they are setting themselves up for repeat performance from their own social media corporations.

Supporting Material

Epiphany 16: Technical revolutions are (sometimes) just evolutions

When you talk to people about the Industrial Revolution most only think about one big change beginning some where between 1800 and 1900. But this is a gross oversimplification if you consider that it started with the age of steam, then transitioned to the age of electricity, then transitioned to the the information age. When we talk about technology in the information age should we begin with computers, or should we first start with getting information to people? (scrolls, books, telegraph, radio, television, cable television, internet).

The Evolution of Locomotives

Thinking about locomotives for a moment, they began by burning wood to produce steam which was used to turn the wheels. Europe quickly experienced wood shortages so locomotives switched over to coal (or any fossil fuel) with little difficulty. Now it is well known that humans burned petroleum for over 5,000 years but it wasn't until the mid-1800s that the industrial revolution commercialized petroleum extraction and refinement. Steam locomotives eventually morphed into diesel locomotives where the fuel is burned in combustion engines to directly operate pistons (eg. no intermediate steam is required). But the immense power was difficult to control via a transmission so diesel locomotives morphed into diesel electric systems where a diesel engine runs an electrical generator which is then used to power electrical motors. At this point you can see that if external electricity is available then a locomotive might be made more efficient by doing away with the diesel engine and electrical generator. It would definitely weigh a whole lot less.

The Evolution of Computers


Software Systems


  1. Improvements in either category (hardware or software) were not linear but logarithmic. Improvements in hardware and software together are multiplicative (think: logarithmic on steroids)
  2. Back in the late 1970s, a 16-bit minicomputer like the PDP-11/44 employed an 8085 to run the processor's console switches, LEDs, and serial interface. But some people in the computer industry would never get over the fact that microprocessors like the 8085 (or its descendants) would make the minicomputer processor obsolete
  3. Today I run into all kinds of people who just refuse to accept the fact that CLOUD-based systems are taking over from their favorite computer hardware and OS

Epiphany 17: What is old is new again (Python vs BASIC)

Epiphany 18: Industrial Revolutions can be disruptive

The First Industrial Age (Age of Steam)
years: 1800-1900
The Second Industrial Age (Age of Electricity)
years: 1900-2000
The Third Industrial Age (Age of Data/Information)
years: 2000-2100
comment: so when politicians claim "they will make America Great again" or that "BREXIT can bring back lost jobs" those politicians are either lying or ignorant of the facts just presented. Truth be told: Future

Epiphany 19: The dominance of C/C++ (part 3/3)

In the early days of computing, most hardware manufacturers also created, then sold, software. Putting aside operating systems for a moment, those vendors also sold programming tools including programming language compilers like Fortran (1956), ALGOL (1958) and COBOL (1959). One of the most important changes to the computing industry occurred when computer professionals got together to standardize computer languages.

One measure of any computer language's success is, I think, the number of standardizations. For example, although the BASIC language was once very popular (I am still forced to use VMS-BASIC every day by my employer in 2019) it has gone through a very small number of standardizations. This might have something to do with the fact that many BASIC implementations were so different that standardization was not possible or, perhaps, desirable.  On the other hand, languages like C, C++ and Objective-C have gone though numerous standards and continue to be improved.

For example, non-standard "C" first appeared in 1972 and now referred to as K&R C after its authors, Brian Kernighan and Denis Ritchie. Improvements were formalized during then published as C89 in 1989 by ANSI and C90 by ISO. This continued with the names C99, C11 and C18 as described here.

comment: It appears to "C" moves to a new standardization level approximately every 10 years (on average) whilst C++ moves to  a new level approximately every 3 years (on average)


Since 50% of all the digital devices on the planet "running an operating system" use some form of Linux, it should be no surprise that it is the Linux community that is pushing newer versions of C and C++

Since gcc is used to build Linux, we should look at this toolset a little closer


Epiphany 20: A few thoughts on the 50th anniversary of Apollo 11 landing on the moon

The manned spacecraft programs in both Russia and the United States changed the world in more ways than most people would ever know. First off, humanity cannot ignore the contribution of the Soviet space program because the United States would have never attempted such a thing if it were not for cold-war politics. The plain fact is this: many Americans didn't care about Apollo but did care about beating the Russians at something. History informs that President Richard Nixon and Henry Kissinger were plotting to terminate the Apollo Program at the very time that Nixon was congratulating, via telephone from the Whitehouse, Apollo 11 astronaut Neil Armstrong who was standing on moon (both Nixon and Kissinger thought that Vietnam was a more urgent issue; more on this in a moment). To add insult to injury, many Americans lost interest after the apparently routine flight of Apollo 12 (e.g. we won that race twice; time to move on). Proof of this can be seen in the number of citizens who complained to the TV networks about favorite TV programs being preempted by spaceflight coverage. Heck, in-flight video transmissions from Apollo 13 were not aired until after a tank explosion placed the mission in jeopardy. Part of this public disinterest led to cancellations of Apollo flights 18-20.

FACT: development of the Apollo Guidance Computer (AGC) was the trigger event for the largest amount of human technological progress. The design work was done by Draper Labs at MIT while manufacturing was done by Raytheon. Why was the AGC necessary? Initially, many astronauts and cosmonauts incorrectly thought that human pilots would be able to directly fly spacecraft much in the same way that pilots flew aircraft. Consider this thought experiment: you are flying the Lunar Module and need to catch-up-to, then dock with, the Command Module.  For simplicity, assume that both vehicles have identical orbits and velocities but are separated by a distance of 1000 m (3280 f). Without thinking about life outside of the atmosphere, you fire your RCS thrusters (force: 100 pounds or 444 Newtons) while aiming at the Command Module. This will increase your velocity which pushes you into a higher orbit. Your new orbital velocity is faster but your orbital time is now slower. This causes the Command Module to quickly pass under you making it impossible to dock. One correct solution dictates that you should fire your RCS thrusters away from the target vehicle, which will cause you to drop into a slightly lower orbit; then wait a short period of time; then fire your RCS thrusters in the opposite direction which should return you to the original orbit as the CM but hopefully much closer (BTW, first firing forward then quickly firing backward produces the same result). Remember "F = ma" from Isaac Newton's second law? Since "a = dV/dT" then the second law can be rewritten as "F = m x dV/dT" which becomes "F x dT = m x dV". (the left side of the equation is known as impulse). The instantaneous mass of the LM (which decreases every time you fire your thrusters) determines how long you should fire them in every maneuver (e.g. two one-second thrusts will not produce identical results; a one-second forward burn cannot (exactly) be cancelled by a one-second reverse burn). These real-time calculus solutions are best determined by a guidance computer because fuel is limited so must be conserved.

How did the development of the AGC improve things here on Earth? First off, commercial mainframe computers in the 1960s were manufactured from discrete electronic components, including individual transistors and diodes. So when IBM learned that the AGC computer had to fit into a volume the size of a bread-box (one cubic foot or 28,316 cc) many IBM engineers didn't think it was possible. The Draper/Raytheon solution employed "integrated circuits" (semiconductor chips containing numerous transistors) which they were already using in a more primitive way inside Polaris missile guidance systems. The high per-component prices meant that the American government was their primary customer (Apollo consumed 60% of the IC developed by America in 1966). Because of high cost, government contractors developed semiconductor test methods to ensure that the government would only pay for components that met design specifications. These testing methods eventually migrated from the customer (government) back to the manufacturing industry which resulted in affordable chips for the rest of us. That revolution in chip manufacturing produced things like:

comment: Apollo used 3-input NAND gates manufactured by Fairchild Semiconductor. Engineers leave to form Intel then later, AMD

Software jobs also changed drastically during this time. While it is true that high-level programming languages like FORTRAN (1957) and COBOL (1959) existed, the phrase "computer programmer" did not yet exist as computer programming was primarily done by mathematicians. High-level languages required more memory and CPU power then what was available on the AGC, but they were employed on mainframe computers used "to run AGC flight simulations" then "generate the necessary binary code" for the hand-made read-only core rope memory used to hold AGC programs. The level of redundancy built into the AGC programs (see reference-1) should inform that these people were doing "computer engineering". Click Margaret Hamilton to see what I mean.

Critics of Apollo mention that the program was too expensive in that it was consuming too much of the national budget with 4% being the oft quoted number. Let me remind everyone that cold-war concerns at the time mandated that the Defense budget was kept secret. On top of that, no American citizen knew how much money was being used to support the Vietnam War. Today we know that the total cost of Apollo (in 1968 dollars) was $25 billion whilst the cost of the Vietnam War (also in 1968 dollars) was $168 Billion dollars. Now everyone knows that it is way harder to create something than it is to destroy something so allow me to state the obvious: America got no return on the $168 billion investment. Check out the next chart then advise your political representatives accordingly:

Activity Cost Human Cost RIO
(return on investment)
Apollo Manned Spacecraft Program $25 Billion
(1968 dollars)
3 astronauts advances in metallurgy
advances in semiconductor technology
advances in computer engineering
advances in software engineering
invention of the internet
admiration of the whole world
During the peak years, the Apollo program employed approximately 400,000 scientists, engineers and technicians across 20,000 companies. Much of this work was done by, or managed by, defense contractors.

Many Americans continue to bang on about the USA being a Christian nation but I wonder if they will ever turn their spears into pruning hooks as is mentioned in Isaiah 2:3–4
Vietnam War $168 Billion
(1968 dollars)
58,000 US soldiers killed
200,000 US soldiers injured
2 million Vietnamese civilians
1.1 million North Vietnamese fighters
200,000 South Vietnamese soldiers
50,000 Civilians in Laos(up to 1973)
259,00 Civilians in Cambodia
agent orange
contempt of the whole world
During some peak years, more than 400,000 American soldiers were committed to Vietnam (almost the same number of people tied to the manned spaceflight effort).

Despite hearing crazy political justifications like "the domino theory", America lost this war but no literal or metaphorical dominos were ever observed.
First Gulf War $61 Billion 382 US military
others: casualties
American defense contractors do well first use of "depleted uranium" by the Americans
Middle-East Wars $5.9 Trillion ??? American defense contractors do well Hopefully everyone reading this knows that "1 trillion" = "1,000 billion"
First use of: Extraordinary rendition
war references:
  1. (published by: Congressional Research)
  6. comment: Since world-war-two ended in 1945, the United States of America has lost every war. But no one seems to care as long as the economy is humming along. 

What About China?

Back in the 1960s, conservatism revolved around business interests which caused some Americans to wonder if China was a missed business opportunity. This was the main reason for Nixon and Kissinger opening relations with China in 1972. IMHO this trigger event started the Chinese shift from agriculture to industrialism. (think of this as an industrial revolution confined to one country)

American companies and schools in the 1980s found themselves in the Reagan era of "minimal government" which now goes by the name austerity. This might have translated into greater economic problems, including unemployment, except for the actions of China's leader, Deng Xiaoping, who favored "maximal government" so was paying to send 1 million Chinese students to the USA every year to be educated.

I personally experienced this in 1985 Boston: we had morning lectures and afternoon labs. An English-speaking Chinese student sat one row ahead of me in the lecture hall accompanied by two minders who could not speak English but were required to pay for student slots (these minders were there to ensure the student would return to China; they passed the day in class by reading little brown books of political dogma). Back then, Americans correctly welcomed these foreign students (it was a business opportunity) but no one ever thought that China would eventually compete head-to-head with the USA. I applaud the Chinese students who were able to acquire an education in a foreign country speaking a foreign language but wonder how many Americans would be willing, or able, to do the same by travelling to China.

Steps to MAGA (Make American Great Again)


External Links

Back to Home
Neil Rieck
Waterloo, Ontario, Canada.