Software Development Meme

How old were you when you first started programming?

I believe I was probably 16 or so. I was in high school and we started learning on Radio Shack TRS-80s and Apple IIe’s. It was in high school when I saw what the Mac was and desperately wanted one. But hell, they were pretty expensive. It would be a few years before ever getting one.

What was your first language?

BASIC, on the aforementioned platforms. GOSUB FTW!!

What was the first real program you wrote?

The first real program that I wrote and ever sent out into the wild was called DoubleScroll. It was an extension for Mac OS that would give your scroll bars two arrows at each end. It wasn’t the first of it’s kind, but my version worked with System 7 as well as 6. It took a lot of sitting in Macsbug to figure out that the System 7 scroll bars got a new, undocumented call to allow them to draw the scroll box outline. Bastages!

What languages have you used since you started programming?

The most interesting fact is that when I was working during college, I worked at a store that did all their database stuff in Basic as well.

C I learned completely on my own trying to learn Mac coding. This was just as C was becoming popular. I didn’t have the cash to dish out for MPW and all that fancy stuff at the time, so I got Think C.

I know C/C++/Objective-C best and probably PHP second best. But it’s far second.

What was your first professional programming gig?

This was at a company called Charles River Analytics. They worked on a piece of Mac software called Open Sesame. It watched what you did and used real honest-to-goodness AI to find patterns and offer to automate certain sequences. I came on to work on the monitoring piece, since by that time I had a decent amount of experience patching the OS with INITs. By the end of my time there, we had Undo working in the Finder. Yes, it was a flying hack, but it worked!

Of course, after I got to Apple, my viewpoint of patching the OS changed dramastically(tm).

One of the cool things about being there at the time was a) it was when the Internet opened up and b) we got to visit Taligent. It was from Taligent’s use of C++ that we learned a lot. It really opened our eyes as to how it could really be used. They had actual real templates back then. Like, our compilers couldn’t even compile stuff they did. Of course, it was the slowest OS I’ve ever seen, so it didn’t completely sell us.

If you knew then what you know now, would you have started programming?

Oh hell yes. It’s one of those really addictive things that sucks me right in. It’s just too cool to be able to code something up and show others. Especially these days with the stuff I’ve learned over the years.

If there is one thing you learned along the way that you would tell new developers, what would it be?

Wow, only one? Well I’m giving you three!

Don’t do ‘surface coding’. Always strive to understand what’s really going on underneath some APIs if you can. I find that it really helps me get my head around the way a frameworks, etc. is put together. Sometimes, when I see something odd, I’ll write little tests to kind of see what it’s really doing. Sort of a black box model, I guess.

Never assume you know how things are going to perform, or what’s slow and what’s not. You’d be surprised.

Be lazy. Don’t do anything in your code that you don’t need to do. This was a huge thing we learned at Apple, and it made huge differences in performance (and perceived performance). I swear I could write a book from all the things I learned while there.

What’s the most fun you’ve ever had… programming?

I’ve had many fun times, I enjoyed doing that first DoubleScroll extension as it was such a learning experience both in terms of tech as well as dealing with customers, etc. It was also exciting to be sent a book with a check or the software from Michael Crichton.

My time as Apple was very fun, as was some parts of my Yahoo! experience (the Atlantis – Konfabulator 4.0 project).

But I have to say, the iPhone app I’m working on now has been a lot of fun. Probably the most fun I’ve had coding in a long long time.

Who’s next?

This is a tough question, actually. I think I’m going to tag Daniel Jalkut next! Since I wrote this in MarsEdit, I felt it was fitting 🙂