{"id":225,"date":"2020-02-11T04:12:46","date_gmt":"2020-02-11T04:12:46","guid":{"rendered":"http:\/\/lewczyk.net\/tomsblog\/?p=225"},"modified":"2022-04-06T18:19:04","modified_gmt":"2022-04-07T01:19:04","slug":"modern-computing-my-journey","status":"publish","type":"post","link":"http:\/\/lewczyk.net\/tomsblog\/?p=225","title":{"rendered":"Modern Computing | My Journey"},"content":{"rendered":"\r\n<p>In some ways, I feel that I\u00a0<em>personally<\/em>\u00a0have experienced <em>firsthand<\/em> the full evolution of modern computing technology. Let&#8217;s start at the beginning\u2026<\/p>\r\n\r\n\r\n\r\n<p><strong>Microcomputer: Pre-PC<\/strong><br \/>As a teen, my oldest brother had a tabletop RadioShack microcomputer called a TRS-80. You could almost consider it an early PC (personal computer), though the term &#8216;PC&#8217; hadn&#8217;t become common yet. It had floppy drives, a keyboard, and a text-only display. You could do basic programming on it\u00a0(lowercase &#8216;basic&#8217;, not the BASIC programming language) to manipulate numbers, etc. I spent some time with it, though it really didn&#8217;t interest me that much.<\/p>\r\n\r\n\r\n\r\n<p>A few years later, as an undergrad at a big engineering school, we used low-end microcomputers similar to the TRS-80 to program in assembly language. (Assembly language, if you don&#8217;t know, is a simple set of foundational commands upon which higher-level programming languages are built.) The real advantage of microcomputers is that they were <em>individual<\/em> \u2014 they sat on a desk or table, and were intended to be used <em>exclusively<\/em> by one person at a time (= <em>&#8216;personal&#8217;<\/em> computer). This usage model was revolutionary, because computers to date were large beasts that were shared \u2014 like a refrigerator or stove. You&#8217;d walk up to it, use it briefly (to run a program), then leave it for the next person to use. These larger shared computers were called &#8216;minicomputers&#8217; \u2014 because they were smaller than mainframes.<\/p>\r\n\r\n\r\n\r\n<p><strong>Minicomputers: Bigger Shared Beasts<\/strong><br \/>Minicomputers were the size of a desk, or an upright piano. You would feed it a stack of cards that contained your program, it would read and execute, and give you the result. It didn&#8217;t store your program \u2014 each time you wanted to run your program, you had to re-feed it that stack of cards. We had a minicomputer at my high school, and also in college. These minicomputers handled more-advanced programming languages.<\/p>\r\n\r\n\r\n\r\n<p>There were several hilarious things about the cards that contained your program for a minicomputer:<\/p>\r\n<ul>\r\n<li style=\"list-style-type: none;\">\r\n<ul>\r\n<li><strong>Order<\/strong> &#8211; First, the cards were either punched or were filled out with pencil, with each card representing a line of code. You had to deliver the cards to the minicomputer in the right order, or the lines in your program wouldn&#8217;t be in the right order. I can remember in college seeing fellow students carrying a stack of 100+ cards, and accidentally dropping them \u2014 forcing them to collect all the dropped cards, and go through the painful process of restoring them to the proper order.<\/li>\r\n<li><strong>Pencil<\/strong> &#8211; The other hilarious thing about the cards was: when they were the type where you &#8216;coded&#8217; them by filling out the dots <em>in pencil<\/em> (called &#8216;mark sense&#8217; cards), the pencil marks would wear away after a few reads by the minicomputer, so it would no longer correctly read your program. You then had to go through your card stack with a pencil and darken all the dots to get them back to readable.<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p><strong>Mainframes at a Defense Contractor<\/strong><br \/><em>Two Steps Forward, One Step Back<\/em><br \/>Out of engineering school, I hired into a defense contractor. (This was in the 1980s when Republicans were in office and defense spending was strong.) It was a rewarding, well-paying job (but with the overhanging shadow of doubt that you were contributing to technology that helped war \u2014 which resulted in the deaths of fellow humans). I was there for four years, then left for greener pastures.<\/p>\r\n<p>One of the projects I was on (which never launched) involved estimating the time to develop a missile launcher that would ride on an armored personnel carrier (which is sort of an entry-level tank). The estimation exercise was funny because we were purposefully given false numbers about the capability of the missile launcher \u2014 because the true numbers were classified, and we didn&#8217;t have sufficient security clearance. The false numbers (unsurprisingly) skewed our work estimates \u2014 which turned out to be too high for the project to get a green light. &#x1f612;\u00a0But back to computing\u2026<\/p>\r\n\r\n\r\n\r\n<p>There are two factors that made it interesting to work at a defense contractor in the 1980s: (1) the technology was behind current industry standards, and (2) the available spend rate was generous. This meant that you were working with older technology \u2014 in part, because it was a lengthy process to get new technology approved\/certified for use \u2014 but, you had the ability to throw money and resources at a problem to address it. Four &#8216;low-end computing&#8217; examples come to mind:<\/p>\r\n\r\n\r\n\r\n<ul>\r\n<li style=\"list-style-type: none;\">\r\n<ul>\r\n<li><strong>Microprocessors<\/strong> &#8211; First, one of my initial assignments was introducing microprocessors to the electronics within the armored personnel carriers (which, again, were like entry-level tanks). So we were chopping out analog circuitry \u2014\u00a0which I studied in school\u00a0(&#8216;analog circuitry&#8217; means the logic is executed by a network of simple electronic &#8216;switches&#8217;) and replacing it with microprocessors running software. In our situation, since we were a defense contractor, we needed to use an approved programming language \u2014 Ada. (So I took an external class at a local junior college to learn the Ada programming language.) Overall, the project in a nutshell was: remove analog circuitry, drop in a microprocessor running software, and ensure that everything worked the same as it used to work. Kind of crazy, but in concept it set things up for easier future innovation.<\/li>\r\n<li><span style=\"font-size: 1rem;\"><strong>Mainframe Storage<\/strong> &#8211; My second example of dealing with old\/outdated technology was around the types of computers that we had to use. For serious computing tasks, we used what were essentially &#8216;mainframes&#8217;, because they were large animals that took up most of a wall with a room. (Individual employees did have PCs which got fancier over time.) These mainframes were programmed in a relatively modern way (though there were stories about people in earlier times who had to flip switches on the face of the computer to program it). The one thing that stands out in dealing with these large computers is the storage device. The removable media that was used to deliver programs wasn&#8217;t a CD or a floppy disk, rather it was a large disk drive which was the size of a round garbage can lid \u2014 it had a handle in the middle of the top that made it easy for you to lift it out of the device that read it. So if you wanted to change or deliver information\/programs to the computer, you would open up this large mini-fridge sized device, take out the large storage media that was there (by grabbing its handle and lifting it out) and then drop the new media in \u2014 which again, was a large round flat disc with a handle in the middle of the top.<\/span><\/li>\r\n<li><span style=\"font-size: 1rem;\"><strong>&#8216;Portable&#8217; Computers<\/strong> &#8211; My third example of dealing with old technology was around portable computing. It&#8217;s easy today to under-appreciate the sophistication in computing power within portable devices like cell phones. Even laptops with high-quality screens and low-profile keyboards \u2014 that are packaged in a way that are easily transportable \u2014 are quite innovative. Back at the beginning (decades ago), there wasn&#8217;t an easy way to carry around a computing device from place to place. The task to make computing portable at that time essentially was: to take a personal computer and package it in a way that allowed someone to lug it around \u2014 which essentially meant: make it flat, and put it into a case that was sort of like the suitcase. We contracted with a third-party to help us test our electronics. They provided a device that we could connect to the electronics that we were developing, and that device would exercise those electronics, and determine how these electronics behaved at the extreme ends of their intended ranges \u2014 so you would know whether you need to adjust the electronics to better withstand some real world variability. They brought this test device to our office, and it was this device \u2014 a &#8216;portable&#8217; PC \u2014 that was a prime example of portable computing at that time. The device they brought was essentially a plastic suitcase containing a flattened PC with a tiny built-in display \u2014 with plugs that you connect to your electronics and test to see how it performed. It was not a light device that they brought \u2014 my guess is maybe 30-40 pounds. The guy who carried it around was a pretty big guy. It&#8217;s possible that a smaller person might have had much more of a challenge lugging this device from client to client.<\/span><\/li>\r\n<li><strong style=\"font-size: 1rem;\">Distributed Processing<\/strong><span style=\"font-size: 1rem;\"> &#8211; My fourth and final example of encountering, and making the most of, outdated computing was around &#8216;distributed computing&#8217;. Today, with public &#8216;cloud&#8217; computing, you can send a job off to a server farm owned by Amazon or Google or Microsoft and (realtime) access the computing power that you need to run your job. Way back when, there was no internet or server farms. (I used to be in charge of the &#8216;network&#8217; at my work \u2014 which was really just ensuring everyone could use the printer.) I often had large computing jobs that could take days to run. However, I would instead stay late at work, divide my job up into smaller portions, and run each of those sub-jobs on the computers at other employees&#8217; desks. So I would walk from desk to desk, load my program onto my coworkers&#8217; computers, and run it. And I would do this maybe 20 times. I would then cycle through again, collect the results, and assemble<\/span><span style=\"font-size: 1rem;\">\u00a0them into a overall whole. Unfortunately for my wife, this kept me late at work some days, but it did allow me to accomplish more than I could have otherwise. What&#8217;s interesting about this exercise, is that I had easy access to each of my coworkers&#8217; computers. That is, there were no passwords preventing me from using their computers. Today, though this exercise wouldn&#8217;t be necessary, common security practices wouldn&#8217;t allow one employee to easily access another employee&#8217;s computer.<\/span><\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p><strong>Moving On<\/strong><br \/>Anyway, wrapping things up, I subsequently moved from the defense contractor to an airline, then a telecom company and, each time, gained some ground in available computing devices \u2014 but nothing as drastic as those first four years at a defense contractor in the 1980s.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>In some ways, I feel that I\u00a0personally\u00a0have experienced firsthand the full evolution of modern computing technology. Let&#8217;s start at the beginning\u2026 Microcomputer: Pre-PCAs a teen, my oldest brother had a tabletop RadioShack microcomputer called a TRS-80. You could almost consider it an early PC (personal computer), though the term &#8216;PC&#8217; hadn&#8217;t become common yet. It &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/lewczyk.net\/tomsblog\/?p=225\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Modern Computing | My Journey&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=\/wp\/v2\/posts\/225"}],"collection":[{"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=225"}],"version-history":[{"count":33,"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions"}],"predecessor-version":[{"id":355,"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=\/wp\/v2\/posts\/225\/revisions\/355"}],"wp:attachment":[{"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=225"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=225"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/lewczyk.net\/tomsblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}