Introduction

Note: Several years ago I started a blog called “The Coding Noob” which never went anywhere.  I’ve since rolled those posts into my personal blog.  This was the introductory post.

History

When I was a kid, my dad would take me to the local community college to play on their VAX mainframe computer. I initially spent my time playing Colossal Cave Adventure [play] and Star Trek [play]; but eventually started dabbling in Beginners All-purpose Symbolic Instruction Code, or BASIC.

BASIC was an easy-to-learn programming language that was ubiquitous in the early 80s. Anyone who owned a home computer in those days is probably familiar with this bit of code:

10 PRINT "HELLO"
20 GOTO 10

…which would display a never ending column of “HELLO”s on the computer screen.

I took a number of Saturday morning classes at the college, learning the ins and outs of BASIC. I received a Commodore 64 for Christmas one year, with which I spent even more time in the world of variables, GOSUBs, and IF/THEN statements.

While I spent a lot of time playing games, I also spent hours upon hours typing in BASIC and assembly language programs from the pages of Compute!’s Gazette magazine. I tried my hand at writing my own programs; probably the most sophisticated one was a text boxing simulator, based on a pen-and-paper game a school friend thought up. It wasn’t much, as I knew nothing about boxing, and a text-based boxing simulator is about as boring as it sounds.

While BASIC was an excellent introduction to programming, it was also very limited. At the time, assembly language was where the real money was, at least on the Commodore 64. It provided much faster performance and far greater flexibility, but with a very steep learning curve. You also needed additional programs such as a compiler and debugger, which weren’t cheap.

As I entered high school, I discovered the guitar (and girls); and lost interest in programming.

Enter the Internet

Throughout high school and the first couple of years in college, I used the computer extensively, but it was mostly for schoolwork and games.  I did take a few computer classes here and there, including a HyperCard class, which would also serve as my introduction to the internet. Over the next few years, I would develop several various websites, and eventually it became my full-time job.

This was not coding, but at least I was able to be creative and make a living using my computer skills. But there’s only so much you can do with HTML. To really make websites sit up and beg, you need – you guessed it – programming skills. Over the years I have learned some basic JavaScript, but even that is not truly “programming” (though it does share many similarities).

So What?

For years I have wanted to really dive deep and truly “learn” how to program. I think the roadblocks for me are:

  1. What programming language(s) to learn. There are dozens of languages and approaches. Do I learn C++? C#? Python?  Objective C? Java? PHP? ASP? None of the above?
  2. How to apply what I learn into something valuable and applicable to my career.

So rather than fumbling around blindly, in the past I have chosen not to do anything at all. Which isn’t the way to accomplish much of anything.

Along the same lines, I have been trying to come up with new blog ideas. So this week it just hit me – why not blog about my attempts at learning how to program? I have no idea if this will be of interest to anyone else, but hopefully it will give me motivation to progress. And by writing down what I’m doing, it may help with retention – which has been a stumbling block in the past.

Goals

I’m not quite sure what my ultimate goals are. Primarily, I’d simply like to increase my proficiency in programming techniques in general. Applying this knowledge to my career is another goal. Developing for mobile devices is a growing industry, and will only continue to grow going forward, so that is an area I’d like to address. And of course – games. Ever since I was that four-eyed kid in the community college computer lab, I have wanted to create my own games, so that’s certainly something I’d like to pursue – even if it’s a Space Invaders or Breakout ripoff. Of course, coming up with the next Peggle or Farmville wouldn’t hurt either.

Enjoy!

Star Diamond

Some 20 Christmases ago, my grandparents gave me a program for my Commodore 64 called Adventure Writer. Unlike the rest of the games I owned, this one actually allowed you to create games – specifically, text-based adventure games such as Zork.

For all practical purposes, the genre – known these days among enthusiasts as Interactive Fiction – died in the early 90s. At least in the commercial sense. But my first memory of using an actual computer was playing the original Adventure on the mainframe at the local community college with my dad when I was 7 or 8 years old.

