The Python Preface
I live in a college town and sometimes I overhear college students
"I want to learn to program.
I have a feeling it's going to be important."
And in my head I go, "Going to be?" right before I realize they
haven't spent the same countless hours investigating the technologies
as I have. After all this time I've finally decided to sit down and
polish my insights into something useful for people. It's time to dust
off the notes I've had on my hard disk for years and make something to
help people make things.
It's an appetizing idea.
In fact, programming is sometimes compared to cooking. And as a nod to
Alton Brown it's only fair that I throw in some baking metaphors. But
more importantly the series should still be enjoyable to watch without
following all the recipes. Alton Brown always hit that nail on the
head for me. I've never cooked anything he recommended but I sure
enjoy learning about food chemistry from that guy.
I'd like to inspire others to take up the technology of code, not as a
whimsical impractical just-for-fun thing, but as a serious contender for
modern literacy. As an old computer science teacher once explained
the program is like a recipe a computer follows but instead of cake
output can take the form of anything. "Anything."
The sky is the limit.
So why do you want to learn to program? Has Hollywood convinced you
that you'll get to say great one liners as you make a last minute
rescue with some clever hack? No? Did you hear about the salaries and
crazy company buy outs that happen like apparent clockwork in the
present day technology sector? No? Did you happen to want to write a
That one gets a lot of people. Let's not forget the phone app writers
and website builders that jump in as well. To each their cup of tea,
I'd say. Regardless of why you started on your journey, know this, it
is a journey. In some cases, a rather long one. So, you best reflect
on the why for I can only do so much to shine your way. The motive and
the drive will be entirely up to you.
For perspective I'll share my own story of bit grinding my way through
the digital world. For it was at an early age when the thrill of
controlling technology first caught my eye.
As a little kid I would read books about computers and robots. I
walked into a book store one day to meet a book by Isaac Asimov at kid
eye height level. The book was Robot Visions the cover of which has
long since worn away from years of reading and re-reading. I'd read
all sorts of things about robots and wish I could build them, program
them, bring them to life.
I was given a toy computer made by VTECH called the PRECOMPUTER1000
and when you flipped the manual over it had all the information you
needed for learning to program in a language called BASIC. So I
learned to write programs. I was thrilled because up until that point
my experience with computers was nothing like I read in the books. All
the books were written for the days when computers did little more
than flash text at you. Typing commands was your main form of
interaction and there weren't any pretty windows or buttons to click
The family computer was slick and new and entirely wrong for a budding
child software developer for it hid the workings of the code behind a
veil of windows and graphical interface components. Sadly, I was
barred from accessing the programming layer I desperately wished for.
That's why the day I figured out I could program the toy computer was
one of the greatest moments in my boyhood life. I only wish I could
save the programs I wrote. Being a toy, it wasn't much for practical
work but I do have leftover notes full of programs written in my
elementary school handwriting.
Such was life.
My second big break was inheriting my brothers computer from college
that happened to have something called True Basic on it. Finally, I
could save and run my programs later! Only, I didn't have the manual
that was suppose to tell you all the functions you could use so all
summer long I'd guess at commands trying to get it to do more and
more. One day I figured out how to draw graphics and suddenly I was
dazzling the screen with seizure inducing rainbow storms. Still, I had
a splinter in my mind, whatever I was doing wasn't "real" programming. I
thought "Real" programming had something to do with windows and
graphical buttons and all manner of everything I didn't know about.
It was only later that I would find out about the rest of that stuff.
Not surprisingly, I majored in Computer Science in college. I was one
of the rarer kids that really knew what they wanted from week one. I
say a week because originally, I was a business major but quickly
changed over after deciding I'd have more control of things via the
computer science route. I didn't wait to learn everything I could
about computers. I taught myself most of what I know outside of class
and I'll credit my few successes today to the constant finding of
something to work on each night along my perpetual quest to grow
powers of control in the world.
The problem was that I wasn't exactly a patient guy for the majority
of the time. And I would often be more excited about the potential for
what I could do rather than actually doing it. I kept getting up out
of my seat and just walking around day dreaming about things. Over
time, I learned to put in the hard work and stick to the chair.
Luckily, it got easier as my life goals became clearer.
I didn't begin as the kind of guy that could pull off all the things I
always dreamt about but it sure feels like I'm getting there these
days. It's been a work in progress. And I'm finally ready to make much
more solid progress. Experience has a way of smoothing down the rough
parts of learning tech that often cut beginners. It used to take me a
week to compile a large software project. Now I'm confident enough to
knock things out in a night or perhaps 2. Over time I grew to
understand the machine better and as my control over the device grew
so did my devotion to the screen and keyboard for it is behind its
glass that my liberation lay.
What drives me now? What pushes me forward?
The quest for powers I suppose.
In my case, I've dreamt up big things I can not accomplish any other
way. So, despite the sacrifice, I spend the time finding out if my
metal can really be shaped into the right stuff to pull off tomorrow.
And that translates into long hours coding alone. Long hours learning
the minutia of the language and the technology that employs it.
In time, you may dream of big things as well. This is where the mind
expanding properties of python come in handy. This series will take
you through as many kinds of data manipulation as I can throw your
way. That entails everything from music to movies, REST calls to
robots and system level controls. The world will open to you in
ways you hadn't realized it ever could. The power of creation will
germinate within and perhaps a dream of your own brand new tomorrow.
You'll need educational stamina, patience and focus. You'll need to get
used to solving frustrating technical problems. And above all else you'll
need to believe that you can succeed. Stay with me and the black box before
you will be a little less black.