It’s my favorite time again, when we announce the Big Nerd Ranch Big Nerd of the Month!
BNR Blog: Congratulations on being named Big Nerd of the Month, Adam! Should we have some candy corn to celebrate? I hear it’s your favorite.
AP: Thank you! I’m glad you asked—I took the liberty of preparing several candy corn dishes for us to enjoy during the interview. The ingredients are all the same, but as you can see the arrangements are different. Which would you like to try first?
BNR Blog: I have to tell you, I’m not a huge candy corn fan.
AP: Oh. Well, don’t feel obligated. (Puts serving tray away.)
BNR Blog: I have to ask, though: candy corn? What’s with the love for it?
AP: Candy corn is about as American as it gets, don’t you think? Like the flag, it has three colors. It’s got corn syrup. It was invented by the Pilgrims at the first Thanksgiving as a substitute dessert when their cakes fell. I’m thinking of starting a Twitter account, @candycornfacts.
BNR Blog: I’d follow, for sure. I could learn a lot. That brings me to my next question: Are you a candy corn purist? Despite not being a huge fan, I have a friend that makes an awesome candy corn bark. There’s also chocolate candy corn, which I’ve had, and it isn’t terrible…
AP: Don’t you mean candy corn husk?
BNR Blog: Is that the scientific name? Yeah, candy corn husks. Those are pretty good. I’ve also heard about your undying love for pinball. How did you get into pinball?
AP: Pinball is the perfect union of art, technology and the physical world. Dozens of computer-controlled lamps, a steel ball that you can (with practice or luck) send flying through ramps… I’m getting misty-eyed.
BNR Blog: That’s beautiful. Naturally, I have to ask what your favorite pinball game of all time is.
AP: My top three, you ask? Very well.
BNR Blog: Pinball is something that I can get behind (sorry, candy corn). Can you tell me a little bit more about pyprocgame?
AP: Not long after I got my first pinball machine, I wanted to find a way to program them. In the 90’s, they did this with assembly and C, but I thought it would be more fun to write a game in a high-level language. After spending a lot of time tinkering with using an Arduino as my interface to an existing game’s CPU board (this was on a Whirlwind, and it mostly worked), I stumbled across this guy Gerry who was making a board called the P-ROC to do exactly what I was trying to do with the Arduino, only better. Luckily for me, he was open to opinions about how the software should be done, and so I barged in and wrote a bunch of the open-source software stack. Pyprocgame sits on top; it’s the high-level Python library that you use to write game code with.
I don’t write much pinball software these days, but there are a good number of people all over the world who are building games based on pyprocgame. It’s extremely cool to see that.
BNR Blog: It’s really amazing that people are still building pinball games based on your program. Can you tell us about another one of your nerdy hobbies?
AP: I recently got back into O scale model railroading, which I haven’t touched since I was a teenager. It might have something to do with all of the CSX trains that roll by the Ranch every day. In the abstract, model railroading is quite a bit like pinball in that it combines art, technology and the physical world. The difference is that you have to build the world yourself.
BNR Blog: Speaking of the Ranch, how did you come to be employed by Big Nerd Ranch?
AP: I wanted to write great Cocoa and iOS software, and the Ranch was the clear choice. I knew Alex (ed note: Alex is our July 2012 Big Nerd of the Month) through CocoaHeads Atlanta and asked him if Big Nerd Ranch was hiring. Three years later, I can say that I feel quite fortunate to work with such a great group of people, and being able to share my enthusiasm for the Cocoa and iOS platforms with our students is a great perk of the job.
BNR Blog: Last question, and it’s a two-parter. Do you have any suggestions for someone who wants to break into development? What are your recommendations for someone who is just starting, whether they’re exploring a new career path or have just begun thinking of the future?
AP: When you’re just getting started, avoid focusing too much on one platform or language. This will help you develop a better base and you’ll be more prepared to adapt. Even if you don’t want a job writing C, learn it. Take the time to understand pointers, memory, bitwise operations and so forth. Force yourself to get out of your comfort zone. You’ll be surprised how that knowledge will come in handy.
As for your career path, sometimes the best job for you isn’t always using the tools or language that you thought you wanted to use. What’s most important is the people you work with. When I graduated from Georgia Tech, I thought I wanted to write web sites in Java; instead I took a job writing an MPEG demultiplexer in C/C++. Dot com bubble aside, it ended up being a great decision; I stayed at that company for seven years. I made that decision because I felt better about the people involved, and with a great foundation in software (and C—cowboy hat tip to Jim Greenlee) I was prepared to adapt to the language.
BNR Blog: Thanks for the insights, Adam! Enjoy the trophy.
Are you adaptable like Adam? Big Nerd Ranch has open positions for iOS, Android, Open GL and web applications developers. Check out our careers page if you think you could be the Big Nerd of the Month someday soon!
Interested in leveling up your coding skills from the same authors of the Big Nerd Ranch Guide? Subscribe to The Frontier today!