The Debriefing — Episode 9: Hello, History!

Anton
9 min readJan 27, 2016

--

The Debriefing is a series of blogisodes wherein I, Anton Beza, discuss what I’ve learned, loved and not-loved-so-much after the completion of a user-created mission from the app Checkverse. To go on your own adventures download Checkverse for iPhone today!

Another late Tuesday typing. Tuesdays have been good to me lately, despite their reputation. My tiff with Tuesdays is a tale for another time, though. Tonight’s for programming.

I created the “Hello World!” mission on Checkverse awhile ago. It’s a straightforward challenge: write a trivial program that prints out “Hello World!” in 12 different programming languages. I just finished the last few this evening.

Here are my results:

I changed the color of my terminal to spice things up. I hope you like it… I did it for you.

All this “Hello World!” stuff has gotten me nostalgic. Most of the languages were new to me, but one in particular reminded me of how I got into programming in the first place…

…it all started with video games…

Random Access Memories

When I was a kid I was super into video games. Not so much the playing of them (I sucked at playing them), mostly the drawing of them. I drew Mario, Luigi, Link, Mega Man and more. I’d cut them out and fly them around the Kindergarten room. Screw the blocks. Over time I started making my own characters. Sure they were similar to my inspirations, but guess what? Link was based off Peter Pan, so ha! First was drawing characters, then came drawing levels and soon seeped in a longing to program.

My initial experience was with my dad’s first-ever computer. It didn’t look much like a computer. It looked like a keyboard that needed to lose a few pounds. I was underwhelmed. “How do you see stuff?” I asked. “You plug it into the TV” he answered. I think he pulled it out of the attic to get a quiet afternoon out of his kids. He plugged it in, powered it on and bestowed upon me a gigantic tome of numerical incantations. “Just type in the numbers and you can program the things from the book” he said. This phonebook’s nerdy cousin was full of exciting titles like “Pong” or “Paint” followed by pages upon pages of numbers. There was no mouse or graphic user interface. When the computer booted up you just typed. As far as I could tell, there was no error checking or warnings either. Oh, and there was no hard disk. So when you turned it off, you lost everything. I spent that afternoon carefully, oh so carefully, typing number after number. I don’t remember the program I picked, just the disappointment when it finally wah-wah-wahed into life. I learned something valuable that day: looks aren’t always deceiving.

After that shock, you’d think I’d give up. Hell I almost did. I didn’t really get back into computer wizardry again until Mr. Mahar’s after-school computer club in 5th grade. That’s when I met HyperStudio. HyperStudio wasn’t about numbers, HyperStudio was about graphics! It was an odd multimedia app with a killer paint program. You could use it to make web-page-like apps or presentations. I remember I built this interactive lesson about ants, another interest of mine (my name is Anton after all). It was full of beautiful illustrations I’d made of the insects and their hills. As I recollect, it was pretty amazing. This could be revisionist, but I think it was the best in the class. So, with expectations high after that masterpiece I knew I had to level-up. Inspired again by video games, for my next project, I created the world’s first (and last) first-person-shooter/choose-your-own-adventure game. Think “Doom” running on PowerPoint. I built it at home over the summer. No lame programming involved. HyperStudio did have a programming language to it, but I never ended up learning it.

I wasn’t stupid. I knew no one wanted to play a game with a frame-rate of 10 per minute. I knew I’d have to learn real programming. This led to my next big leap in 7th grade when I found the book Windows Game Programming for Dummies. It talked about making real video games, but there was a catch. I’d have to face my old nemesis: numbers. But not only that! Letters, too! I was older now; wiser. I thought I was ready. I thought I could handle it, but I couldn’t have anticipated what happened next. Right there in the very first chapter I found that courage in the face of characters was not the only ingredient required. There were two others: a compiler and C++ proficiency. A compiler? C++?. I was ill-prepared yet again! And let me tell you, searching for “C++” with early search engines is a pain in the butt. This was a minor setback. I would do whatever it took to get this fabled “compiler” and learn the ways of “C++”.

I was a lucky kid. For Easter my parents surprised me with Microsoft Visual Studio 6.0. It was by far the most expensive thing I’d ever received for Easter and it came out of left field. Sure they knew I wanted it, it was recommended in the book I had, but I never expected to get it. I was (and still am) so grateful that they got it for me (if only I’d known about gcc). With the compiler/code editor in hand, next I had to learn C++.