So anyway – back to Adventure Writer. Like most kids interested in computers and videogames, I imagined myself being able to make games for a living when I grew up. With Adventure Writer, I had a way to make my own games without having to know one of the advanced programming languages (you can only do so much with BASIC).

I worked for weeks on my magnum opus, the creatively-named “Star Diamond”. I sent it in to Compute!’s Gazette for possible publication, but a few weeks later, I received a rejection letter – I was one devastated 11 year old. And so died my dreams of being a famous video game designer.

But thanks to the magics of the interweb, Star Diamond shall finally see the light of day! I usually dust off my Commodore 64 around this time every year, and last year I found a copy of the game on one of my ancient floppy disks. So, I’ve repackaged it and made it available for download here [1.8 MB] – it’s Windows-only for the time-being. After playing through it a while and trying to remember how to win the game, I realize how *bad* it actually is 🙂 At any rate, the unwashed masses may now be witness to my game design genius.

Here are some brief directions, for those unfamiliar with text adventures:

The basic idea of the user interface is command and response. The program gives you a command prompt, then you type in some command and press Enter/Return. The computer chews on your input for a bit, then tells you the results and gives you a new prompt.

The most important question now is: “What do I type?”

BASIC COMMANDS

Most of the commands you use will be simple and direct. Typing OPEN THE DESK causes your character to (you guessed it) open the desk. Type GET THE PENCIL, and you will pick it up. The process is simple. When faced with the command prompt, just think “I want to…” or “What happens if I…” and let your mind work from there. INVENTORY (abbreviated I) displays a list of items you are carrying.

EXAMINE (sometimes abbreviated X and/or EXA) gives you a closer look at things. It’s used hundreds of times in the course of a typical game.

LOOK (abbreviated L) by itself gives you a detailed description of your location. I always type L just to be doing something while I’m thinking of what to do next.

This is one of the most versatile commands. You can LOOK AT THE CHEST, LOOK ON THE CHEST, LOOK IN THE CHEST, LOOK UNDER THE CHEST, LOOK BEHIND THE CHEST. All of these could give different, unique responses.

GO is a very important command, even if you may never actually type it. Even though GO NORTH, for example, is a command you need to move around, you can abbreviate it to NORTH or even just N.

GET, TAKE, and PICK UP are synonyms. You’ll find many objects you can pick up and carry around with you. If you can’t pick something up, the game will give you a reason, which you may be able to rectify.

DROP and PUT are how you put objects down. DROP is quick and easy, but it just puts the objects on the ground. PUT can be more specific,though, allowing you to PUT THE BOOK ON THE TABLE, for instance.

WAIT tells the computer you want to do nothing for a turn. In almost all games, no game time actually passes while the computer is waiting for your input. Use WAIT to force time to pass.

So… that’s about it. Have fun!

Download Star Diamond

Speaking of the New York Times

In my previous post I referenced a link to the New York Times, which reminded me of the fact that I was actually interviewed by them several years ago for an article on retro-computing. The article is still on their website, and the article is still wrong. Quoting the relevant part:

In the early days, programmers looked for creative software solutions instead of glitzier hardware. ”In a way it was simpler back then,” said Lane Denson, a Nashville farmer who has set up a computer museum in his basement. ”You didn’t have 20 or 30 sound cards and you didn’t have to worry about upgrading every other week.”

…except for the fact that I’ve never been a farmer, and I don’t have a basement, nor a computer museum (Well, Emily might debate that last point). I contacted the writer at the time and she said she’d publish a correction, but it never happened. And they didn’t even bother to publish a link to my Commodore 64 website, which is how they got my name in the first place. Oh well – it’s not every day you’re quoted in one of the world’s largest newspapers.

Here’s the link to the full article (may require registration): Living the 8-bit Dream in a 32-bit World