When I was a kid, learning how to program wasn’t straight forward. I didn’t have anyone to guide me and there weren’t old programming manuals lying around my house; I had myself and the internet.
In 2001, quality, online programming tutorials weren’t so prevalent—after all, it was a new, unexplored medium. Educational tools like CodeAcademy didn’t exist. Neither did information depots like Stackoverflow. Open source code was mostly hidden away behind SourceForge’s unintelligible interface. The shelves with computer books were scantily-clad at the local Barnes & Noble and the books themselves were expensive. It paid to go far past page 2 in the Google results. Hell–it paid to try AltaVista or Yahoo, just in case.
Resources existed; they were just in fragmented chunks strewn about the web. The information was near my fingertips, but it certainly wasn’t at them—not like it is today. My generation is described as one of “digital natives.” I might’ve grown up with technology but I still had to cut my teeth to become useful with it. That’s where Broadcom and Internet Explorer come in. Those two things taught me to fly like a mother eagle does, coaxing it’s children out of the nest by withholding their food.
I was 12 or 13 when I first tried to install Linux. I remember because the next time I went to install it, my distro of choice had been renamed to Mandriva. After accidentally wiping out my entire HDD during the disk partitioning step (twice), I finally got it running. Everything worked! Except wireless internet – the most important thing
Linux drivers didn’t exist for the Broadcom chipset in my Sony PCG-GR250‘s wireless card. This wasn’t uncommon in those days. The only solution was NDISWrapper—a way to run Windows wireless drivers on Linux. After many (wired) days piecing together random bits of information and software from forum posts, outdated wiki guides, and driver download websites I got it working.
I learned that with enough persistence I could piece together any answer from the internet – even if the pieces were damaged.
I got serious about web development when I was 14. I remember this because it was just prior to Firefox’s 1.0 release. And by serious, I mean that I was creating my own websites using XHTML 1.0 Strict and CSS (like all the cool kids at the time.) Trying to be on the cutting edge like I was meant I loved CSS Zen Garden and A List Apart. It almost meant I was being continuously bitten by Microsoft’s outdated Internet Explorer 6.
There is nothing more difficult than searching for CSS layout bugs. First off, there are two groups of people asking for CSS help online— those who understand the box model and those who don’t. This made a huge difference in how a developer described their problem on personal blogs and forums such as codingforums and htmlforums. On top of that, describing layout problems is inherently ambiguous – a single root cause manifests itself in different ways depending on what the developer’s website looks like. Taking the persistence I learned from Broadcom, I eventually started finding my answers—and I picked up another skill along the way.
IE6 taught me how to pick the right queries to find solutions. It taught me how to think of all the possible ways to describe a problem—but more importantly, how to rank them in the order that would actually get me my answer the quickest. Even today, I cringe when I see the search terms people use.
I can’t remember exactly when I started programming.
It could’ve been on my dad’s old Tandy laptop – retyping a BASIC contact manager from the manual. It could’ve been on my grandpa’s HP desktop, when I wrote my first Guess the Number game (Binary Search) in C++. Or maybe it could’ve been on my Sony laptop, where I built my first horrifyingly vulnerable PHP/MySQL content management systems.
I can’t remember which of these came first.
But I know that without Broadcom and IE6 I could’ve never taken those early steps into programming and succeeded.