Tech Experience

proud of my 8-bit roots

Tale of a Computer Geek

an operating system and language junkie

As with many early PC users, I am primarily a self-taught coder. I wrote my first simple programs in elementary school on Atari and Apple computers, while enjoying a VIC-20 at home. I was a CompuServe and BBS user when 1200 baud was exciting. I have been very fortunate as part of the first generation to grow-up using personal computers. Now, I work hard to avoid becoming obsolete.

My Current Career(s)

I am interested in how individuals acquire the ability to write and employ symbolic language rhetorically.

I am a freelance writer and editor, with a passion for stage and screen. My interest in technology is now focused on how creative expression is evolving in the era of digital media.

I earned a doctorate from the University of Minnesota, Department of Writing Studies, in Rhetoric and Technical and Scientific Communication. The degree focused on the use of technology in writing and literacy education, but also has elements of English, neurology (neurolinguistics), psychology, Internet studies, philosophy, and cultural studies — meaning it is varied enough to hold my interest. “Digital rhetoric” is a trendy field I am told, but my purpose is to study how technology can help or hinder learning to communicate.

I maintain my technical skills and some certifications. I have a handful of clients who require unique skills and insights, though I have limited my technical consulting while attending to my graduate studies. Of course, if a puzzle is interesting I cannot resist trying to solve it.

Early Exposure Contagious

The first computer I encountered was an Atari 800. The year had to be 1979, since I was still in elementary school. The Visalia Unified School District decided to purchase Atari systems instead of Apple II computers. As an elementary student, I was allowed to play basic spelling and math games. I wasn’t supposed to open the lid and look inside — but I did anyway. I also wasn’t supposed to restart the system and play with the BASIC language. Oh, well.

In many ways, this was a glorious time in computing history. Apple, Atari, Commodore, Tandy, and Texas Instruments were battling for dominance of the “home/educational” market. They were all more interesting than the modern Apple Mac and IBM PC to me.

Magazines like BYTE, PC World, PC Magazine, Compute, InCider, A+, and dozens of others included program code. You could enter BASIC, machine code, Pascal, or C programs and then change them to see how things worked. Today? The complexity of software no longer makes it possible to include code in a book. Games take dozens of programmers.

These systems had real differences. If you loved tinkering with hardware, the Apple II systems were a hacker’s dream. You could access every part, add expansion cards internally, and modify the systems in ways best not described. Atari made the wise choice of touting a mix of education and recreation. The systems were rugged, but not very interesting technically. Commodore was the home computer for much of the early 1980s. They dominated sales with the VIC-20 and C64. While the Apple II was a hardware hacker’s delight, the Commodore machines were a playground for the chips and bits crowd.

In junior high, I was finally allowed to program the Atari 800s. It was actually encouraged, almost with a sense of urgency among some educators. I taught myself BASIC pretty quickly before deciding 6502 assemblers were more exciting. Coding as close to the CPU’s own “language” as possible allowed for more interesting games, definitely.

Some Assembly Required…

Before high school, I had owned at least three computers, each with less than 16K of RAM. The nature of these systems occasionally forced me to modify the hardware using a hand soldering tool and thin-gauge wires.

My First Love

My first computer was a Commodore VIC-20, which had 3K of RAM, though not all of it usable. It was an odd computer, soon replaced by Commodore with the C64 — the best selling computer model of all time. (More than 3 million of the original C64 were sold!)

Commodore hardware was cutting-edge for its time, and I had every peripheral I could locate. Eventually I added 32K of RAM to the VIC using a special third-party adapter. (This exceeded the official capacity of the computer.) The 22-character lines were a pain… unless you write with a lot of short words. I wish today’s students and hobbyists had more experience with hand-tuning code for speed and size. Working around the limitations of the VIC-20 taught me discipline as a programmer.

I wanted to write using my computer and its noisy dot-matrix printer. Writing by hand has always been a challenge. As a result, I wrote several text editors for various computer platforms before WordPerfect entered my life. I coded “TextRite” for the VIC-20, a simple editor that allowed me to write a page or so of text — about the point the computer would run out of memory! Being curious, I also coded lots of games and a music editor.

Like most programmers, my first efforts to code games simply stole ideas from existing software. Yes, my first game was a Pac-Man clone. I called the game “Goblin” and used color-coded happy faces for the player and the evil goblins.

By the time I entered high school, I had read enough about the hardware and software to write terminate and stay resident (TSR) code, even on a VIC-20. There are benefits to TSR code and a lot of potential risks. Intercepting keystrokes can be used to help the disabled type, for example, but it can also be used to record keystrokes as someone types a password. Just so you know, it isn’t ethical to record what others type and save the information to a hidden file. Really, really not a good thing to do in most cases.

In junior high, a Timex-Sinclair ended up in my hands, providing even more experimentation fun. It was a black-&-white computer with a “membrane” keyboard. Memory? Try using 1.5K — what in today’s world would not store page of text. The programs for the Sinclair came on audio tape, and any recorder could be used to read/write data to the system. At least it didn’t require the proprietary cassette deck Commodore sold. What made this system interesting was the CPU: a Zilog Z80.

