Mike Levin SEO

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

What is a PythonPlug?

by Mike Levin SEO & Datamaster, 12/14/2011

I am going to teach you how to use cheap little under $100 mini-servers (a.k.a. PythonPlugs) as alternative to the cloud, on your way to achieving high-tech super-powers. You are not the master of your own fate unless you are also the master of your own hardware—not to say you shouldn’t use the cloud. I will in fact encourage you to use the cloud when it comes time to scaling out your app to thousands of instances. But you will be able to do all that better if you have a deeper understanding and appreciation of exactly what you’re scaling.

Perhaps even more important is the deep, personal satisfaction you get from setting up your own little army of mini-servers to carry out your bidding. You are exercising your personal freedoms and ability to have an impact on the world. You are the Sorcerer’s Apprentice, and the PythonPlug is your broom. In the spirit of MIT’s compsci intro course, Google and a new wave of Python-oriented devices hitting the market, such as Raspberry Pi and Rascal Micro, I lock right in on the Python programming language as the language for both education and serious undertakings. Python is simply a language the Apprentice can use to cast his or her spells, which I will use as a convenient way to package this site, and the particular approach I advocate to tackle programming and systems.

We want to have more understanding of, and mastery over those spells that we’re casting than the Sorcerer’s Apprentice did. To that end, I will be applying the following tenants to everything I do on this site, and encouraging you to do the same:

  1. FOCUS CORRECTLY: There is simply too much to learn, so we must focus in on the few things that make all the difference.
  2. GO FOR LONGEVITY: Tech is always changing and going obsolete, so we must focus on things providing the most value with the longest lifespan.
  3. MASTER A FEW LANGUAGES: Tech uses different languages than everyday life, and we must learn, practice and master just a small number of them. Yes, there’s Python, but we’re inevitably going to have to do a little Unix Shell (Bash) and Regular Expressions. We’ll keep the number of those to a minimum, so we can master each.
  4. FOLLOW ONE VIRTUOUS WAY: There are countless approaches to doing the above, and many of them are completely valid. However, this site will unabashedly focuses on the one particular way that I have chosen for myself: vim/Mercurial for code writing, Linux/Python for code execution, and the cloud/PythonPlugs as the host.

Life is full of choices, and having so many choices causes anxiety, paralysis, and is often the reason we end up not doing things. As it turns out, there are usually 4 or 5 right solutions to any problem, and identifying one to quickly solve the problem is usually more beneficial than deliberating and paining over the optimal solution. You just have to make sure that your solution is not encumbered with some fatal flaw that will kill you down the road—as mine was in choosing AmigaOS until it went away, and later Active Server Pages until it went away—when I could have been doing Unix and then LAMP, neither of which went away.

That being said, this entire site is dedicated to teaching you merely one of a dozen possible solutions to the following—how to become a casual developer with enough abilities to pursue your dreams, without being excessively dependent on others, and without having your entire knowledge and know-how become obsolete every 5 or 10 years. Sure, we all have to keep learning, but it should be possible to master certain timeless technology standards, and those standards have undeniably emerged as the combined Unix/Linux platform. That will free up tons of your time to pursue your other real passions, for which you simply need programming skills to express.

Everything besides Unix or Linux in what’s called “the programming stack” is up in the air—riddled with personal preferences, and subtle advantages and disadvantages for certain situations. Languages like LISP can do anything, but that is precisely also one of its biggest problems. Webservers like Apache help building websites, but they have a page-serving bias, become bloated, and get in the way of websites working more like web apps—so, let’s just leave out Apache, and anything else that might leave us high and dry. I am advocating here a very short stack, indeed: Linux/Python, as far as an execution environment. But you still have to code, so Mercurial/vim as well. And on occasion, you will need to do the impossible, so I include ANSI-C for optimizing your Python code.

In the end, I could have called this website and endeavor just about anything. But I want it to be always hanging over you that there is a certain physical device that you should master. It is the broom of the Sorcerer’s Apprentice, and you should own a few. Alternatively, you could re-purpose an old PC or laptop, but the money it would take to keep it running 24/7 in your house is more than the price of a micro-server these days—as low as $25, thanks to Raspberry Pi. Even Raspberry Pi, which is just a piece of hardware managed to get Pi (for Python) into it’s name. Everyone feels it coming. Python is somehow just right.

I tried out a number of beginner-friendly free and open source programming languages, such as Ruby and PHP. Years earlier, I had already made failed attempts to re-position myself, perhaps for the better in hindsight, onto Java and VB.NET. At the time I decided it had to be JavaScript because it was unavoidable in the browser, I tried Helma on the server (before node.js), and of course attempted C++ throughout my career. The precise reasons why Python stuck over all the others will be the subtext of many a future article.