This is one part in a series of posts about my journey through the AV world. I’ve broken these up into bite-sized portions that shouldn’t take more than 10 minutes to read. I’m hoping to explore the future of systems programming in the Audio/Visual sense. Let me know if I wander off into a tangent somewhere, I tend to forget where I’m going.
Hi. My name’s Kiel. How you pronounce it is all on YOU, but to me it’s Kyle. I’ll accept anything with a K sound since at least you tried.
I sort of fell into AV programming 12 years ago, but let me start back at the very beginning.
I didn’t realize computers could be programmed by just anyone until sometime around 5th or 6th grade. There was a movie on TV with a kid writing a computer game. I turned to my dad and asked, “You can do that?!” He booted up the computer, typed in
QBASIC (we still had MS-DOS then), wrote a short program, and pressed F5 (RUN). I’m sure the program was something along the lines of:
1 INPUT "Name"; name$ 2 PRINT "Hello, "; name$; "!"
I typed in my name and the computer wrote back:
I was hooked. I read the electronic help file cover to cover. I wasted tons of paper printing it out. I tried experimenting. I downloaded other people’s programs from CompuServe. I pored over how they made cool graphics effects, like fire or snow; how they represented game state; but mostly how they worked around the limitations in the BASIC language itself.
Every now and then I would download a program that had library routines to make it run faster. I had no idea how these worked, but I would copy them into my programs and use them as best I could. It looked arcane:
1 DATA 55,8B,EC,56,57,1E,8B,76,06,8B,04,8B,5C,02,8B,4C 2 DATA 04,8B,54,06,8B,6C,08,8B,7C,0C,8E,44,12,FF,74,0A 3 DATA 83,7C,12,FF,75,02,1E,07,83,7C,10,FF,74,03,8E,5C ...
What I eventually learned was: this was a small assembly language program, embedded in the middle of a larger BASIC program. The author had assembled code into 8086 instructions, taken the opcode values (in hexadecimal), and dumped them into
DATA statements. These would be
READ into a variable somewhere that a
CALL ABSOLUTE command could transfer control to. I had to figure out what was going on!
Again, my dad helped me along my journey. With a borrowed copy of Borland Turbo C++, I typed in one of my BASIC programs for a drawing tool (one that ran painfully slow). This is how I learned a few things:
- You can’t feed a program written in BASIC into a C compiler
- Compilers sometimes spit out very unhelpful error messages
- I needed to learn the C programming language to get any further
My dad didn’t know C either, so he bought me a book to work through. In a couple weeks, I was back to converting my BASIC programs into C so I could compile them and make them run faster. In C, you linked against libraries that contained the routines you wanted to call. There were no mysterious
DATA statements buried in the program that had to be deciphered.
Time passes. I move from Borland Turbo C++ to Microsoft Visual C++. Windows programming is entirely different. I pick up Programming Windows and learn how immense and scary the Win32 API really is. I also get a copy of Macro Assembler and a book on programming in DOS using assembly language. I explore object-oriented programming, but besides little toy problems, I don’t do much with it.
By the time I’m about to graduate high school, I’m straddling DOS in assembly language and Windows in C++. I’m still a nascent programmer, it’s all been a hobby until this point. My gut tells me I need to work at Microsoft so I can keep scratching the programming itch, but I know they don’t just hire kids who enjoy computers. I’ll need a formal education first. So I register at Cal Poly San Luis Obispo to study Computer Science.
I’m still not sure why college went so wrong, but I crashed and burned. Hard. I don’t think the courses I took were all that difficult, but I found plenty of excuses to ditch. Scheduling made it difficult to get the classes I needed, so most quarters I ended up taking whatever was available, and not much of it seemed relevant to completing my major. After a year of progressively worse grades, I dropped out. It was the first time I’d failed academically, and it was tough to accept.
Failure wasn’t entirely new to me. I’d been on losing sports teams before. And while playing on a winning team was always more fun, a losing team didn’t feel like the end of the world. I’d had good friendships build after being bad at something together. Maybe that’s why failing in academia hit harder: I’d always been a good student, but when I failed, this time it was entirely my fault. I retreated from everything, buried myself in a part-time job, and didn’t give a lot of thought to pursuing my dreams further.
It was my mom who pushed me to join ITT Tech, and at least earn a degree. It was the first step to getting back on track with a career. She drove me to appointments to meet with admissions and our first class registration. And it wasn’t a short drive: we lived 2 hours away at the time. She even co-signed on my student loans. She made it easy for me to view this as an opportunity to overcome my previous failure and move forward. The courses at ITT Tech were targeted towards developing a trade rather than earning a degree, but I never missed a class, lab, or an assignment. I also met a lot of instructors who had a passion for learning but had to hold down a day job, too. I strove to get everything out of the curriculum that I could and talk to them about their experiences. I needed to prove to myself that giving something 100% of my focus would result in success.
This is a good place to stop for now. It brings us right up to the point where I’m about to begin my career in AV.
I had to learn what excites me, where opportunities exist to turn that excitement into a profession, and that failing and moving forward is more important than giving up. Most importantly, I learned it’s OK to ask for help when you need it. My parents supported me and nudged me along when they saw a spark there. And when I felt lost and alone, they rescued me from that place, too. There’s no way I could have recognized my potential without their guidance and support. In retrospect, I believe proving to myself I could succeed also meant validating their efforts, that I wouldn’t waste the chances they’d provided me.
Join me in the next part when I actually start talking about AV and programming together! Gotcha!