Things that go bump in the night

Oh my goodness, has it really been a month since my last post?

How did I spend my month?  Well, it’s summer you see and it was warm out side, and the motorcycle was calling, and…  I wish!  No, instead I’ve been code wrangling for the last month, largely dealing with issues associated with some ancient code that very few really deeply understand.  It’s like spelunking sometimes.  Going down into a deep dark cave.  It’s a thrill (so I’ve heard).  Never know if something in the darkness will devour you, but at the same time, the thrill of conquering the deep, unexplored.

When I was a wee little lad, I got a Commodore PET from my uncle.  Nope, not a kind of dog, but a kind of computer.  It was new to me, unknown, unfathomable.  I dove in, head first.  I learned BASIC, had a cassette tape ‘drive’, etc.  Then I dove into 6502 assembly.  Again, unknown, unknowable.  I was 14, and nothing was unlearnable.  Eventually I went off to college, and new unknown dark arts emerged.  The toggle switches on a PDP-10, punch cards, line printers, Soroc IQ 120 terminals, UNIX, Pascal (what’s the difference between a function and a procedure…), and eventually C, not to mention tons of chemistry, physics, electronic circuits, and ultimately yoga class.

One recurring theme throughout my life has been to embrace the great unknowns.  I once had a dream where I flew off a cliff in a car, and rather than panic as it plummeted down to a sure death, I grabbed the back of the seat, and stared at the uprushing ground and simply thought, “I wonder what comes next…”  that about sums up my approach to life and the various unknowns, both programming and otherwise.

In the past few years, I’ve embraced C#, Javascript, and Lua as programming languages.  C#, circa 1999 was a big new unknown, although it felt a lot like Java of that time.  I’ve literally written 10s of thousands of lines of C# code.  As far as languages go, it’s quite alright.  It works.  The biggest deal has been managed memory.  Compared to assembly and C, C# did great favors for me as a lazy programmer.  I no longer had to deal with memory management.  But then again, as a lazy programmer, not having to deal with memory management, I have had to be particularly mindful of how I allocated memory, lest the new unknown of “GC pressure”, killed off any productivity gains I might have been making.  Dealing with managed memory is so important that the latest release of the CLR has major improvements to the memory management system.  This is 12 years on from when the CLR first hit the scene.  How can such a low level esoteric piece of a system still be undergoing fundamental changes at this phase of its life?  Well, I guess it’s a good thing, it shows that people are actually trying to use the CLR in performant situations, and in particular, situations such as web based development where tons of ‘objects’ are created and discarded constantly.

A new unknown has shown up on the horizon in the past couple of years.  One big one has been the ‘node.js’ phenomenon.  Starting out as a simple enough little thing, node.js is seemingly taking http programming by storm.  Why is that?  Why isn’t the world still paying strict homage to the likes of Apache, and IIS?  Well, because you see, it’s a language thing, and a simplicity thing.  The language thing is JavaScript.  That language is just for the ‘browser’ isn’t it?  Well, turns out that if you have a sufficiently fast VM running JavaScript, it can serve just as well on the ‘server’ side of the equation as on the client.  And how cool is that?  Wouldn’t anyone want “one language to rule them all”?

Single language server side and client side is big.  Less to learn and maintain.  Javascript hails from that long line of “toy” programming languages that no self respecting he-man programming would find himself aligned with.  It’s for ‘script kiddies’ after all.  No serious programmer would admit to being a Javascript expert… would they?  And then there’s that whole JSON thing.  Turns out to be quite useful for information interchange.  Turns out to be easier/simpler/faster than XML at that job, and the kids just love it.

What’s the future of programming going to bring?  I don’t know.  But, I’m sure it will involve really simple programming models, which gain complexity through combination, not through single instance complexity.  There will be new languages, new algorithms, new challenges.  Programs will be thrown together in a matter of minutes, not hours, nor weeks, or months.  They will just as easily be discarded, replaced by the new needs of the moment.  Data will be program will be data.  The only thing for sure, is that there will always be new darkness to explore, and new adventurers to shed light in that darkness.



Leave a Reply

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

You are commenting using your 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 )

Google+ photo

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

Connecting to %s