“If an idiot can learn C++, I can learn C++” I thought when I picked up The Complete Idiot’s Guide to C++. Once I figured out how to get Visual Studio to do my bidding, I started with my first programs. I learned about this exotic language of ints, bools and chars (I pronounced it “char”, as in “Charizard”, but learned later people pronounced it “car” as in “character”, but if that’s the case, wouldn’t it be “care”!??). I had a very task-oriented approach to learning (still do). I quickly skimmed the boring stuff with laser-focused eyes searching for what I needed: to be able to print text to the screen and run game logic. Every new thing I learned I added to a text-based adventure game I built along the way. When I knew enough to make a game as big as I wanted, I stopped reading the book. Turns out, you only need to know half the book to make a text adventure game. I made a game, but AGAIN no one wanted to play it. Why? Cause I had no graphics, that’s why! First was graphics without logic, now logic without graphics. I understood then how Tom felt when he reclaimed the can-opener from Jerry only to find the can now missing.

I flipped through the rest of the book and scoured the index for “graphics”, “sprites” and “images”. Nothing. I looked back at the Windows Game Programming book. Too advanced still since I just skipped half that other book. Lord is there a faster way to get to graphics!?!? I asked every person I knew who had mentioned a smidgen about computers or programming to give me a crash course in graphics programming. A lot of older nerdy kids I talked to said they knew how to do it, but they never seemed to be able to meaningfully answer my questions. I think they were just making up that they knew graphics programming to sound cool. What a bunch of lying nerds.

Without a clear path to graphics programming, and a budding interest in film, my coding hobbies waned. I moved on. By high school I didn’t code much at all anymore. I still went to the computer club and took the (barely there) computer courses at my high school, but now I was all about movies. Free time was for stories, scripts and shoots.

As high school neared-end, I applied to a few film schools and one just-in-case school for Computer Science. The film schools were super selective. I made it to the interview round at one of ‘em, but was rejected in the end. So in the fall of 2004 I started my bachelor’s degree in Computer Science. I hadn’t given up on movies, though. My plan was simple: coast through the computer classes and focus all my time and energy on filmmaking.

But then I got bit by the programming bug again. Why? The school had robots! It had great professors and fun assignments! Not only that, the classes were easy after learning from the idiot book. I got to have fun with programming again. Then when I thought it couldn’t get any better, my advisor, Professor Chaiken, lent me an OpenGL book. And you know what the “G” in “GL” stands for? You guessed it, “graphics”! And not just any graphics, 3D graphics! I was back into programming for real this time.

I got a bunch of jobs programming after college and followed so many interesting ideas and paths. But in the end, I’ve always wanted to go back to where it all started: game design. I saved enough money over the last decade to buy about a year or two to work on my passion and build a game for making games in real life. You might know it as Checkverse. The app is an infant now, but over time it will be chock full of simple, core tools that anyone can use to create or complete challenges in the real world. It has all the benefits of digital record keeping and social challenge setting, but it helps you to play the world around you. If you haven’t already, you should check it out. It’s on iPhone and as of yesterday, Android!

And that takes us back to the future…

The Debrief

So yeah, that’s how I got into programming. This mission brought back a flood of memories, especially when I wrote the “Hello World!” program for C. You see, C++, the language I first set out to learn, is an extension of C. So the whole first half of the Idiot’s Guide is just C. I didn’t actually learn C++ until college ;)

What did I think of this mission? A few things came to mind:

  1. I care about syntax. What’s syntax? If you’re not a programmer, I’d equate it to how a language feels. French is fun to speak as Python is fun to type. A lot of my language choices are based on programming pleasure. People often argue to use the best tool for the job, but for most projects, programming speed is more important than program speed so syntax matters. The languages I like based on syntax are JavaScript, Python, Go, C and Rust. I mostly like them because I’m familiar with that style and they weren’t overly boilerplatey.
  2. Learning how to program today is a breeze compared to that long story I told above. The web is full of online interpreters that you can just wildly experiment with without installing anything. I was able to try out Go, Haskell and JavaScript all with just a web browser.
  3. Even when I couldn’t find (I didn’t try very hard) an online interpreter, installing the tools necessary is a cinch in today’s world. I was able to use Homebrew (a program for installing programs on Mac) to get everything I needed to do the rest of the “Hello World!”s. If I only had been born later…
  4. I haven’t learned a new language in a long time and it would be fun to really try out Go and Rust. I like how they look from my small sample and I’ve heard quite a bit about them. There was a long period where I was always learning new languages, but I haven’t really taken up any new ones in awhile.

So what did we cover today? We learned how I learned how to program and that a sample of “Hello World!” programs is a good way to get a taste for syntax and get some ideas for languages to learn more about. I’m not saying it’s the best way, but if you like learning languages as a hobby, it’s a good exercise.

Maybe making a text adventure in each would be more telling :) Thanks for reading!

Till next week!

Your pal,
Anton

Like The Debriefing? Then tap the little heart in the corner to make it easier for other folks to discover! Or, to go on your own adventures, get an invite for Checkverse today. If you want more of mine, here are the previous blogisodes:

--

--