The Importance of Environment

If there were a device that was able to measure the annoyance of those around me, from the reading you’d probably be able to tell that I’m learning to code. Up until recently I’ve had very little success with making things stick, because I wasn’t working the way programmers worked. Very few people become great musician without using the right tools and observing effective practices, and the same goes for any cerebral skill.

Some Background

I’ve done IT work in some form for 13 years, and I often think: if I spent 13 years honing some coding skills, I’d be one bad dude. Here’s the funny thing; for most of that 13 years I romanticized coding. Frequently when I was working on a difficult problem, I would say “Man, if there was a program to do X, this project would be so much easier!” Being a programmer would have set my apart in my job, and I probably could have commercialized a lot of those solutions. Alas, most of that 13 years was without a single line of code written. Wait, most of that 13 years? That’s right, enter:

BATCH.

If you’re not familiar with batch, it’s a scripting language built into windows. I stumbled upon batch not out of frustration, but in curiosity. My first program did one thing; open the calculator (repeatedly.) When I delivered this file (via floppy) to friends computers, I got to watch as their screen spawned with calc windows, and I cackled as thunder resonated in the background.

Unfortunately for my malicious intentions, one of two things would happen, either they would close the batch file, or explorer would crash, effectively closing the batch file. Through several stages of refactoring, my script got up to a lofty TWO functions, first copying itself to their hard drive, then copying itself to another file which opened itself (so that closing any one file didn’t stop the onslaught of GOTO loops.)

As is apparent by now, I spent many hours as a youth thinking of ways to give back to society.

A New Hope

My magnum opus BATCH file opportunity presented itself during the time I was working with voice recorders. All voice files are written to DVD for backup, and older versions of the software didn’t have a mass import function, you had to bring files individually. Someone not very smart (probably me) had a GREAT idea (not great) to put the dvd in, move *.wav to the incoming folder, and the system would process them like new calls! This was a FANTASTICALLY, HEART-STOPPINGLY, SOUL-CRUSHINGLY poor choice, since each audio file had a corresponding metadata file with the same name. Also notice that I said MOVE, and not COPY, so now I have a stack of dvd’s with .dat files in nested folders, and a bucket of .wav files.

My options were to look through each folder, find the .dat file, match it to the .wav file with the same name, and copy the .wav file back into the correct folder – Or I could write a batch file! And write one I did, when all was said and done I had a highly optimized 3 line script that ran for 12 days, all to really bail me out of the problem I caused int he first place.

Not Rocket Science, but it was Real Programming.

Why is it that my early attempts to learn Python, then later Ruby failed so horribly? Had I not just expressed a modicum of aptitude and interest?

I hate to say it, but it was windows. Just as all the great guitarists use similar guitars and practice for many hours a day, great developers are on OSX or Linux (and practice for many hours a day. At the time about 5% of all Ruby gems work properly on windows, and I just plain didn’t get what Python was getting on about.

I was successful with batch because it was built-in! No compiling, just a .bat extension. The functions? Mostly dos commands, and there wasn’t much of them, 15 commands at my count: http://www.computerhope.com/batch.htm (the actual site I used.)

Since I’ve been using Ubuntu, my Python progress has exploded. I’ll be I’d be a Ruby guy if I didn’t try to learn it on windows first, because setting up git took me 3 months on windows, and takes about 14 seconds on Ubuntu. Also, since this is the environment that other developers are using, I understand the mindset much better now. Frankly, Ubuntu is not completely foreign, but there are some subtle differences that I now ‘get.’

Plus ipython, come on guys.

In Conclusion…

If you’re looking to learn one of these cool languages and you’re a window user like I am (still), you MUST start using Ubuntu. Please, do not proceed to learn a language on Windows, because you don’t know what you’re doing, and every step you have to translate between what to do AND how to do it. It’s easier than ever, you don’t even have to mess with all that dualbooting jazz anymore, Ubuntu has a nice little distro that installs like a program and can be managed in add/remove programs (Ubuntu has cooler ways to manage programs than this! Seriously guys!!)

If you want to shred on guitar, buy an Ibanez. If you want to learn Italian, go to Italy; if you want to learn python, use Ubuntu.

This entry was posted in Programming and tagged , . Bookmark the permalink.

2 Responses to The Importance of Environment

  1. I almost busted a gut reading this. The calculator bomb is classic.

    As for the recommendation about programming, let me lend some countervailing perspective:

    For six years, from late highschool through my early twenties, I was both an exclusive Linux user AND an exclusive Ibanez player. At one point, I founded and ran an open source software project by night, and worked on Paganini’s Fifth Caprice in A minor… also by night. And for the longest time, my perspective mirrored yours.

    I can’t tell you exactly when, but that perspective has considerably shifted. These days, I think the tools on most every platform are perfectly fine. The biggest variance is the people and the culture. If any one variable is going to dictate your platform choice, I would recommend culture.

    Put differently: whether you want to shred on a Stratocaster or an Ibanez has less to do with the guitar and more to do with whether you consider Stevie Ray Vaughn or Steve Vai your guitar idol.

    POW! ANALOGIES!

    • Awesome, glad this was entertaining, was mildly terrified of trying a more narrative post! I agree with you about 95%, and I hope I didn’t make the point that windows is garbage and not to be used…. just very, very difficult to develop rails or django apps on it.

      However, for the remaining 5% (while keeping to our lovely analogies,) have you ever tried to shred on a Les Paul? They’re heavy, necks like baseball bats, and IMHO they’re purposely designed not to be ergonomic, such as you find a sharp edge where your arm should go. The point I’m trying to make here is that above immersing yourself in the culture of whatever language you want to use, there are some tangible advantages and disadvantages with the tools you’re using. Rails is MVC to the core, Django has an admin toolset built in, and .NET has…. well, I hope it has something :).

      So I’m sure windows is perfectly suited to write .NET code, and I’ll be you can do everything with that .NET code that you could in any other language, but damnit if it’s not impossible to write .NET code on linux.

      (circling back one more time, while the Les Paul is not very shredable, their heftyness make them reliable as hell — I always brought a Les Paul on tour as a backup.)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s