Software Development Meme

This just in, guys!  I'm about to participate in a meme.  I've never done that before, so I'm a little nervous...

Mr. Damon Payne called me out.  This is a list of questions about your personal history with software development.

How old were you when you started programming?

I was 8-ish.  I can't really remember exactly, because that was quite awhile ago.  My pa used to get magazines on model rocketry and I'd like to page through them.  They'd occasionally have code listings in BASIC for calculating stuff on your home computer.  I was showing this to my buddy and he said, "I've seen this before!  We type this into our computer and then we can play games!"

So, over to his house, on his Apple II, we spent an enormous amount of time typing in some random program from the magazine.  In the end, it was something super boring that asked for a bunch of numbers and spit out a result.  I didn't get it.

But this was the first time it occurred to me that people created the things that ran on computers.  As strange a thing to realize, because someone must create them, but they existed already and I hadn't really wondered how they got there, they were just there.

Anyway, so I spent the rest of the day typing absurd instructions into our Commodore 64.  They were very verbal, like "CREATE SPACE SHIP THAT I FLY."  I was undeterred by the non-sensical message, "SYNTAX ERROR" that followed each line.  My pa eventually came and asked me what I was doing.  I told him and he gave me two books on BASIC for the C64: Kids and the Commodore 64 and a generic one for adults (I still have these somewhere).

And so it began...

What was your first language?

BASIC for the C64

What was the first real program you wrote?

Like Dan's response, I don't really know what makes a program real..  Like Damon I focused my time primarily on trying to make games.  None were terribly successful (especially at the BASIC stage).  I never had anyone to guide my programming adventures and so some simple concepts just never occurred to me.

For example, vectors.  I kept trying to animate things on the screen and had a basic understanding of The Game Loop but some how failed to connect the very simple, related dots and use a list of vectors to move objects independently.  Years later when I realized this (maybe I was 12 by then or something. ;-) Just kidding, I don't really remember), I kept kicking myself, that I could have been making rockin' awesome games this whole friggin' time.

I began to wish that I had someone to give me pointers here and there, and maybe point out the obvious when I failed to see it.  Today, I'm not so sure.  Maybe because I had to learn everything by experimentation or research is what made me the programmer I am today.  Who knows.  I'll choose the one that makes me feel warm inside.

Anyway, there were several attempts at spaceship games in BASIC.  Much later I wrote a pure software 3D engine in C++.  I also spent a ton of time trying to develop a graphics media library in C++.  I never really got to making any actual games.  I was more into write tools for building games or a framework for creating games and just never seemed to get around to the games themselves.

Net result: they were all real.  End of answer.

What languages have you used since you started programming?

C64 BASIC, Java, C++, C, UNIX shell, Python, PHP, TCL, Perl, JavaScript, Haskell -- in roughly that order.

The C64 was still my only computer until 95-96. We eventually got a Pentium 200Mhz with Windows 95.  I had no money, so I initially hacked my way into the modern era hacking with Java 1.0.2 because the compiler was free.  Eventually, I did scrounge together the $200 for Borland C++.  I was a pure C++ programmer for many, many years.

In fact, even though I haven't done practically any C++ in the past 6-7 years, thats probably the language I've coded the most of all time.  I was kind of a C++ fanatic/fan-boy.  I knew certain parts of the language standard pretty well and hacked out a few personal implementations of parts of the STL (the Standard Template Library).  I used to have dreams in C++.  Despite my deep love for it, I have no desire to ever go back.  Ever. ;-)

These days my favorites are Python and Javascript.  I really dig Haskell but I haven't gotten that deep into it yet.

What was your first professional programming gig?

Not counting failed attempts to start my own business? ;-)  I have exactly 3 of those.

A friend's father had a law firm.  I remade their website in PHP.  Its one of the first web-apps I ever wrote.  I worked on it for about 4-5 hours and made $300 bucks.

I spent a long time not wanting to work a full-time coding gig, because I wanted to only work on my projects and only wanted to work on Open Source.  For a long time I entertained the idea of being a sys-admin so that all my code belonged only to me.  Now I work for a company where I can contribute some to Open Source on the job.  Score!

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

If I knew then, what I know now, I would have gotten the vectors thing!

Of course, man.  I was in it from the beginning just to create something.  Putting all this commercial business on it kind of dampens that a bit, but even if I had decided to be a firefighter or zoo keeper or plumber or something, I would still have wanted to write code.

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

Arg.  This is a tough one.  I guess just be open to keep on learning.  Don't get stuck in a rut.  Basically, the same as what Aaron wrote.

In the beginning I wrote tons of code based on what I knew then.  I'd get so far and in the process learn that there was a better way and throw all that out. ;-)  I had to do alot of that.  You'll feel like you're at the top of your game and then a couple years later realize you knew nothing.  Just never stop going forward.

What's the most fun you've ever had programming?

It's all the most fun except when it isn't!

One of the most fun I had recently, was a customer support chat thing for work.  It consisted of a plugin to Wildfire (a Jabber server in Java), a plugin to Spark (a Jabber client in Java) and a web-based chat client in Javascript.  Users would click a button for help which would open up the Javascript client in the browser, which would work with the server to get a service rep using Spark to take the request.

Working with Jabber (well, called XMPP now) was awesome.  Working on so many different types of components to make the whole was awesome.

PoCo::MessageQueue is also alot of the most fun, but Paul Driver has been the main guy carrying that torch for awhile.

And, of course, The Lingwo Project.  Its the culmination of alot of thinking and hacking I've been doing over the past 5 years.  Its currently a canidate for, "my life's work".  ;-)

But, yeah, when I can really settle in with the appropriate zen on any project, that is the most fun, every time.  This can only be broken by not coding, not having any zen, hacking on code so ugly it hurts you to think about what it would take to un-ugly all that code, etc...

Who am I calling out?

Nick Purvis

Paul Driver (his response)

Andrey Popelo

(If you guys don't have public blogs, you'd better make some quick!)

Update (7/1/2008): Paul responded!  Yay!


I am wondering if you can

I am wondering if you can write a review for EASEUS Partition Manager Server Edition?

I can send you a press release and review as a consultation.
Best Regards!