The Z80 CPU was a serious competitor to the 6502 found in Apple, Atari, and Commodore computers. Plus, it had the distinction of being used in a lot of devices, ranging from electronic keyboards to medical equipment. Learning to control the Z80 meant learning how thousands of devices were programmed. The Z80 is still around — it is used in the Nintendo Game Boy line. This makes it really easy to code emulators or to hack the actual games. All for fun and educational purposes, of course!

High School Geekdom

As a high school student, I received an early IBM PC semi-compatible computer. What else but semi-compatible can you call a Tandy 1000? It featured one diskette drive, 128K of RAM, and no hard disk. I used this system until 1987, modifying it every few months to keep the hardware current. I have to admit that I think the Tandy was a better computer than most IBMs or even IBM clones. It had more colors, more options, and was a lot easier to modify.

I need to thank my father for buying the Tandy. I know this was a huge investment for my parents. My father is a nurse and my mother is a teacher’s aide. It was no small matter to support my geek desires. But, it also led me to a good job after high school.

I went from BASIC to Pascal to 8086 assembler. Borland’s Turbo Pascal became a dominant developer tool for IBM PCs. It turned out to be a good path, since I would later use Borland’s Delphi (ObjectPascal) for several projects. Also, software for the Apple Macintosh was often programmed in Pascal (until 2001 or so).

TextRite

During high school, I converted my TextRite editor from the VIC-20 to MS-DOS. By the time I was done, the program had drop-down menus with shading effects and support for changing the fonts on some dot-matrix printers. I am still proud of the results, since Microsoft Word for DOS soon looked quite similar. (My inspiration had been the editor included with a Borland compiler.)

For the serious geeks: I used video paging to handle the menus. I would maintain two text screens, flipping between them so I could restore the text “hidden” by menus. I would also redirect calls to video ROM so custom screen fonts could be used.

I updated TextRite into the early 1990s. It finally gave way to WordPerfect in my life. If you look closely, you will see Student Oriented Software, the name of the business a great teacher and I formed together. SOS was my first try at business. It made little money, but exposed me to programming for clients. Learning about business while in high school taught me that programming skills are never enough. You need a “people person” to make things happen.

After TextRite, I created Menuz, a tool that would read in DOS file directories and create a visual, layered, menuing system. I cheated, since there were some problems with DOS calls in some versions of the OS. The end result was a much easier system for some users. A text file contained a master list of file names and program names. The novice user only had to start Menuz and during its first run it would build a “desktop” for the user. You could rebuild the data at any time.

Menuz used “screen scraping” to capture data. I would issue a DIR command on a hidden video page. Then, knowing where the columns of file names were, I would store the data to an array. Once the user had verified the “discovered applications” list, the data were saved to disk.

My reputation on campus as a geek was sealed when I started installing computer labs for various departments. When the district wouldn’t buy software, I would code what I could for teachers. As an example, I created a quiz game for the science department. Trivial Slot was the best name I could think of, stealing the idea from the game show “Joker’s Wild.” Teachers could add data via a simple text file editing mode.

Another project was a 3D maze adventure I called “Azteca” that used Spanish or English commands. This was, of course, my project for a Spanish class. There were skeletons to avoid, explorers from the Old World, and other dangers. The image was not animated, like today’s 3D games. After you typed a command, a new view of the pyramid’s tunnels was drawn to screen. The map was different, but solvable, every game.

Map generation presented several interesting problems. You need to create a random maze and store the characteristics of every “step” in an array. No square can conflict with a previous square. If a player moves north, you cannot then claim there is a wall to the south of the player!

By 1987, I was a decent 6502 and 8086 programmer. BASIC in various flavors was starting to seem “reasonable” to me, especially once Microsoft shipped QuickBASIC 2.0, proving speed was possible with BASIC. The limited memory capacities of my earlier computer systems made “real BASIC” programming unrealistic. The first BASIC programs generally PEEKed and POKEd their way into memory, using machine language translators from Compute! or BYTE magazines — both now deceased as print publications.

Internet Explorer

As a computer hobbyist since 1976, most of my technical knowledge has been obtained through books and magazines. However, while attending the University of Southern California, I was employed by the university’s computing services (UCS). USC was one of the 20 original Internet sites, providing me with a unique opportunity to participate in the now-famous network’s refinement.

I actually began working for USC-UCS before I started classes. In fact, I worked through breaks and during two summers. I began as an IBM MVS/TSO user consultant and was later moved to the VM/CMS programming team. My IBM 3270 terminal was terrible, but the programming was exciting. I came to appreciate heuristic algorithms and the complex nature of data analysis.

At UCS I had access to the best of the best. The Department of Defense, the National Science Foundation, and other government entities funded our work and research. I worked on several projects, from documentation of compilers to developing mail delivery menu systems across platforms. Yes, you really can find archives of my USENET posts dating back to 1987 on security, cyberpunk, and hacking. Prevention requires knowing what hackers and “crackers” do — which means being one of them.

