I found this image on Flickr last week and it really brought back memories for me. This is a photo of the Sperry UNIVAC computer that I worked on when I was in the Navy. The Navy began using these computers in the '50s and continued to use them right up 'till the early '90's. I spent the first 2 years I was in the Navy in school learning all the electronics theory required to maintain this hunk of junk. Because the hardware predated integrated circuits, the entire system was built out of individual discreet components. That's right, no chips at all - just resistors, transistors, capacitors, etc. Each one of those little circuit cards in the photo below contained discreet circuitry for a single logic element - such as an AND gate or a flip/flop. The cards all plugged into a backplane on a slide-out drawer (which is shown open in the photo). The drawers plugged into a larger backplane in the back of the cabinet.

Image courtesy of LaughingSquid
The system I worked on contained a whopping 32K of memory - using magnetic core memory instead of RAM (no chips, remember?). It also interfaced with a magnetic tape drive and a paper-tape reader. Ohh, fancy!
The schematics for this thing took up an entire bookshelf! It goes without saying that I learned quite a bit about electronics while working on this piece of, er hardware... You know, the funny thing is that when I went into the Navy I wanted to be an electrical engineer, but after working on this beast for a few years I changed my mind and went into software engineering instead.
That decision was probably one of the best ones I ever made. 
So how did I program it you ask? Did I use a high-level language such as Pascal or C, did I enter my code from a terminal? The answer is no and no. I used 1's and 0's and I entered my code from a maintenance panel by pushing little buttons to set bits in registers! Don't believe me? Here is another photo of the computer, this time with the cabinet doors closed. See all those little buttons? Each grouping of buttons represents a register, or a memory address, or a "CPU" flag:

Image courtesy of Jim Frazer
Fortunately for me, I did much more than maintain this relic while I was in the service. I was lucky enough to work with industry-standard PC's when most of my ship-mates were focusing on proprietary military systems. I also had the opportunity to develop relational databases and write software in modern languages like C++. That experience served me well when I left the Navy and started my consulting career. Thank you Lord! 
So anyway, as I sit in front of my duel-core laptop today and write software in C# and ASP.NET I'm reminded of just how far I've come over the years. You know, the next time I hear a co-worker reminiscing about the "old-days' when they had to write software on a Pentium PC or a Commodore 64 I think I'll show them this blog entry and just laugh! 