Seeking Efficiencies in My Life So I Can Be Professionally Ambitious AND a Great Daddy

by Mike Levin SEO & Datamaster, 02/13/2012

Adi Levin with StrawsThe trick is balancing all I have going on in my life, while still managing to be ambitious and productive at work. How can you be extremely ambitious while still walking out the door at 6:00 PM sharp, because you are also trying to be extremely involved? I LOVE my work. And I LOVE being a daddy. I don’t want to shortchange either.

Part of the answer is just getting those enormous and incorrect time-sinks out of my life. TV is the biggest culprit. The other biggest contributor was changing my commute from one that was wrought with traffic and road rage into one where I could sit down and think and read and write. Coinciding with my move to New York was the advent of the smartphone, which let me read and write anywhere without always carrying around a pile of books, notebook and pen.

Up until NYC, I was a single guy with plenty of surplus time—those times I was without girlfriend or totally consuming family-drama. The drama was pretty dramatic, and this let me / drove me to work late and long, and achieve beyond my innate abilities through brute force. I was inefficient all over the place, but was gradually learning life-lessons, and figuring out all the wrong ways to do things.

It turns out, programming was inevitably in my future, and a great approach to becoming efficient, since it’s all about automation. However, the wrong approach to programming can have exactly the opposite effect, and actually slow you down in a quagmire of re-training, keeping things running, and generally dealing with change. The idea for me turned out to be to using programming to supplement my job—and not AS my job. Working out the programming part of an efficient life is the 3rd leg (1st two being less TV and a better commute) to pulling it all off.

I am figuring out the formula to being a general all-purpose plumber of a tech-guy, so I can work quickly, expertly and efficiently—leaving all that time left over for my actual career ambitions and being a family man. That means forgetting Microsoft, because it’s not built on generic tech plumbing, and is a huge endless time-sink into a proprietary designed obsolescence of a dead-end.

For a slightly different reasons, this means not going down the Java or C++ path either, because being proficient and expert in either of those environments can’t be a supplement to your life—but rather must BE your life. So much of your brain must be invested into the conditions of having code run, rather than your original purpose. It’s like building an entire house so you can pee in the bathroom—a painful exercise when you really have to pee!

It took me until I was 40 to get the entire tech riddle worked out—and perhaps for the state of tech to catch up with where I needed to be. I impaled myself on technology after technology bound for obsolescence—Coleco Adam BASIC, Commodore Amiga AREXX, Microsoft VBScript. I learned tons along the way—but maybe most importantly all the criteria for my next major undertaking. I’m damn tired of losing my superpowers.

Just as importantly as the particular technologies are the people you surround yourself with. I probably didn’t have anything even in the ballpark of a technology mentor until I met Gerard Bucas, founder of Great Valley Products (GVP), peripherals for the Amiga computer. He took over one of the Commodore spin-off companies I went to work for after the mothership crashed. Gerard reinforced by belief that technology was really just a means to compel people to behave a certain way (I was already doing this) and introduced the notion of thinking beyond the tools that were conveniently in front of me to those that somehow inherently made your path easier towards the end-result you were trying to achieve.

Before mentors, I had nemesi. It was precisely like impaling myself on the wrong technologies, but with people. Specifically, at the same Commodore spin-off that Gerard took over was a sysadmin-from-hell who tried to control my actions and prevent the company’s financial recovery that I had architected—but eventually came to pass, anyway. To get to that end, I probably burned years on politics and learning how to steamroll and deal with intimidation. Never again. A key to working efficiently is to marginalize the assholes so that they can fade into obsolescence without having even the chance to try take you down with them.

This reminds me—as almost everything does—of something in Sun Tzu’s Art of War: first seek to become unassailable, then look for vulnerability in your opponents. For a technologist, this means to master technologies that are somehow fundamental and won’t be going away. I speak much of choosing things where habit and muscle-memory can kick in so that you can stop thinking, and start working efficiently. Due to how fast things change in tech, this is a unique and singular challenge.

