Jason Streetz

Yup. yup. I sure do love to play with computers!

Programming

I've been called a "hacker" before, as in someone who just "hacks" away at programming as opposed to being a "professional". That's fine with me. Show me something of substance a "pro" can do that a "hacker" can't. I'd wager its the "hackers" that push the field of computer science forward, not the soulless drone "pros". So, to ye who call me a "hack", I say this: I'm flattered!

Anyhow, I've been at it long enough that now people pay me to play with computers. I'm glad, because I sure can't do anything else worth a paycheck.

  • My Profession

    How I Got Into Computers


    As a youth, I spent a great deal of time tinkering with one of the following pieces of programmable technology:

    Parental Influence

    Were it not for my parents, both computer nuts in their own right, I might never have been exposed to computers in my youth. But I was fortunate. Between their slightly differing interests in computers, our home was the site of no less than 4 or 5 computers at any given time. And of course, there were frequent upgrades, new purcahses, etc to keep the fleet in tip-top shape. Thus, I had all the computing power I could possible use as a fledgling programmer!


    Much of my exposure to computers in youth was through a BBS (Bulliten Board System) my mother hosted from our basement. Like many of its time, it was running on a Commodore 64 home computer!


    The Odyssey2 by Magnavox

    In the beginning, we had the Odyssey.


    The Odyssey2

    I was a kid at this point, so of course I was captivated by playing games on this thing. Among them was a Pacman-clone K.C. Munchkin. Yeah, way too many hours spent on this.


    K.C. Munchkin

    Eventually, the cartridge called "Computer Intro" made its way into my life. This rather unique cart allowed ambitious people to actually write little game applets and other programs for the Odyssey2. The concepts of hexidecimal codes, sprites, sounds and control logic were forevermore etched into my mind.

    The seed of a programmer had been planted.


    Computer Intro


    The Texas Intruments "TI994a" Home Computer

    This is the first real "computer" I got my hands on. I remember spending many hours in fascination with the (crumby little) BASIC programming language. Soon, the idea took shape that I could make this machine execute my thoughts in the form of computer programs.

    A revelation : I could make it do things!

    I can recall staying up nights scribbling little BASIC programs (or psuedocode BASIC-ish scrawlings) in notebooks, feverishly looking forward to my next visit to the TI994a. It was the shared family computer, afterall... I had to wait my turn! I can still remember the rush of excitment at seeing my concepts come to life right there on the monitor (er, TV screen).

    Was it a programmer or a hacker that bloomed here? Hard to say.


    The Atari 65 XE

    Ever heard of this thing? Didn't think so.

    Nevertheless, a brief but important stage of my early computer programming development took place through this computer. I began to really poke at what was beyond the simple BASIC language they gave me.

    Those earlier experiences with the Computer Intro Odyssey cart came in handy here, I fathom.

    I'd write little games, utilities, and other fun little programs just to see what this machine and I were capable of. Sprites, sounds and other techniques were the focus of my development, inspired by console video games of the time. Aside from that, I was interested in the I/O. How did this thing called a "disk drive"? Etc.


    The Commodore 64 and eventually the C-128

    First off, I've got so much to show and tell about Commodore, I've made a separate page to hold it all!

    Now, on with the role the Commodore played in my past.

    A Hacker was born
    Far and away, the greatest impact on my developmental years of programming came from the Commodore 64 and its successor, the C128. On these machines I really got into assembly, the innards of graphics (VIC-II), sound (SID), memory, the processor (6502), and hacking the BASIC interpreter with ML wedges and so forth. .... ah, the memories!


    Going On-Line
    My mother hosted a fairly large Commodore BBS from our basement. A dedicated bank of phone lines and modems pulsed 24-7 providing a variety of services and activies for users who dialed in with their -- get this -- modems. Overall, it was an experience similar to discussion board and file-sharing sites on the Internet today, only slower. Lots slower.

    Even so, I was instantly fascinated with the idea of computers talking with one another. Among my early projects were mini-BBS "servers" (using today's name for it). I remember devising a way to transcend the primitive ASCII-based presentation of then-modern BBS protocols, in a way not unlike HTML today.

    Social Networking
    Aside from technical interests, the Commodore actually opened a few social doors. I wound up meeting a few friends via the BBS circuit, some of whom are still friends to this day!

    A Harddrive, At Last!
    At some point, the BBS grew beyond the capacity of our daisy-chained array of disk and tape drives. Thus, a hard disk entered the picture (and my grasp).

    I remember the day my parents brought home a CMD 20MB Harddrive designed to work with the C64. What a tank! It was about the size of a modern PC tower. But, oh, the SPACE! Remember, the Commodore had 64 or 128 K of memory, and here this tank had 20 MB of storage. The possibilities!


    That's me at the Commodore 64 with some of my cousins.


    My buddy Shawn and I programming an early version of Paradoxia into the Commodore 64.

    Paradoxia-128
    One of my early projects on the C128 was a crumby little overhead-style RPG game based on my fictional universe Paradoxia. I remember using graph paper and calculators to design the sprites and custom character sets. As primitive as it wound up looking, it gave me an appreciation of how I had to write a whole set of helper programs (tools and editors) before I could write the game itself, and thus a precursor to the concepts of encapsulation and componentization took hold? Either way, it was fun! Other C= Programs
    I wrote a few other programs and utilities for the C=64 as well. Truth be told, they were all ultimately built as tools to build Paradoxia.

    PC and MS-DOS


    Well do I remember the transition from self-contained computers that were also their own keyboards (ala the C64) to IBM PC desktops and/or tower machines, as assembled from components by my Dad. With the physical hardware change came a whole new depth to programming.


    I had a brief transitionary period with GW-BASIC and QuickBasic, DOS Basic interpreters, and from there explored the wonders of MS-DOS, the concept of a (gasp!) directoried file system. Shortly thereafter I made my way to more sophisticated compilers, assemblers, and somehow achieved something more resembling a practical skill with code.

    One of my early projects was to write a GM utility to help me run my Paradoxia RPG. Little did I know that it would stay with me for over 10 years!

    Although that thing remained entrenched, I moved on.


    Turbo Pascal. By the time high school rolled along, I was already hammering away in the Borland compilers like this one for fun and kicks. I once wrote a little utility that helped hack the school computer network (Novell) in Pascal. That was fun!


    Borland Turbo C++. This sparked the object-oriented epiphany. C++ would forevermore change the way I think about programming. The apparent potential of what could be expressed with the C++ language, combined with the abstractive power of object-oriented programming was captivating.

    Early thoughts in C++ gelled my programming hobby into a life-long pursuit.


    Windows


    Ah, the early generations of the Microsoft "Visual" development tools. Well do I remember the countless hours (sprawled out over, eventually, several years) spent writing in VB and C++. Client-server paradigm (shudder) reigned supreme. Thank god those days are past. What a headache.

    And yes, by now I had pretty much become an entrenched "Microsoft" (platform) developer, a distinction that would come into crisp focus with the later advent of Linux advocacy. Oh well. Its not that I particularly love Microsoft, its operating systems, development environments or overall platform. Thats just what I grew up with, became familiar with, and came to be good with. For quite some time, I never really had the knowledge of, access to, or time for anything remotely resembling Linux or Unix, so... on I went further into MS land. Having since become aware of Linux/Unix (and its whole paradigm), I can't say that I particularly vault Microsoft in comparison, but I saw nothing in Linux/Unix that won me over.


    Time wore on, and the Windows platform matured. I stayed with it, accumulating valuable ground-up experience along the way. Win32, Automation/ActiveX/COM, MFC, ATL, and so on...

    Windows CE / PocketPC

    When PocketPCs came out, I got my hands on one and started codin'.


    Internet/Intranet


    So along came the Internet in full-swing. Around the era of Internet Explorer 4.0 (along with Windows 98 and Windows NT 4.0) I became very interested in programming for the web. After all, the idea of web pages and internet sites was not that far different (in my mind) from the erstwhile era of Commodore 64 BBSs...

    Futzing with VB6 forms or C/C++ resource files was a serious pain, and here was a platform that promised far more agile GUI development/deployment. Along with that, client/server was broken at last, and distributed, N-tier apps became the norm.


    By the time the Windows 2000 fleet of operating systems and servers rolled out, I had reached a turning point in programming language/paradigm preference. C++ suddenly felt -- clunky. Old. VB was dead. COM/Automation/ATL/MFC, etc was --- a mess.

    Brief stint with Java
    Meanwhile in the world beyond Windows, Java had caught on for both client and server development. But while I was interested by the idea of a virtual machine, and the "write once, run anywhere" hype, a few months of hands-on experimentation with Java left me ... dissatisfied.

    Broken Loose
    There I was. Disliking the Microsoft VB/VC/COM developments, and finding no great gravity toward Java (after having concluded it was too cludgy as well), I still wanted a language and environment to program in. Something with ubiquity but without all the mess. To have fun in. So I turned to...


    JavaScript

    Perhaps for many in the technical audience, I fathom that listing JavaScript as a distinct stage of my programming journey would instantly discredit me even more than my apparent affinity for Windows platform development.

    Even non-technical folks are likely to respond poorly to JavaScript as a signifcant element of my programming experience. These folks, perhaps with a decent recognition of at least some of what has preceded this, might either scratch their heads asking "what's JavaScript?", finding themselves in disinterest, or instead curse aloud "bah! Javascript, that nasty evil Internet boogie-thing like, like ... cookies!", in this case falling victim to stereotyped misinformation.

    Even so, I shall proceed.

    (Yes, JavaScript)

    Java lacked. VB/VC sucked. (and .NET didn't yet exist). Still, I needed to play at something. So I turned to JavaScript. No, not just as it applies to DHTML programming. If you think thats all JavaScript is good for, think again. I accepted it as a language itself, and went from there.

    Of course, JavaScript doesn't have many things like, oh, say, true OOP semantics or a rich class library to draw upon. That didn't stop me. I wrote my own OOP-ish runtime, and upon that my own foundation class library. That out of the way, I began building things in JavaScript. Sure, some meant to run in a brower, but most had no such assumption. The browser was just a convenient GUI canvas, one among many.

    (So you might wonder by now: if I'm experienced with web development and JavaScript in particular, why is my site so ... ugly? First off, I call it simple, and simple has the virtue of working. Second, I'm lazy. )

    Anyhow, in the early 2000's, for the lack of an acceptable "real" language to play in, I turned to JavaScript. That lasted a good year or two, and although I've gone back to "real" (sort-of) languages, I never lost my affinity for JavaScipt in a pinch.


    .NET


    Here we are at more-or-less modern day. Starting with .NET 1.0 (Visual Studio .NET) and winding up at (presently) .NET 2.0 (Visual Studio 2005), and with Windows 2003 Server and Windows XP Professional, development on the Windows platform has changed radically. I can't say I like all of it, but since I'm being paid nowadays to write for it, it behooves me to play at it, as well. Even so, I'm not completely sold on the .NET way of things, so I still bank heavily into ... (yes) JavaScript for fun.

    As it turns out, my affinity for web technologies has paid off, as it seems that, more and more, the forthcoming Windows Vista operating system will have a development platform that is built on many of the same technologies -- markup languages and TCP/IP. We'll see.