Developing Software since before there was a UNIX? Since the beginning of time?


I wrote and ran my first FORTRAN programs in the fall of 1969, while a student at Northern Secondary School in Toronto, Canada. Programs were read on a drum-based card reader and sent over a slow (300 baud?) dialup down to an IBM 360 Model 30 at the Education Centre on College Street. This machine had about the power of a digital watch, but occupied a large room and generated as much heat as a small home furnace. Programs were run overnight, and the output delivered on paper by truck the next day.

You learned to think about what you were doing before you tried it in those days.

UNIX was not named and released until early 1970.

So I can claim truthfully to have been "developing software since before there was a UNIX".

The beginning of time...

Every computer system has to store dates as a number relative to a particular date. Since UNIX was invented around 1969/1970, the UNIX clock represents date/time instants as the number of seconds since 00:00:00 on January 1, 1970. The value 0L therefore represents that date and, as noted, I have been developing software since that time. Here is a brief C program which demonstrates this; running it with your time zone set to GMT gives the following output:

$ ./a.out
Thu Jan  1 00:00:00 1970

As you probably know, the C language was invented on UNIX and spread its influence to MS-DOS and MS-Windows, which also adopted 1970 as a time base for at least some time stamps. Thus "time zero" or 0L (or even 0x00000000L) can be said to be the beginning of the modern computing era; two of the main desktop operating systems of the past thirty years both came to power starting shortly after that, and use it as their starting point. (The third, Mac OS, converted to UNIX around Y2K, so now it's three of three.)

Speaking of dates, given that we store dates in 32-bit unsigned integers, we run out of values in 2038. And although it was overshadowed by events vastly more serious to the world a mere two days later, my friend Geoff Collyer points out that on Sept 9, 2001, UNIX had been running for one billion seconds:

; date 1000000000
Sat Sep  8 18:46:40 PDT 2001
; date -u 1000000000
Sun Sep  9 01:46:40 GMT 2001