This was a relatively early draft and analysis of a literacy narrative, originally written for UMass Lowell (online) College Writing I, Sec. 031, Professor Richard Keating, September 30, 2018. The more concise version will be published separately. (Note to plagiarists: This has been submitted to the TurnItIn database, <sarcasm>so, by all means, copy away</sarcasm>.)
I loved writing this essay, but desperately needed to cut it down to a much smaller size and intense focus. (That was the hardest part of the work.) Still, this history of my first exposure to computers is something I wanted to publish. The final version of this essay is here: Romancing the Code: The Literacy Narrative I Did Write.
Computers in Digital Literacy: Problem-Solvers versus Problem-Solving
Phase 1: Literacy Narrative
When I was nine years old, the world of science fiction changed with the release of Star Wars. The film is, of course, merely space opera, and more fitting of the term science fantasy than science fiction, but it was remarkable for its technical presentation and fully realized worldbuilding, rather than for its originality or brilliance of story. (See Campbell, 2008.)
In much of twentieth century science fiction, computers are autonomous problem-solvers. They are almost never programmed by humans. A query is made, and the computerâ€”via punched paper, data cards, audible output, or screen displayâ€”provides the answer to an enormously complex problem. The idea of a computer as a tool is reduced to its metanarrative: The computer is godlikeâ€”omniscient and often omnipresentâ€”and not necessarily benign. Star Wars avoided this trope, turning sentient, autonomous computers into a digital underclassâ€”droidsâ€”while presenting computers with which â€œhumansâ€ would directly interact in a way that was more akin to our current state of the art. The Star Wars world includes custom-purposed computer appliances, such as a â€œnavicomputerâ€ (Wookiepedia), as well as networked data storage and retrieval devices that would not be out of place in our own world. Although we use computers to solve a vast number of problems in everyday life, even commonly as our own navicomputer devices, it is the act of programming itself which provides me the greatest problem-solving experience.
The same year Star Wars was released, I met my first real computer: a Digital Equipment Corporation (DEC) PDP-8 (Fig. 1) at my townâ€™s high school. Each terminal connected to this computer was a repurposed teletype machine (Fig. 2). There was no screen display, only a nearly-endlessly spooling roll of paper. Each keystroke from the operator or each character output from the PDP was accompanied by a wonderfully complex sound of motors and servos moving the print element and its carriage across the platen, and hammering the right letter onto the paper (262LongRunner). This sound was so iconic that we continue to associate it with the background noises of the eraâ€™s television newsrooms.
At age nine, with no previous experience with computers, I was incapable of using them for anything beyond running simple math programs written by high school students. It is difficult to appreciate now, but in a world where pocket calculators were relatively rare, having a computer prompt for two numbers and then displaying their product or dividend was a marvel.
Beyond such number-crunching, computers immediately proved to be greatly entertaining. I ran student-written programs such as â€œGuess,â€ in which the user would enter a number between 1 and 100, and the computer would respond with, â€œToo high,â€ or â€œToo low.â€ I printed text-based art, my favorite being a cartoon of Snoopy, shaking his fist and saying, â€œCurse you, Red Baron!â€ (Fig. 3). One could print banners of words where each letter in the bannerâ€™s text was composed of many smaller letters. I printed calendars for the current year, my birth year, and the unbelievably far-off year 2000.
I was in love.
This elementary-school experience did nothing to assuage my longing to use computers. Through another school program I got to play on a PDP-40 at a nearby enterprise, a massive device that would have made the PDP-8 weep with inferiority, had it been sentient. There I discovered the text adventure â€œDungeonâ€ (later and more commonly known as Zork) (Anderson, Kidder). I was enthralled with text adventures. I was determined to program my own.
In my junior high years, we had access to Apple II computers repackaged by Bell & Howell to be nearly indestructible. We also secured access to the PDP-8 at the high school. By this time the teletype machines were gone, replaced mostly by dot-matrix printers from DEC, and supplemented by three glorious CRT terminals, VT05s (Fig. 4). DEC had donated these CRTs to my junior high schoolâ€™s HAL (High Ability Learner) program, but I was the first to negotiate access to them. I stayed after school until 5:00 every day I could, just to get time on these. I began to learn BASIC, back in the ancient times when it still required line numbers.
Not having a computer of my own presented a problem that might seem odd today. I had to work offlineâ€”truly offlineâ€”without even a search engine, and then try to code what I had done in the time I could get access to the computer. So, I worked in notebooks, keeping the program flow in my head, and writing the code in longhand that I would hope to later enter and perfect.
I tried my hand at a number of different programs, but creating my own text adventure game became my obsession. My first attempt at a text adventure was quite limited. It offered nothing more than multiple-choice prompts to make action choices, a far cry from the verb-object command-parsing that Zork could do. My program was shameful, borrowing scenes and catch phrases from Tom Bakerâ€™s incarnation of Dr. Who, and not much more complex than a choose-your-own-adventure book. One-quarter of the way through, I ran the program, and the computer spit out an inexplicable error. It was not the usual problem of a missing parenthesis or a syntax error, but something I could not diagnose.
â€œDocâ€ (Donald Harrison), the high schoolâ€™s computer science teacher, helped me out. Although my program was tiny, it was too big for the execution space on the PDP-8. He taught me how to link multiple programs so I could jump to one from another, and I was able to complete my first adventure. It did teach me the basics of programming, even though what I wrote was not much more than a pile of print and goto statements, hooked together with the occasional numeric input. Even so, knowledge of programming meant problem-solving.
I had grander visions. My next adventure was more original. I spent hours creating maps, this time avoiding established fandom, and more time figuring out subroutines that would be able to interpret input, track inventory, handle world descriptions and actions, and even inject some humor while tracking hunger and thirstâ€”â€œYou would kill for a baloney-and-cheese sandwich.â€ There was no way for me to do a program this large on the DEC, but the Apple IIs that the junior high had would be perfect (Fig. 5). They even had floppy drives, so I could store my creations on my own 5Â¼” diskette. Innovation was exhilarating.
There were no obvious patterns to follow, and the BASIC language itself was somewhat limited. There were no premade frameworks. I had books, which were very limited, and often inapplicable to a particular system just when I needed to learn something advanced. (The deeper one went, the less universal computer languages with the same name becameâ€”radically different from todayâ€™s write-once-deploy-everywhere languages like Java.) I had the inspiration and functional model from other, better-written software, and a clear idea of what I wanted to do. I just did not know how.
In a text adventure, one of the most important things is providing a description of each location or room, and anything that might be movable in that room. In that context, the program needs to track the playerâ€™s location, and allow the player to move in a specific direction, such as â€œmove north.â€ My solution may have been clever, if contraindicated by speed or memory limitations at the time. I used an array (something like a deck of cards) of alphanumeric variables as a container, storing the location description for each â€œroomâ€ by element number in the array. So, if the player moved to â€œlocation 104,â€ the description could be displayed by accessing a function that would return the description in â€œcardâ€ 104.That system was great for things which stayed in place, but what about portable items? For that I had to push further, and I invented a design which was not dissimilar to what is now called a bitmap. Each portable item would have an item number, but the data for that item would be stored in a predetermined part of a text variable that contained, among other things, the itemâ€™s description. In a simple example, the first three characters of the text variable might contain the location number, which could even be a number showing it to be in the playerâ€™s own inventory. The description of the item would then be the fourth character in the text to the end of it. Now we use object-oriented languages to create models of such things, in a way that often mimics the real world. A car is often used to illustrate this. A car is a generalized object, and has properties such as color, model, size, number of passengers, make, year of manufacture, or VIN.
Player movement could be controlled by setting the playerâ€™s location to a particular number, and the same location number could be used to get the description of the location and then display any portable items that were there. Switching the location was just a matter of coding which directionâ€™s movement would take one to which location number.
When I finally got enough of the modules coded and debugged, I ran it. It worked! There was one last problem: speed. Between entering a command and waiting for the program to do something was a pause of 5 or 10 seconds. But it worked.
More than a decade later, I encountered the published source code of Zork (and even got it to run in a Windows FORTRAN environment). I was blown away by the simplicity of Zorkâ€™s code. The huge, complicated processing modules I had created were not used. Zork had a simple data structure, with a number of pointers, in some ways similar to my array-storage design, but infinitely more elegant.
Now I work full time as a programmer, as I have for more than 15 years, and every part of my workday involves applying digital literacy directly to solving programming problems, ensuring our software is secure, and giving our customers new or better experiences. I use a dizzying array of software tools to accomplish this. The problems I solve are far more complicated, but they apply all the digital skills and literacy that began when I was smitten by the PDP-8, in all its teletype-driven glory.
Someday, we may indeed interact with our computers like much of our science fiction predicted. When that day arrives, however, it will surely include its own tangle of media literacy problems to be solved.
Phase 2: Analysis
The rapid development of digital technologies in the digital era presents individuals in the emerging information society with situations that require them to employ a growing assortment of cognitive skills in order to perform and solve problems in digital environments. These skills are often referred to as â€œdigital literacyâ€ (Gilster, 1997; Inoue et al., 1997; Lanham, 1995; Pool, 1997), which is presented as a special kind of mindset that enables users to perform intuitively in digital environments, and to easily and effectively access the wide range of knowledge embedded in these environments (Gilster, 1997; Tapscott, 1998; EshetAlkalai, 2004; 2005). (Aviram and EshetAlkalai, 2006, emphasis mine)
My experience, described in this narrative, tends to present two foci: â€œa growing assortment of cognitive skillsâ€ and â€œto perform and solve problems.â€ Although the two are intrinsically linked, problem-solving is the one that is most unique to my own narrative., and the one that is most important in my life and career.
So, I worked in notebooks, keeping the program flow in my head, and writing the code in longhand that I would hope to later enter and perfect.
My first skills were not very impressive, and are now accessible by toddlers in todayâ€™s world of icons and GUIs: reading a directory, loading a program, running that program, and then interacting with its prompts and output. Tracing computer literacy from childhood through the early days of my computer career, it is clear that my very meanest skills were a foundation of understanding that lasted for decades. (RUNH was the command used to launch a program, and I only recently learned that that it was used to launch a FORTRAN module on the PDP.)
I spent hours creating maps, this time avoiding established fandom, and more time figuring out subroutines that would be able to interpret input, track inventory, handle world descriptions and actions, and even inject some humor while tracking hunger and thirstâ€¦.
It was somewhat surprising to explore this time period, and to renew my awareness of just how exhilarating computer tasks were. Computers were often about games. I was able to continually improve programming concepts and problem-solving by my somewhat weak attempts to replicate things I had seen. Writing my own text adventure was a motivating force for improving my programming and the problem-solving that went along with it.
There were no obvious patterns to follow, and the BASIC language itself was somewhat limited. There were no premade frameworks. I had books, which were very limited, and often inapplicable to a particular system just when I needed to learn something advanced.
Although the problems I solve are now more complex, the instant availability of explanations, sample code, and often complete example projects can make the level of problem solving significantly different. Although it is true that I knew far less, I was also working with a programming language that was more limited in its abilities, and accomplishing what I wanted often required a finer grained ingenuity.
262LongRunner. â€œTeletype Model 33 ASR.wmv.â€ YouTube, YouTube, 16 Apr. 2012, www.youtube.com/watch?v=ObgXrIYKQjc. Online video.
Aharon Aviram and Yoram EshetAlkalai, â€œTowards a Theory of Digital Literacy: Three Scenarios for the Next Steps.â€ European Journal of Open, Distance and E-Learning. 2006. Retrieved from https://pdfs.semanticscholar.org/c680/679dc70baf4727cfd5f97b8535d62137914e.pdf?_ga=2.58484906.1842711008.1538448028-1659923920.1538448028. Document download.
Anderson, Tim. â€œThe History of Zork.â€ The Wayback Machine, 1985, web.archive.org/web/20060427000213/http://www.csd.uwo.ca/Infocom/Articles/NZT/zorkhist.html. Web page.
Asciiworld.com: Snoopy, ASCIIWorld.com, http://www.asciiworld.com/-Snoopy,512-.html.
Autopilot. â€œFile:VT05.jpg.â€ The original DEC serial terminal, the VT05, Wikimedia Commons, 6 May 2012, https://commons.wikimedia.org/w/index.php?curid=19364852. Online image.
Campbell, Joseph. The Hero with a Thousand Faces. New World Library, 2008. Print.
Claessen, Simon. â€œFile:Digital PDP-8F.Jpg.â€ PDP-8/F Front Panel, Wikimedia Commons, 25 Sept. 2014, commons.wikimedia.org/w/index.php?curid=63802103. Online image.
Hudson, Trammell. â€œModel ASR33 Teletype.â€ Model ASR33 Teletype – Trammell Hudson’s Projects, Trammell Hudson, 29 Oct. 2017, trmm.net/Model_ASR33_Teletype. Web page.
Kidder, Tracy. The Soul of a New Machine. Little, Brown and Company, 2000. Print.
Mightyohm. â€œFile:Bell_and_Howell_Apple_II.jpg.â€ Bell and Howell Apple II+, Wikimedia Commons, 07 Jan. 2011, commons.wikimedia.org/wiki/File:Bell_and_Howell_Apple_II.jpg. Online image.
â€œNavigation Computer.â€ Wookieepedia, FANDOM, 25 Apr. 2015, starwars.wikia.com/wiki/Navigation_computer. Web page.