The men and women at UCS taught me more about “real world” computer programming and security than I could learn in any classroom. These were the men and women who knew every RFC (Request for Comments) debate, from how domains should function to the format of email headers. Connecting IBM mainframes to Sun Unix workstations to DEC file servers, I learned how to get very different computers to communicate. I learned a lot more than that, of course, and thank Karl, Mike, Leonard, and Larry (along with several others) for their mentoring.

There is no easy way to explain all I did at USC-UCS. I learned a little bit about a lot of computer languages, operating systems, and hardware. From JCL (Job Control Language) and REXX to Fortran and C, there was always something to learn. The best part of the job was having a DEC Rainbow terminal/computer in my apartment. I could program at home, any time I wanted, plus I was able to chat with other geeks all over the world. That was amazing.

If you want to learn about the Internet and security, ask questions and learn. The alt.2600 crowd are some of the best minds in programming. Hackers know hardware and software. They love a challenge. If you find the “NewOrder” website (no, I’m not giving a link to that site) and learn about security risks to your servers, that’s not a bad thing. The GNU project volunteers tend to be curious minds, too. For real knowledge about operating systems, security, and computers in general, check with the linux.org and openbsd.org volunteers.

Still a Geek

Since leaving USC, I have set up and maintained several computer bulletin board systems (BBS). I have connected these systems to the Fidonet and the Internet. In the early 90s, I co-founded an online service. Though the Internet Service Provider (ISP) we founded was small, I learned to deal with satellite feeds, modem banks, and the nightmares of hardware. My primary interest in online systems has been interface design. I designed user interfaces using several proprietary screen generators, such as RIP and Tel/FX. Today, most interfaces are a mix of HTML, CSS, and JavaScript. Anyone trying to predict what the future will be is likely to be wrong.

So the 'Net survived. BIG DEAL!!!
The Internet was designed to survive
a (limited) nuclear war —
even if people weren’t!

Today, I still program, build my own computers, install “additional” hardware, and play a lot. My wife and I have a Mac and Windows network at home, which I wired throughout the house. I constantly experiment with operating systems, testing their features and optimal settings. I also examine their security features… for curiosity’s sake.

Since 2002, I have been the happy owner of a Mac with OS X. The Mac is not for the hardware-minded hobbyist. However, the Unix-based BSD operating system is a dream for software experimentation. I love my MacBook Pro, even though you cannot (legally) build a Mac clone. (Actually, we have four Macs at home, now.) The systems are far more stable than my Windows-based PC.

Techie and Writer

Too much time in front of computers.
Many computer experts can speak only in technobabble.

Technical and communications skills go hand-in-hand when providing technical support to a varied user base. My computer programming and writing skills are a rare combination in the computer industry. I have written software manuals, computer newsletters, and online help systems. My degrees in English and journalism help me produce technical documentation that is (hopefully) well-written and easy to understand.

Currently, I write a monthly technology column for a regional magazine. I tend to write on daily life and technology, instead of deeply technical issues. Most people want to use technology without thinking about bits and bytes. Geeks are a unique breed.

When I write, even on academic matters, I tend to do so either anonymously or under a pseudonym. I like programming and writing, but I have no desire for recognition. The results of my work should suffice.

Educational Background

I attended the University of Southern California from September, 1987, through December, 1990. I completed USC with degrees in English and journalism with emphasis in media management. I also have a National Teachers Examination certificate for supplemental studies in science. My goal was to write and teach. Nothing technical was planned after college!

To answer the obvious question, I did not attempt to take any computer courses after a bad experience in high school. I worked with several programmers at USC-UCS who had had similar experiences and decided against computer degrees. It is very difficult to pay to sit in a class and know you will not learn a lot. Anyway, I wanted to master the end-user design, and possibly leave programming behind.

While attending USC, I worked nearly full-time, wrote for the student newspaper, and was actively involved in the honors programs. Most of my friends consider me hyperactive, to say the least.

It took several tries to find a graduate program in which I felt somewhat comfortable. In 2006, I completed my master's degree in English, Composition and Rhetoric, at California State University, Fresno. I admit that I never planned to attend Fresno State, but it turns out to have been the best possible place for me at the time. Merging my interests in writing and technology had been a life-long goal. At CSUF, I was able to study how technology affects writing instruction.

Once a Programmer…

Programming is part art, part science. I have received several awards for my program designs. My specialty is user interface design. As a consultant, I always have several projects at various levels of completion.

My current programming project relates to one of my outdoor hobbies. This project is for myself, though I do hope to market the completed project. The program is being developed using a variety of tools. On the Windows platform, I have been using Delphi and a stand-alone database engine. On the Mac platform, I have experimented with REALbasic and Objective-C.

As manager of EveryBit Software, I programmed the company’s point-of-sale software. The software used a Gupta SQL backend and SuperBase / Visual Basic for the user interface. I used my experience with POS applications to contribute to a Mac-only POS application.

Links

Programming is Writing

Computer languages are languages, similar to other symbolic forms of communication. Writing a program can be similar to other forms of creative writing.