A first generation product of the information age, I first delved into the world of computers and programming way back in the '80s when you had to put a disc in a computer just to get it to start up and a "hard drive" was a giant metal case full of magnetic tape. My first programming experiences go all the way back to early elementary school, coding programs from my 321 Contact magazine in BASIC on my Apple IIc during the cold Alaskan winters, and I've been programming in one way or another ever since.
Another interesting facet to my education with computers is that from the very get go, I worked in not just regular serial programming environments but also in object-oriented ones. My first serious (or at least what I considered serious at the time) programming endeavors were done in HyperCard, and beyond that I learned to program in a number of normal and esoteric programming languages. During junior high, I bussed over to the high school to take computer programming (VisualBasic at the time), writing screen savers and Infocom-esque games, and as a hobby played around with Pascal and the MUSHcode that fueled some of the early internet games.
So, suffice it to say, when I say I grew up with a keyboard, it isn't hyperbole. When I went to college I was fairly certain what my degree was going to be in (note: to be more precise, degrees. I also studied for and acquired a degree in music, another of my great loves. More information on my musical endeavors can be found in the "play" side of my website). I worked my way through college in the IT department, doing everything from Cisco maintenance, to desktop support, to documentation, to internal programming, to web design. In fact, for a few weeks I was the University of Alaska, Fairbanks's primary webmaster pro tempore while the full-time staff position was vacant. My primary education was in C/C++ along with the STL, but due to coursework and real work, I also learned and/or used SQL, php, perl, shell, html, VHDL, assembly, and a handful of other languages.
After finishing up my B.S. in Computer Science and a B.A. in Music, I worked in retail for a short time before soon being hired back as a full-time analyst programmer for the Unversity's Statewide offices. The University of Alaska has an interesting setup, wherein every major and minor branch campus in the system is served by one centralized set of interconnected systems, and so nearly every piece of software that the University purchases needs to be heavily customized to fit into this scheme, and to be easily usable by campuses supporting student bodies ranging in size from a few hundreds to multiple thousands. So, in addition to the standard skills you'd expect in such a position such as product lifecycle, requirements design, database design, testing, documentation, etc., I also learned a great, great deal about interconnected bureaucratic systems, but in real-world and software terms. Having such a variety of systems also meant each programmer had to be comfortable easily switching between Oracle (the environment of the primary information system) to Java, C, perl, php, or whatever was needed by various other components, not to mention all the custom-built pieces interconnecting them all. Also, since a good percentage of the information systems were web-facing, it also meant strong skills in web-based UI design, usability, and WCAG were a must.
Ultimately, I chose to leave this position to further pursue my education, and to, quite frankly, see some sights outside of central Alaska. As such I came down to Portland, a town which I had enjoyed previous visits to, and enrolled at Portland State University in the department of Computer Science. During my time there I specialized in Intelligent and Adaptive Systems (i.e. pattern recognition, visual systems, data mining, signal processing, and artificial intelligence), but took care to also maintain a variety of other classes such as graphics, networking, compiler theory, and (of particular interest to me) parallel systems. I also served as a teaching assistant at PSU during my time, teaching programming techniques from rudimentary basics up through advanced object-oriented concepts and algorithms. Additionally, I served as TA for the non-major computer science class, a position that required being able to communicate with students of a very much non-technical background and ultimately explain and teach them how computers are programmed, culminating in some very light Visual Basic application programming. While this may seem strange to point out, anyone who's had to try to explain technical specifications to someone from marketing can understand just how much of a challenge this can be, particularly since these classes had literally hundreds of students per quarter.
In June 2009, I received my Master's of Science, and said goodbye to the student life. Currently I am still in the Portland area and am professionally employed writing code, troubleshooting systems, and otherwise using strong communication skills to serve as technical expetrise to bridge the functional-technical gap at my place of employ.