Mike Levin SEO

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

Found The Love in HTML5… Finally!

by Mike Levin SEO & Datamaster, 12/10/2013

Note: This is an daily work journal entry extracted from a new DVCS on a new project.

Wow, I’m liking my current project, finally. I often feel that the thing you’re working on RIGHT NOW must be as interesting as anything else going on in your life, or else distraction or paralysis will seize you. The “interest-pressures” applied to you will either pull you AWAY from your work because the more interesting thing is just one click away on the Internet - or you will be PUSHED away from your work because making meaningful progress on the work before you seems like an insurmountable task, like standing at the base of a mountain looking up demoralized that you’ll never be able to climb it, so why start - hence, paralysis. This project has entered that place where the 1, 2, 3 step procedure (where you’re REALLY always on step #1) is actually working.

Snowy Day

It’s snowing this morning, coming down in torrents out the window on the type of day I would have automatically wanted to work from home in the recent past, to make sure I have the opportunity to enjoy the opportunity with my now 3 year-old girl. And I do have pangs of remorse missing it today, but what will my home happiness be if I stumble and fall professionally, botching this project that has tight time-lines and high expectations by executive stakeholders? So quite the opposite of what I would have normally done, I actually decided to come into work even earlier, and indeed I got my daily work journal underway before 9:00 AM. Only one co-worker is here, as he always is - a Soviet Jew from the Ukraine. Got to talk to him more!

Anyway, this is one of those daily journal entries that really characterized my old journal before I moved Tiger over to the company git repository, which diverged pretty significantly from the work-at-hand. It’s the forest/trees issue. My value as a developer - and often, a one-man-show - comes from my ability to see the forest, and rapidly zoom down to the trees and deal with the details. I can also communicate well and am safe to put in front of clients who consistently love me and my ability to make the difficult-to-understand easy. This is a big part of what made me so effective in the field of search engine optimization (SEO). but the world is changing, and I must change with it.

As evidence of this change, I offer the fact that I’m making a journal entry like this in the code-base I’m maintaining now on the company git repository. I was able to do this within days (okay, maybe weeks) of the company modernizing it’s source code management (SCM) to a modern distributed version control system (DVCS). I was on Mercurial (hg) and the company (and the world) chose git, but they’re nearly command-compatible, so the move-over was instantaneous for me. I’m keeping this journal by typing into the vim text-editor that dates back to the rise of the pre-Internet (not the Web, but the Unix OS and networking protocols it’s built-on). This stuff is what you call “core” and I’m positioning myself for a resurgence of all-things-core… because everything BUT core is (and will continue to be) in such radical flux…

…except HTML5, CSS3, JavaScript and the Web Browser and it’s document object model (DOM) as the grand unified user-interface platform. The way people interact with modern revision control is evidence of BOTH SIDES of this argument. git itself is most effectively used as a developer from the command-line. One should familiarize themselves with how to commit and push code using shell commands like: git commit -m “Solved problem [such-and-such]”, but to effectively use it as a community, the conveniences of “git live” the github open source clone website is absolutely necessary. I would go as far as to say no matter how brilliant and core git became in such a short time, it’s massive acceptance was really fueled by the github website, with it’s user-friendly graphic interface.

I am very sensitive to things “moving into core”, for those are the things I want to take up and become expert in. The Unix/Linux command-set, especially particular portions of it like ssh, scp, ls, cd, find, grep, chmod and a bunch of others that let you configure servers, are the first choice. All the tools that always have been around and always will be around are part of this. No matter how much operating system application developers want to strip away from their platforms, if it has a C-compiler written for it, then a Unix-like environment is one Busybox compile away. Even Android phones which are only kinda-sorta Linux become very Unix-like by dropping in a single program (Busybox), and all that “core” ability surrounding the Unix command set becomes incredibly, super-useful. Most of the “embedded computer” world works this way.

Okay, so I’ll reign this article in and get to REAL work, but I’ll wrap it up quickly by saying the other decisions surrounding what’s “core” and what you should become expert at for the long-run and timeless value in the tech world become increasingly controversial and subjective. However, I’ve made my choices. I’ve chosen vim as my text editor, and git as my version control system. These both are rapidly entering “core” in most hardcore developer’s minds. They have a certain irresistible momentum to them. I choose Python as my “core” programming language because even though ANSI-standard C is the only true choice for a core programming language, it’s too hard for daily, rapid work, and Python is the second-best for reasons I expand upon plenty in other articles.

And finally, there’s user interfaces. There’s executing code on a platform that will be in people’s hands by the billions pretty soon - and that won’t be Python. The platform-in-motion currently lumped under the blanket-term HTML5, that is today passing through the zones of happy-accident through necessary evil through flashy fad and into meaningful trend. And while not ideal, neither is ANSI-C nor was Assembler before it. And just the same way that today no one touches Assembler and hardly anyone touches old-fashioned C, many use it’s direct derivatives: C++, Objective C, C#, Java and everything else deigned to take the rough edges off C.

So it will be (and already is) with JavaScript. JQuery and prototype.js were early attempts to make JavaScript more usable and compatible across different web browsers. This trend will just continue and formalize, until knowing (something like) today’s JavaScript will be the equivalent of knowing ANSI-C - not truly necessary, but still infinitely useful when you want to travel down through that simplifying thunking-layer that makes all applications easier-to-write but also more similar to each other and undifferentiated. So, the value is not in mastering JavaScript itself in its current form - nor is it in mastering any particular library. Instead, the value is in understanding all the underlying principles and mental constructs that go into the JavaScript code execution environments IN GENERAL.

And THAT’S why I’m finding love in this project. It’s not like ECMAScript that the Netscape happy-accident of JavaScript was based on was designed to be a bad language. It was designed to be good for what it was designed-for. Just like the TCL programming-language was made for automated process-control of machines, ECMAScript was designed to control devices that were represented by object-models - which in the case of web browsers is the DOM. So, instead of balking against yet another programming language, and lamenting that I didn’t wait longer to do Tiger until node.js existed, I will embrace JavaScript for precisely what it is, and just add it as another well-known and well-used tools on my figurative Swiss Army knife of tech.

And it’s only 9:40 AM… and onto my work for the day!