The redoubtable AnneKate™ tagged me with a narcissitic brain-dump meme, How I Got Started Programming, so I figured I’d chime in. Usually I don’t do that stuff here, but hey, it’s my blog, I can me me me me if I want to.
How old were you when you started programming?
Sixth grade. Which would put me around 12 years old maybe? My dad brought home an Apple ][ (amazing how many stories like this start off with that machine), intending to do Typical Computer Things like track finances and write simulations of radiation-resistent DNA (my Dad’s awesome), but I noticed that it could play GAMES, and I glommed on to it. Dad got occasional visitation rights, but for the most part, the machine was all mine.
It was a super spiffy version, too. It had 48K, plus Applesoft BASIC on a card (Integer BASIC on the motherboard). To switch between languages, you powered-down, flipped the switch, and powered back up. (this was before DOS 3.3). Eventually the machine got a Language Card (16K expansion).
How did you get started in programming?
Typing in programs from magazines and books. This was the time when print publications (remember those?) would have complete program listings. I learn best by by eye -> hands -> screen -> eye -> brain, and this is how I learned programming. Actually, where I learned debugging, since you learn more by making (and finding, and fixing) misteaks than you do by doing things perfectly the first time. At least that’s what I keep telling myself.
What was your first language?
Apple ][ Integer BASIC. Later Applesoft, and then the UCSD Pascal system.
What was the first real program you wrote?
Where “real” is something non-trivial, and not something I typed in from a magazine. It was one my Dad designed, and I implemented. It was essentially a quality assurance database system for a Radiology department. Diagnoses could be entered, and then later correlated with reports from Pathology. Or something like that. As far as I was concerned, it was “type stuff in, save it to disk”, and then periodically run the worlds most inefficient multi-device sort. But it was cool seeing three Disk ][ units hooked up to a machine, all running.
It was at this time I learned what flowcharts were (remember those?), sigma notation, and basic algorithms and data structures.
What languages have you used since you started programming?
Roughly chronoillogical order, favorites starred
Integer BASIC (*), AppleSoft BASIC (*), UCSD Pascal (*), FORTRAN IV (under UCSD Pascal), VAX FORTRAN, VAX assembly, VAX BASIC, VMS DCL, Dbase ///, Turbo BASIC, Mac/TML Pascal (*), Hypertalk, Object Pascal, C (*), C++, Newtonscript, /bin/sh, /bin/csh, emacs lisp, Tcl (*), Perl, Oracle SQL, PL/SQL, PHP, Objective-C (*), /bin/bash, Javascript, Pythong, Java, Sawzall. HTML (XML and generic SGML) if you count those as languages.
Badgers, or Wombats?
Badgers, definitely.
What was your first professional programming gig?
Visix Software (R.I.P.) We did a cross-platform toolkit called “Galaxy”. It ruled™, and was definitely ahead of its time. Its geometry management system has not been approached by anything I’ve seen since.
I started off in tech support answering questions about network configuration for our license server and X11 Font Paths for our Looking Glass product. Eventually worked my way up to Señor Software Engineer working on some important parts of the product. Also, because of Visix, I spent four months on Wall Street.
My first “will program for food” was a couple of summers and Christmas vacations during college at the Little Rock VA Hospital, assembling PC-clones from spare parts, and building some software tools for the department. One was an elaboration of the previous medical system (this time in a “real” database, Dbase ///), and an isotope tracking system. I couldn’t really be paid, so I was officially a volunteer. If I was there for four or more hours, I got a cafeteria meal voucher, which was *just enough* for a cheeseburger, onion rings, and a coke. It was the only non-lethal thing there.
If you knew then what you know now, would you have started programming?
Hell yes! I’m having the time of my life, and I get paid for it.
If there is one thing you learned along the way that you would tell new developers, what would it be?
This is more generic life advice, but something I feel strongly about: Surround yourself with people that are smarter and more talented than you, and learn from them. See what they do, figure out why they do it. Ask questions. Bask in their greatness and absorb everything.
At Visix, I spent a big chunk of time hours and three whiteboards going through the Galaxy “Class Manager”, figuring out how it worked (which was a combination of C++-style vtables and Objective-C runtime lookup, but all in vanilla C, with a lot of macro magic).
What’s the most fun you’ve ever had programming?
At Visix, in the bootstrap days of Galaxy. I wrote a lot of demo programs and sample code, in addition to doing the “List Manager” (think Excel, but without the calculation engine). There were a lot of times I’d be working all night on some fun thing (like a graphics demo that needed scrolling, but we didn’t have scroll bars implemented yet, so I wrote a little joystick thingie). My favorite times were hacking on something fun, looking out the window, and watching the sun rise. It was magical.
Thanks AnneKate, that was a fun stroll down memory lane. Now get off my lawn.
Wow, your list of languages is intense. What games did you play on the Apple ][? INQUIRING MINDS WANT TO KNOW!
Comment by Anne K. — July 2, 2008 @ 5:38 pm
They got the job done :-)
Favorite games in no particular order: Miner 2049, Lode Runner, Taipan, Dungeon Adventure, Wilderness Adventure, Odyssey – the Compleat Apventure [sic], Star Trek, anything by Bill Budge, Space Eggs, Zork I-III, Planetfall, Starcross, Suspended, 7 Cities of Gold (on a friend’s Atari 400), Escape, WIZARDRY!, Time Zone, Three Mile Island, Choplifter, Lemonade, Snack Attack, Temple of Apshai / Tower of Morlock, Ultima III.
Kind of makes you wonder how I had any time for programming or BBSing.
Comment by Mark Dalrymple — July 2, 2008 @ 5:49 pm
hey Mark, does your book Learn Objective-C On the Macintosh do Objective-C 2.0 or is it the old objective-c before properties and dot syntax stuff that it now has?
Thanks!
Comment by threebrain — March 27, 2009 @ 4:37 pm
The Apress book (with the lime on the cover) covers objc2, properties, dot syntax, along with some Xcode tips, KVC, and NSPredicate.
Comment by Mark Dalrymple — March 27, 2009 @ 5:06 pm
Hi there, can someone get me the complete toc of Advanced Mac os x programming, since I’d like to get this book but i know no pdf toc or sample pages available. I’d like to know how advanced is the book (i really am interested in *really advanced* stuff :))
tx
jacques
Comment by Jacques — June 27, 2010 @ 3:03 pm
Hi Jacques,
As far as I know there is no PDF TOC running around. We’re in the final throes of wrapping up the third edition (aiming for a Fall release).
The syllabus for the Advanced Mac OS X Bootcamp at http://bignerdranch.com/classes is pretty close – just take out the stuff that was introduced in 10.5 or 10.6.
Comment by Mark Dalrymple — June 27, 2010 @ 3:42 pm
Found a mistake on the text :)
“Java, Sawzall. HTML (XML and generic SGML) if you count those as langauges.”
Comment by Fernando Valente — August 28, 2010 @ 4:13 am
Slightly late, but fixed. Thanks!
Comment by Mark Dalrymple — April 6, 2011 @ 1:47 pm