Welcome to the Wilcox Family weB LOG, your source for the latest Wilcox news, anecdotes, and rants; and, as Jack Benny quipped on his first radio show (March 29, 1932), “There will be a slight pause while you say, ‘Who cares?’â€â€
For the moment, there is far less chaos than a lifetime of apocalyptic and postapocalyptic fiction have led me to expect. This is a good thing. Sort of. I am disappointed that another trope has been shattered. No cities were surrounded by the military, sterilized with nuclear weapons, or set on fire.
It’s not all good, of course. There has been the inevitable dismissal of all we are doing to slow the spread of COVID-19, keep our health care systems from being overwhelmed, and save the lives of our seniors as nothing more than overreaction or a media frenzy. There was new terminology to learn, like presumptivepositive, which refers to a test sample that has tested positive by a state health service lab, but not yet been confirmed by the CDC itself. There was also the overlooked state of testing, which led to a false sense of security: Almost no one was being tested, even if they had been exposed to COVID-19 and exhibited every symptom perfectly, the lack of available test kits meant many such people were rejected from testing, and continue to be rejected even now. (I know it’s shocking and unprecedented, but President Trump is lyingto you.)
On Thursday evening we got ready to hunker down. Market basket, at the nearly-empty time Naomi and I normally go—Thursday evening at 8:00 pm—was Saturday-morning crowded. Toilet paper and bananas had disappeared. But the staffing had been ramped up, and people were amused and polite, as is typical for our neck of the woods. When I got home I ordered some devices to be used instead of toilet paper.
Friday was a prearranged work-from-home day, while Veracode tested an “all-employees-working-from-home” scenario. There were few problems. On Sunday night, we received notice that mandatory working from home would be in effect for the next two weeks.
Humor is a typical fallback. I’ve remarked several times to David, whose severe anxiety keeps him inside at home almost all the time, “Look! We’re all David, now.” My kids have repeatedly quoted, “Oh, so now you’re interested in what introverts do for fun.”
Tonight we’re trying a long-distance game of Pandemic.
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.
We became involved with Minecraft early in its beta development cycle. Frankly, it’s been amazing and fascinating. We operate our own server at home, modded with Runecraft so we could make teleporters (generally it’s up from early evening until the morning), and have started to add more users to the system. There are still some open slots, if you’re interested in joining us.
The new addition of powered rail boosters has gotten us rail-and-rollercoaster-crazy.
There’s something fascinating about zombies, and a current cultural meme seems to have made them even more popular than the silly idea that the world will end in 2012. (One of the most popular video games around now is the second installment of Left 4 Dead, called Left 4 Dead 2, which is a teamwork-based game pitting humans against hordes of “infected.”) I’ll remind readers that I was a fan before the current massive popularly, generally ever since reading Max Brooks’ brilliantly-written survival-guide parody The Zombie Survival Guide: Complete Protection from the Living Dead, and his captivating World War Z: An Oral History of the Zombie War novel.
Somewhere between reading Little Brother and being inundated with zombies, it occurred to me that a zombie hunt LARP would make a great party game for David and his friends on his 11th birthday. Here’s what we did:
One person is elected to be the starting zombie.
The zombie “infects” others by giving them a gentle “Indian sunburn.” (I didn’t want the kids biting each other.)
Once infected, a human has wait 30 seconds and then become an active zombie, hunting any human he can find.
The only way to stop a zombie is to shoot the zombie in the head with a Nerf gun. Such a shot removes the zombie from the remainder of the round.
Zombies move slowly and relentlessly, generally while moaning loudly.
The round ends when all human have been infected, or when all zombies have been killed.
Overall, this went very well. Next time, I’ll include a couple of minor improvements:
The kids kept barricading themselves in bathrooms. This sort of interior door will absolutely not stop a zombie, but will slow one down for a moment or two. I think to account for this, I’ll have the zombies go back to a central location, and get a paper sign that, when slid under the door, requires those within to open the door.
I need to figure out a way to allow for simulation of decapitation by sword. I think a Nerf or toy sword to the neck should work. Water-based magic markers would be fine, too.
There were a couple of really great moments. One was when my sweet daughter Naomi came up to me and gave me the “Indian sunburn.” This was perfectly reflective of the psychological difficulty of fighting zombies who were formerly loved ones. I should have shot her on sight!
(Sadly, you probably won’t see this anytime soon, but you never know. I remember when Lego wouldn’t manufacture Lego weapons for their minifigs.)
A couple of weeks ago marked a watershed moment in MMORPGs: Star Trek Online wrapped up its mostly-open-beta program, and went live with its early-access-for-preorders launch. Delighted with the quality of the game, we sprung for a lifetime membership, which is approximately as costly as paying per-month for a year and a half. (I wish World of WarCraft would offer such a deal.)
The boys and I have been hooked. (Isaac, the weasel, has remained several levels ahead of me, and is about to get a promotion that will give him access to even better ships.) The game features space exploration and combat, and ground exploration and combat. The missions are described as “episodes,” and, like the plots of a television series, often require following unexpected developments and changing tasks as the plot unfolds across planetary surfaces and space. Each player captains his or her own starship, outfitting it with weapons, equipment that gives bonuses, and senior officers who also provide special abilities. I’ve attached a couple of screen shots of the gorgeously-rendered space exploration scenes below. The planets are beautiful, often including moving cloud layers that partly cover the ground below, as well as appropriate atmospheric illumination by the planet’s star, depending on one’s location in orbit.
(My first ship is named the USS Nichelle.)
Ground locations are often also highly detailed, with a wide variety of plants and terrain. Some of the outdoor ground locations (there are also caves, and starbase and other complex interiors) sometimes seem very reminiscent of the ToS set locations, although generally with more detail than the show’s budget allowed.
Combat and exploration are both integral to the game. Combat is far more skill-intensive than most MMORPGs, particularly as one commands an “away team” to whom orders must be given, and as space combat works in three dimensions and often against multiple enemies. Some missions automatically draft the cooperation of other players, and nearly everything can be accomplished by choice as a teamwork exercise. Like the best MMOs available, there are also large PVP combat areas where players can earn even more rewards.
The game is still in early release, and is apparently only going to get better, but it still shows some weaknesses of an early release with higher-than-expected levels of demand on its servers, and some frustratingly common bugs, such as the game locking up.
Overall, though, our romps through the Star Trek universe have been delightful, with much future enjoyment anticipated.
Addendum, Stardate 201002.18: I am fully convinced that this game was worth every penny. Even my beloved World of WarCraft has never captured me with this intensity.
Which of your early childhood toys had an impact on your adult life? Do you think the toys were wonderful because of your innate personality or skills, or do you think the toys helped get those skills going?
That got me thinking about the toys of my youth, and it probably comes as no surprise that most of the ones I most treasured involved building in some way or another. Of course, now I do more “building” with software than anything else, as programming applications is in many ways very much like building things out of Lego, but programming hasn’t eclipsed my lifelong devotion to Lego.
The toolbox my dad gave me at age 2.
One of the first toys I was given wasn’t really a toy at all, but rather a toolbox full of real tools (some of which I still have, just as I still have the toolbox). “How it happened was like this …” When I was born, I was diagnosed as being mentally retarded. My early foster care seemed to confirm this (due to lack of stimulation). My adoptive father declared, “Well, if he’s not going to be able to work with his brain, we’ll teach him to work with his hands.” So, for Christmas, five months after turning two, I was given a set of real tools. Screwdrivers, a folding rule, a hammer (the one thing that wouldn’t fit in the toolbox), and a pair of pliers. I have very early memories of getting in trouble for taking the screws out of the bottoms of the kitchen chair cushions and losing them. I was allowed to take the handles off the kitchen cabinets. When I first started, I wasn’t strong enough to get the screws tightened well, and the handles would often come off in my mother’s hand.
Good, old fashioned, gravity-fed Hot Wheels® track.
Hot Wheels® track was another great building toy. Although I often drooled over pictures of the Hot Wheels® super charger, I had untold hours of fun constructing dual gravity-fed tracks and racing my favorite cars, all the while developing a better understanding of rudimentary physics. Even more longed-for than the turbocharger was a loop; I even tried building one myself when I was a little older, but couldn’t get it to work right.
The Playskool Take-Apart Car provided many hours of screwdriver-and-wrench assembly experience. The axles were large screws. The headlights and taillights used smaller screws and nuts, as did the wooden sides of the car. One of the trickier parts was getting the tabs for the hood and trunk in the holes when assembling the sides. The one drawback to this was the lack of interchangeability of the screws, although the headlight, taillight, and side screws were all the same size, and the bolt holding the removable engine block in matched the screws that held the wheels and spare tire on, although the bolt head itself wouldn’t fit in the same places. The jack provided (the middle tool visible in the photo) was completely useless. As I was writing this, my wife Nichelle told me that she had one of these, too. These days, I’d recommend Lego Toolo as the nearest equivalent experience.
I had a 100-piece bag of colored wooden blocks.
Wooden blocks are an essential childhood building toy. Generally, my goal was to build the largest tower I could, often getting it to my own height, or nearly so.
Tinkertoys have now made a bit of a comeback.
The only real problem with Tinkertoys was that I didn’t have enough of them. The small set I had just wasn’t enough to build the dreamworthy models pictured on the can. Part of this was supply. I know it’s impossible to believe, but stores in the 1970s were typically horribly supplied. (Computerized supply chains, a need to compete with online retailers, and cheap manufacture and import have radically changed this.) My father and I went out to a number of stores one day to find more Tinkertoys, to no avail. (He bought me a Tonka excavator instead, a conciliatory splurge I’m sure my mother would have never tried.)
This isn’t quite the same, but is not entirely dissimilar to the giant Erector set I loved.
One favorite building toy I haven’t been able to find a picture of was a giant, plastic Erector set, which came with a large, cloth storage bag. My favorite thing to build was a large robot, using gears as eyes and a short beam for a mouth. The large, red gears supplied also served as hubs for the wheels, and they didn’t fit together very well, either seeming hard to fit or too loose. The e-rings provided to put over axles were brittle, and easily broken. To be honest, I was never the best builder with this; I remember working with my dad one some of the pictured models, but really did enjoy it.
During my childhood, and until his retirement my father worked as a maintenance man (later exclusively in refrigeration) for Fernandez Supermarkets. One of the things he built out of an old cheese box was the voltmeter pictured above, which was used to test the circuits on the mats that used to trigger the automatic doors. Another non-toy, this was essentially “mine,” and had an internal 9-volt battery, which allowed me to experiment with simple circuits, conductivity, and voltage. (My kids currently play with this on occasion.)
Then, when I was 5, my world changed.
My neighbor-and-friend Chuck Altwein gave me my first Lego set just before Christmas, the #480, Rescue Helicopter pictured above. This was followed by the general building set #125 from my parents. Another Christmas brought #190, the largest Lego set at the time, which I only decades later realized was actually a farm (it was all about parts, really). Another Christmas or two produced some of my other favorites, Universal Building Set #404, the Space Cruiser (my first “classic space” Lego set), the Galaxy Explorer a year later, and later still Lego’s first castle.
Although I got away from Lego in very late high school and through college, I would jump back into them in 1998. While I was well-and-truly-grown, Lego and MIT developed the most accessible consumer robotics platform made up to that time, the Lego MindStorms Robotic Invention System 1.0. I was blessed to have the now-defunct Construction Site store in Waltham accept a phone order and deliver one of the first 50,000 nearly-impossible-to-get units released in the United States at rollout. Now I’ve actively continued my Lego collecting for years, and am a proud owner of the MindStorms NXT, and use it in coaching First LEGO League and teaching robotics with other self-created programs (such as Robot Sumo) at the Academy for Science and Design, a public charter school in Merrimack, New Hampshire, where my son Isaac attends.
If you’ll pardon the indulgence, I’ll return to my original questions:
Which of your early childhood toys had an impact on your adult life? Do you think the toys were wonderful because of your innate personality or skills, or do you think the toys helped get those skills going?
I actually like Microsoft. Microsoft, for example, brought affordable computer networks to the masses, dramatically improving productivity (and gaming). Vista, like Windows ME before it, is a complete pile of very unpleasant substances, but in the meantime we have Windows XP, the best Windows-based operating system to ever grace the planet. (Now, don’t get all tech-bashy on me; I like the look of OS X as well, use Linux systems on occasion, and program in Java.)
However, in a capitalist society, caveat emptor is still worthy of being heeded. Such is the case with the newer Xbox 360s and HDMI output that uses digital optical for audio.
In a perfect world, one wouldn’t need to output both digital audio and HDMI. HDMI includes digital audio output. One would just plug the HDMI cable into a receiver, run the receiver HDMI output to the television, and the receiver would take care of everything, including the video switching. Sadly, such a perfect world requires far more pictures of dead Presidents than I am willing to part with, especially since it would involve replacing a receiver that I am very happy with.
Xbox 360 back panel, showing the A/V port and HDMI port.
The standard Microsoft Xbox 360 currently ships with a component video cable for HDTV or standard TV that also outputs surround-separated stereo. That cable also has a plug for digital optical audio output, which is ideal. Unfortunately, if one plugs in the supplied cable, due to its size and shape it completely covers the HDMI port on the 360, which precludes using HDMI for video at the same time as optical 5.1 Dolby Digital. (Note that some older 360s do not have an on-board HDMI port, but that any recently purchased one should.)
Enter the product pictured above. This $45 item is designed to provide the ability to output both HDMI and digital optical out simultaneously. Problem solved! Beautiful, isn’t it? It would be, if it weren’t a case of manipulative engineering. (I am reminded of an old “Monkees” episode, in which a computer designs toys to break almost immediately, so parents will enrich the toy company by continually buying replacements.)
If both an HDMI and the A/V cable could be plugged in simultaneously, there would be no need for this extra cable.
A little work with a hack saw, and a consumer can easily save $45 or more.
Enter the hack saw, and a pair of needle-nosed pliers. (A better way to do this would be to use a Dremel tool, but I do not happen to own one.) By carefully cutting into and removing the plastic on the Xbox 360’s included adapter, one can easily make enough room to plug in an HDMI cable. It will be a snug fit, but it should work without any difficulty. Embedded in the A/V cable’s plastic body is a metal shield that protects the connector and helps eliminate electromagnetic interference. Although it is acceptable to scratch it, be careful not to cut through it. Also watch out for the cord itself. The picture above should provide all the guidance you need.
As one might expect, there’s always the slight risk that you’ll damage the A/V cable while cutting it, in which case, you’re going to be spending that $45 anyway. Hey, I told you to be careful.
I promised you all I’d keep you updated on my clean-up progress. While I was procrastinating, another group of guys got together and blasted through the work in a manner to which only teens fueled by pizza and soda can accomplish.
I’ve actually tried their patches, and they seem to work well, making playing Crysis with the volume it deserves a much less cringy experience.
I’d recommend heading over to http://www.gamesoap.net. If their files give you any problems, just send me (or them) an e-mail. (Mine is {myfirstname}@wilcoxfamily.net.)
Thanks, guys from GameSoap. (And I’d add Company of Heroes to my wishlist for cleaned up games. I’ve looked into it, and even know how to edit the files; putting them back into the game is what I never finished.)
Blessings to you all.
Crysis rules!
This in-game screen shot shows some of the visuals that make Crysis so amazing.
Crysis is, without a doubt, completely deserving of the 98% score awarded to it by PC Gamer. Crytek built so well upon the immersive environment and storytelling that they had nearly perfected in Far Cry, that my kids and I have spent hours playing it, wearing out the demo mission, and then losing our lives for several weeks when the full version arrived.
Unfortunately, it has one small problem beyond the currently high hardware requirements. True to its military nature, the characters suffer from a severe case of potty-mouth. This really wasn’t acceptable to me, and Crytek didn’t provide a language filter or switch, so I decided to do something about it. And now you can, too!
Are you as smart as my kids?
There are a few assumptions here. I assume that you are reasonably proficient in a windows file system, and can do basic things like rename files, work with compressed folders (Zip archives), and know the difference between a file and folder.
Finding your starting point
First, find your Crysis folder. It’s probably c:Program FilesElectronic ArtsCrytekCrysis. Then drop down to GameLocalized.
Showing file extensions … step one toward becoming a power-user
For the folders in which we will be working, you will want to show file extensions for known file types via the Folder … Options dialog (see image below), unchecking the box marked “Hide file extensions for known file types.”
This is how to show those oh-so-useful file extensions.
Begin by making a backup
The english.pak file is the one you’re going to extract and modify, so we’ll make a backup of it first. Copy the english.pak file, and name the copy english.pak.original. You should end up with something like this:
The key here is, that the english.pak file is really just a pkZip-compatible archive with a different name. We can, using the wonders of Windows XP, extract it, modify its contents, and repackage it. (We could directly modify its contents just like any other folder, but there would be delays while the operating system uncompresses files that would soon become frustrating.)
Rename your english.pak file to english.pak.censored.zip.
Extraction
Right-click on english.pak.censored.zip, and choose Extract All ... from the context menu, which will open the Extraction Wizard. Click Next several times, watch the Extracting ... meter for a bit, and you’ll be ready for the next step.
Clearing the read-only attributes
To avoid possible repeated annoyances, you need to clear any read-only attributes on the exacted files. Right click on the newly-created extracted folder (which should be named english.pak.censored), and choose Properties. Click on the box marked Read-only until it is empty, and click OK. At the prompt that appears, choose Apply changes to this folder, subfolders and files. This will allow you to do the renaming or editing you need, without having to answer 7,439 prompts.
Clearing the read-only attribute for a bunch of files.
In the newly-created extracted folder (which should be named english.pak.censored), open up the Languages folder, then the dialog folder. From here you are going to have to search for text within files. Ah, but wait! Windows XP, by default, won’t find text within files that don’t have file types it knows about. So, you’re going to have to tweak your system in one more way to find what we need within the .fsq files (to be explained momentarily) that Crysis uses.
Fixing the darned Find Text within Files feature in Windows XP
Find your My Computer icon, right-click on it, and choose Manage. In the Computer Management console, click the plus sign next to Services and Applications, and then right-click on Indexing Service and choose Properties. (We won’t actually be activating the CPU-wasting Indexing Service, but the setting to fix the Find Text within Files feature is part of that service.) Be sure the box marked Index files with unknown extensions has a check mark in it, click OK, and then close the Computer Management console. (See the image below.)
Fixing the Find Text within Files feature in Windows XP.
Search and destroy the #!%#!$#!@$ bad language
Now we can find and eliminate any language you might find offensive. You should have a folder open to something like english.pakLanguagesdialog. Press F3 or click the Search button at the top of the window to open the Search Companion. Click All Files or Folders, and enter *.fsq in the All or part of the file name: box, and the word you want to eliminate from the dialog in the A word or phrase in the file: box. In the example pictured below, I’ve entered nomad, which can hardly be considered profane, but you get the idea.
Personally, I hate the silly dog, and have hacked my account with TweakUI so it doesn’t show up. This screen shot is from my youngest son’s account.
Click Search Now to start the search. It will take a few moments to find the files for which you are looking, but you can start with the first one it finds. You will know the search is complete when the Search Now button becomes active again.
Right-click on the first file in the list, and choose Open Containing Folder. That will open the folder containing that file, and highlight the file, as shown below.
In my example, greets_02.fsq is highlighted. It isn’t necessary to do so, but you can open the file and view it if you like. (Windows will ask you how you want to open it. Tell it to Select the program from a list, and have it opened in Notepad or WordPad.) The .fsq files actually contain the XML that drives the facial animation when the in-game characters are speaking, and I found it fascinating. The files also contain the “real” text for the spoken dialog, which is why we can use them to find offensive language.
As I said, it isn’t necessary to examine the .fsq files, unless you want to verify exactly what the dialog is that they describe. Notice that the folder you’ve opened contains two files with the same file name, but different suffixes. The one that ends in .mp2 is an MPEG layer 2 audio file that contains the actual dialog audio. To eliminate it from being spoken in the game, just rename it .mp2_ (or anything else you like; putting underscores in file names is kind of a Geeky programming thing to do). I do recommend keeping the name the same and modifying the 3-letter extension, though, because you may wish to get at these files again later.
Renaming a file.
Once you’ve done that, close the folder that contains these files (the one that opened when you chose Open Containing Folder). Then go to the next file the search found, right-click on it, and choose Open Containing Folder again. Repeat as necessary, and run new searches as necessary, until the game reaches the language level you’re comfortable with. (My target was somewhere between rated G and rated PG.)
(Rather than just rename the files, one could use an audio editor like Audacity to remove the offensive words. It is my intention to do this with some of the longer dialog clips, but I have not taken the time to do so yet.)
Packing it all back up
Once you are done running all your searches and renaming all the files you wish to change (and this may take a while), as there are quite a few, the last step is to recompress all the files into a new compressed folder named english.pak, and be sure that file is in the correct location. Go back to your C:Program FilesEA GamesCrytekCrysisGameLocalized folder, right-click on the english.pak.censored folder, and choose Send To then Compressed (zipped) folder. This will create a new file called english.pak.zip, and will probably take a couple of minutes.
Recompressing the modified folder into a .zip file.
Lastly, delete english.pak (you should have it backed up as a file named english.pak.original), and rename english.pak.zip to english.pak. You should then be ready to play Crysis and not feel the need to wash out the character’s mouths (especially Psycho’s) with virtual soap.
Other possibilities
Now, if you don’t want to go to all this trouble, if you send me a really nice e-mail (or a 512 MB NVIDIA 8800 GT), I just might point you to a place you can download my modified .pak file. (Mine is {myfirstname}@wilcoxfamily.net.)
I hesitate to include this, but this is the sort of thing that goes on at a New Year’s Eve party at Heritage Baptist Church.
In addition to “praying in” the new year, we also spent several hours playing board games and doing improv skits. Lynn B., our great game organizer, ran a Family Feud session, which was quite fun, although at first we demonstrated our vast lack of knowledge in how this particular game show operated. Once it got going, the competition was fierce.
I loved the fact that all the kids were involved as well. David was interviewed by me in one of the skits as an eyewitness to the events of “The Ugly Duckling”; in his version he ran over the Ugly Duckling with his car! Tom H. brought a snowball inside, which ended up recycled a number of times by being thrown or dropped down the back of people’s shirts. Pastor Erik told people (not necessarily children) not to run about 4,328 times. Phil L. and David E. carried Isaac outside a couple of times and threw him in a snowbank.
Afterward we went home and let the kids stay up as long as they wanted, as is our tradition on New Year’s. NaNi didn’t make it much after 1:00. David was up until about 4:30. Isaac stayed awake until 6:40 p.m. on the first. We woke him up for dinner, and trounced him at Halo 3, which is extremely unusual, but shows how drastically sleep deprivation can affect performance and critical skills.
Late afternoon on the first, we were in the process of getting ready to go see Enchanted, when David came in calling, “It stings! It stings!” I thought he’d hurt or frozen his hands, until he pointed to his head. Isaac had accidentally hit him across the eyebrow with a snow shovel, splitting the skin open quite deeply, so we went to the emergency department at SNHMC instead of to the movies. (The physician’s office had just closed.) David was very worried about stitches, but got to have his skin superglued together instead.
While David and I waited, and waited, and waited in the waiting room, Nichelle was at home making beef enchiladas, our last bit of holiday eating-too-much-for-our-own-good.
Isaac and David spent two weeks this year at Game Camp Nation, which has been operated for a number of years by our friends Phil Luchon and Steve Deyesso and their staff, originally under the name of “Camp Turing.”
David and Isaac were among the first students to test a new curriculum designed for younger students. They developed games using the GameMaker software, which allows sprite-based games to be created using a relatively simple properties-panel-driven model. (Game Maker also features its own scripting language, and the ability to do more advanced things, even as much as a 3D FPS game.) Game Camp Nation also offers courses in game programming using C++ (which will probably be switched to Java next year), and 3D modeling and animation using AutoDesk’s Maya.
Each student gets his own computer to work and play on all day. Attendees also have some non-computer time to play board games and enjoy meals. Still, this was more of a “Geek Heaven” kind of place than one might be expecting in a summer camp. (I wonder if any of the children noticed that the conference room the hotel gave them didn’t have any windows.)
Isaac and David Outside the Conference Center used by Game Camp Nation for their Waltham, Ma., sessions.
Both weasels enjoyed camp immensely, and readily learned to create and debug games. They were up before I was every morning, and I let them stay late almost every night to participate in the network gaming tournaments that the camp runs at the end of the day. David got so tired one day that he fell asleep in the car in the morning, and then on the couch in seconds when we got home, sleeping there nearly 12 hours through the night.
Isaac and David with Game Camp Nation staff members Chris, Steve, and Joy.
We Have a Weiner Winner!
The game tournament is open to all camp attendees, whether they stay overnight or not. To keep things balanced among different types of games, they played FPS games (Halo and Call of Duty), RTS games (StarCraft and Command & Conquer 3), and Motocross Madness 2. Scores were kept all week, and the winner each week got a $50 gift certificate to Best Buy.
Of course that meant that Isaac and David were staying until 8:30 every night, but I figured it was worth the effort for two weeks.
Isaac came in first the first week, despite my dragging him out early one night. During the second week, he was leading by 100% of the second-place person’s score. Steve decided that dominating by that much for two weeks in a row would be called “Isaacing.”
Isaac with the huge Lego set he purchased, #7662 Trade Federation MTT