Ben Harker made a suggestion the other day about a good blogging topic that I thought was interesting. He was wondering what my programming background is and what sort of things got me interested in programming.
I first started programming when I was in high school. I used qbasic on the old Windows 3.1 machines we had in the library and used it to write some dinky little text-based games. Then I convinced the school to get a copy of this new, awesome BASIC compiler called QuickBasic. It could actually build stand-alone executables! Oooh! ;-) I taught myself BASIC with these tools because my school didn't have any sort of programming courses. But I still did pretty well for myself. I eventually started making graphical games using qb, including a full-length Lord of the Rings RPG. Complete with animated scenes and turn-based fighting system. :: grins ::
Eventually, my love of game programming and propensity for learning got me accepted into DigiPen. I applied to go there straight from high school and was one of 60 people accepted into their Vancouver campus (out of about 12,000 applicants). It was at DigiPen that I learned C -- a very hard crash-course, I might add. I still recall taking the midterm exam for C where I was given 100 questions that looked like this:
1: a = 10; b = 1, d = -3;
2: c = a+++b--, d;
3:
What is each variable's value on each line?
Oh, and just to make things fun -- not every question had legit code in it. You had to also be able to identify what code wouldn't compile. Thankfully, I learned C very well and managed to ace the test while most of my friends were lucky to pass. :-)
After attending DigiPen for a year (and earning a 3.9 GPA), I decided that I didn't want to continue with that school, so I moved back to St Cloud to attend SCSU as a computer science major. This is where I continued with my knowledge of C and used it to teach myself C++ well before I got into any programming classes. Up until this point, the majority of my coding was done in C and using the Win32 APIs, though I had also learned a fair amount of Mac toolbox calls on System 7.
One of my first jobs while back in MN was working for a local company doing VB 5 programming. I didn't know a lick of VB 5 going in, but it wasn't terribly hard to pick up and so after a year, I was doing well with it. However, that was also the last time I ever really used VB for anything other than exploratory purposes. Go figure!
After attending SCSU for three years, I graduated (with honors) and had a firm understanding of: C/C++, Java, and BASIC, and a reasonable understanding of: ML, 68k assembly, x86 assembly and a handful of other things. My major focuses through college were on AI, graphics programming and data structures. I had a few courses on compilers, and thought they were the most boring thing in the world. After all, there's only like 12 compiler writers on the planet, right? ;-)
My first job out of college was with REAL Software, and since getting here, I've learned tons of new things and realized that I really do enjoy toolkit, UI and compiler work. I'm also very glad I didn't continue pursuing game programming. I've kept in touch with many friends from DigiPen, and all of them have had at least 10 jobs since graduating, and have no stability in their lives. No. Thank. You.
Since graduating, my skills with C/C++ have improved, but I've not really learned that much new stuff about the language itself (I was a "whiz kid" with them in college). My Win32 knowledge has expanded to encompass a lot of the newer APIs, but I've been strong in the basics for so long that I can do Windows programming in my sleep (I've been programming with straight Win32 APIs since Windows 95 came out, which makes me feel old). But I've gained a much better understanding of Linux APIs (specifically with GTK) and OS X APIs (since there was no OS X when I first started), and gotten pretty handy with assembly (but not handy enough to pretend I know anything). I've also learned more about how compilers work than I ever thought possible.
I still do tons of programming, both for my day job, and on the side. My side jobs tend to be done in languages other than REALbasic much of the time because I enjoy keeping up on non-RB stuff as well. I do the majority of my day job coding in REALbasic, with C++ being secondary. So in my "spare time" I do plugin work in C++, and fun projects in C#, and monkeying with Win32 APIs and Windows concepts in REALbasic. That's when I'm not doing a myriad of other computer-related things.
One final factoid of fun: before working for REAL Software, I had never heard of REALbasic, nor had I used it. In fact, when I went in for my interview, I still hadn't written a single RB application. I think my next blog posting should be about the fun times I had with getting this job. :-P
OT, but would you mind if I (our yourself) created a syndication account for your blog on LiveJournal? It would allow LJ members to see your blog's feed on their friends/watch list.
http://www.livejournal.com/syn/
and
http://www.livejournal.com/support/faqbrowse.bml?faqid=137
for more info. Thanks Aaron!
I tried, but since I don't have a paid account, I can't seem to syndicate (which is rather stupid -- why would a paid LJ member need to syndicate a non-LJ blog?). Maybe I'm just droolingly stupid though.
hmm...I don't know why only paid members can do that. Strange. I'm a paid member, though, so I can set it up. What should I call it? ramblings? Hopefully that's not taken XD
Ramblings sounds awesome to me. And if it's taken, Aaron Ballman's Ramblings would work as well.
Thanks! :-)
Crap, ramblings is taken and there's a char limit of 15. boo to you, livejournal. Anything else you'd like me to try?
Yet another reason why LJ sucks. ;-) Hmm...15 characters, eh? "Aaron Ballman" is only 13 characters and if someone else has that, then I'd like to meet him. :-)
What no classic languages like APL ? Cobol ? Snobol ? PL/1 ? 6502 assembler ? PDP/11 assembly ? VAX assembly ? Prolog ? Lisp ? Simula ? Fortran ?
All the others are like light reading compared to something in APL :)
I've seen COBOL and Fortran code (while working for the company I did VB programming for), and I shudder to think that people are still chained to desks working with that kind of code. ;-)
Ah how QuickBasic 4.5 heralded the dawning of a new age. Ah how many times I cursed at it, how many times my smart-alec co-worker bashed me over the head for not using a Mac instead. Ah, the bad old days...
VB 5? I surprised they didn't force you to use the Immediate window all the time... ;)
Woot, done!
http://syndicated.livejournal.com/aaronballman/
@Becky -- awesome! Thanks!
@Corbin D -- nope, the immediate window never came into play for me. And I had access to Mac in high school, and I think one of them even had TrueBasic installed on it. But the only thing I ever used a Mac for was torturing others (funny how some things never change, eh?).
FORTRAN is a decent language for doing calculations ... but not much else! I took a class in it in college way back when.
A few years back I had to re-learn it to port a FORTRAN app at work ( to give it a badly needed GUI and integrate it better with a LABVIEW App) to RB. The FORTRAN app was not that old ... It was originally written by a physicist that is no longer with the company (he went back to academia) in the mid 90's.
I started programming with a Sinclair ZX Spectrum - what a great machine :-)
I have another potential topic for you but you may think this would be better posted on the forum.
It would be interesting to know where RealBasic fits into the hierarchy of programming languages (if that makes sense). What are its strength and weaknesses compared to other languages? What it’s limitation are when compared to say C++ or C#?
A couple of my friends that were bio/chem engineering majors only a few years ago still had to take some Fortran courses. I thought it was odd, but I guess they still use it in certain fields for um...calculating...stuff...or something like that :)