Mike Levin SEO

Future-proof your technology-skills with Linux, Python, vim & git... and me!

The Thin-Line Between Thinking and Doing in the Information Age

by Mike Levin SEO & Datamaster, 02/23/2010

There is a thin-line between thinking and actually doing in the information age. What’s the difference between sitting and tapping away at a keyboard to do free-form writing (as I’m doing now) and sitting and tapping at a keyboard to set up a new server and launch a new business? The answer is in the details. The physical actions are greatly the same, but the end results are dramatically different.

It’s all a matter of the endeavors that you choose, and the languages you choose to pursue those endeavors. Programming business systems and websites isn’t as different as playing adventure games as you might imagine. Both are riddled with goal-seeking and level achieving, that feed that same basic human need of going somewhere and doing something that advances your life forward in some meaningful way.

This highlights how a 10-year old who has mastered typing possesses the same physical abilities as many entrepreneurs, and the difference is all in the head. And this probably explains why an increasing number of young people are in fact becoming entrepreneurs. The information age is a great equalizer, across both geographic and age divides, lowering obstacles and re-defining the rights of passage.

But the quality of the choices matter. Observations and insight matter. Experience matters. In other words, precisely what you’re typing, and why matters. That typing is a manifestation of who you are as surely as your actions in the real-world. You can’t get much more out of your typing than what you put into yourself. It’s just that magical and other-worldly capabilities exist in that screen, and you can invoke them out with just the right incantations.

Now the language of those incantations can vary widely, and the resulting effect back on the real world can vary wildly. You might be an inventor testing your designs in prototyping software, on the verge of changing the world with a life-saving gadget. Or you might be slaying dragons in some imaginary world, with the most you can hope for is someone on the other side cheering or cursing you.

That’s not to say I don’t think social interaction, competition, and hand-eye coordination is worthless–but wouldn’t you rather be the one creating the game, getting the artistic satisfaction, and making a fortune off of it? And creating a life-saving device is better still. Yes, there is an objective morality and quantifiable value to how we spend our time. If not, surely all is lost. Sure, it takes kinds, and there’s nothing wrong with the social pyramid continuing to exist. But what kind of citizen do you want to be? Alpha or Epsilon? What kind would your 6-year-old self want to be?

I’d go as far as to say that there are really only five distinct careers in humanity’s future: Scientist, Inventor, Artist, Trouble-shooter and Police. In other words, those who push the boundaries unravelling the mysteries of all that is, those who put that knowledge to use with life-improving devices, those who keep that equipment working properly, and those who prevent it’s potentially devastating abuse. We are in the very early stages of such a reality, but I’m pretty sure that events have been set in motion with the Internet. We still need mesh-networking, effectively uncrackable encryption, and habeas corpus to safe-guard that future. I try to remain positive.

As time moves on, the thin-line between thinking and doing will become clearer to more and more people. And then, there will be increasing competition over the easy-pickings opportunity that exists. But today, we are at a point where the underlying information-delivery platform isn’t even settled. It appears that it’s gradually shaping up to be the Web browser, with societally enforced standards. Innovators are regularly still doing stuff on this platform for the first time.

One of the biggest obstacles to turn the thinking into doing is the particular dialect of incantations you choose, and how early or late that occurs. And this obstacle is made even harder, because if you choose the wrong language early, and don’t become multi-lingual, then you have to live with the limitations of that dialect until such time as you go through the increasingly difficult chore of becoming multi-lingual.

There is a huge battle going on today to shut you into closed, proprietary languages that fundamentally tie you to a technology platform, and a particular vision of the future. .NET or Java? Even if you go the non-proprietary route, there are unlimited decisions to be made, each with their relative upsides and downsides. C++? Python? Lisp?

But no matter the language, what you articulate with it is an expression of your own thoughts and being. And each language has it’s own “personality” just like real spoken languages. Some languages lack the words for expressing certain ideas, while other languages excel at precisely those expressions. Such is the difference between the hard-hitting, pragmatic C++, and the loopty-loop self-describing, self-modifying LISP language. Personally, I like neither, preferring to live somewhere in the middle with Python.

Once you put those 10,000 hours into programming in a language, you tend to get that all-important spontaneous expertise that lets the language fade into the background, freeing you to focus more on expressing ideas. And with languages like those (as opposed to spoken languages like English), you can articulate world-changing ideas.

Ooop… one more thought! Am I saying that being a user of computer programming languages is somehow better than being a user of computer software, like CAD/CAM? Well no, not really. Because in the end, computer programming languages are no different than computer software packages. They are all higher-level abstractions that make you dependent on the underlying components. I would challenge those who argue otherwise to burn their computers from sand.

But what I am doing is laying the foundation for ideas I will be posting here in not long, regarding the selection of tools with a sort of 20-year future-proof range in mind. Tools (a language is a tool) change rapidly. Fashions, trends and styles plague computer languages just as they do every other form of human expression. But it’s worse in proprietary closed systems, which tend to force you into an inescapable, and increasingly insidious upgrade cycle.

Free (as in beer) open source languages tend to be motivated by a more altruistic attitude. How many Visual Basic 6 and Active Server Pages developers are kicking themselves today for their short-sightedness? PHP developers are a bit better off. But the real power exists… well… nowhere ideal just yet. Sigh…

I’d love the unbridled hardware-hitting, performance-tweaking power of C++. But I’m unwilling to re-wire my brain. I’d love the unexpected competitive advantages yielded by LISP, but I’m tired of being in the fringes. I’m choosing Python for now, with some hopes on the new Google / Ken Thompson (inventor of Unix) system language, Go. Unix has proved to be pretty time-less. So perhaps might Go. With that thinking, I should be on C++. But read about Go, and you will see why it’s appealing.

That brings up another point, which I think I’ll wind down on, because it’s just too big for this post. Google hired the inventor of Python–Guido van Rossum. Google hired the inventor of Unix–Ken Thompson. While Google is clearly protecting it’s own future by doing this, it casts a proprietary cloud of over some very free-as-in-beer technologies. Thanks to endeavors GNU and Creative Commons licenses, along with the likes if Linux, much code simply being out in the wild, there are some safe-guards. Google uses open source as disruptive technologies, corroding away the foundations of competitors. Once those proprietary pillars of support are worn out from under yesterday’s technology platforms, whose to say the open source well won’t dry up.

Anyway, staying relevant and professionally viable in exactly this environment is where a lot of my attention goes. It has let me to such choices as Debian/Unbuntu Linux as my primary development platform. It makes me test out my work on non-Intel processors, like the ARM in the Marvell SheevaPlug. It makes me choose VI (specifically, VIM) as my text-editor and IDE. It makes me learn Regular Expression Matching, and other languages that appear as a recurring theme in all other languages. Well, you get the idea.

Right now, there is simply “the best we can get” in terms of natural languages that let us express ourselves in technical matters, while still being powerful. It’s a sort-of multi-dialect schism going on right now, with lots of moving targets. There’s a server-side and a client-side (the web browser). On each side, there’s a set of languages and environments you must know.

I’ve sorted my way through these decisions recently, arriving at something I’m quite happy with, and am currently engaged in those 10,000 hours of experience (on each) to achieve that spontaneous expertise. Much of MikeLev.in will be dedicated to explaining and helping you make these choices, so that the thin-line between thinking and doing remains as thin as possible.