My solution has been the choice of Unix/Linux as the foundation, but stripped away to nothing. A principle of computer security is that the less you have running in the way of services, the less security vulnerabilities there can even be, due to lack of what they call “surface area”. Well, this helps the learning process too, because once you strip everything away, there’s that much less to learn, see? And guess what? That helps with scaling your apps to global or enterprise scale too, because the smaller your system, the less memory and processor time it consumes, and the less costly it is to spin out thousands of instances around the world.

After you strip down Linux to its core, you also need to strip down languages to their core. I already eliminated the two obvious choices: Java and C++, due to the amount of overhead it adds to your life to achieve and maintain mastery. There are tons of other languages to consider and choose from, but in the end I choose Python, and a lot of other people (Rascal Micro, Raspberry Pi) who strip things down to the core but still want easy program-ability choose Python too.

One interesting thing I always lacked was the ability to preserve and maintain my momentum throughout my life in tech. Of course there was the set-backs of switching tech platforms, but there was also the loss of code, and with it, personal resource libraries and hard-won problem-solving techniques, which I later had to rebuild, losing time. There are tons of momentum-killers that you will solve in the choice of a good distributed revision control system, and the use of open source software in general. Combined with the stripped-down Linux we already talked about, this gives you the ability to slam out instances of your work on any hardware, from rack-mounted servers to the cloud, to micro-servers that can run in your pocket. Your work starts to flow like water, and pop up like whack-a-mole, taking on A LOT of the attributes extolled in Sun Tzu’s Art of War. In short: use git or Mercurial.

Next, and perhaps most significant and difficult-to-accomplish, and perhaps seemingly obsolete (but is not), is your choice of text editor. You will live in text. No matter how things change, this is a forever truism. No matter how far along voice recognition and natural user interfaces come, the computer will never know the nuances of your meaning enough to code new programs or configure systems without typing text—at least, until real artificial intelligence arrives… and I wouldn’t hold my breath for that. Further still, even though slick integrated developer environments (IDE) exist like Eclipse and VisualStudio, they are vulnerable to the winds of change. Long story short, I chose vim. Its granddaddy, vi, is part of the Unix standard, and vim is destined to go that same route, meaning it’s on nearly every system. Better-still, it’s as powerful as you need it to be, if you’re willing to go through one of the most bizarre and worthwhile learning curves in computers today.

The part that isn’t entirely clear from this discussion of taking up Linux, Python, Mercurial and vim is how they all gel together into a tight and powerful package, that is in great part impervious to obsolescence. Sure, all four of these tools will continue to evolve, and in some cases even stop being reverse-compatible (Python, in particular), but they will never ask you to retrain yourself as fully as the switch, say from Active Server Pages to ASP.NET. And put them all together, and you’re still under 50MB. That’s right: Linux + Python + Mercurial + vim—enough to base a career on—is all small enough to fit on your keychain USB drive a thousand-times over. Add the virtual computer emulator, QEMU (almost no additional file-size), and you have a virtual machine that you can run on any Mac, Windows or desktop Linux box you sit down at (no install), and pull up your entire running development environment.

It may all sound very techie, intimidating and unapproachable. But that adds the last piece to the puzzle actually. My mission is to make such a platform as warm and fuzzy as possible. It may not sound feasible to bring back the long-dead text interface to computers, a seemingly archaic text editor, a lesser-known language, and a non-git DRCS, but I’m giving myself time. I think if I start now, clarify my vision and goals of what I’m actually trying to do, I can package it up for worldwide consumption—turn it into a worthwhile purpose in life that can be packed up as a file that runs on any platform and spreads like a meme. If I align it perfectly to what I’m doing at the office as my day-job, and what I’m trying to do with my child in terms of world-domination caliber computer literacy, then I may even be able to do it all efficiently and cram it into the second half of my life.

Pshwew! I bet you didn’t think you were in for a blog post like that when you started out with such a simple opening about finding efficiencies in my life, so that I can be ambitious at work AND a great daddy. But here I am at 9:30 AM, having written this article beginning-to-end on my commute, and a little time at the office, while most people were cursing traffic.