Skip to content

2016

How I Got Started Programming

As I attempt to learn Python, I’m fascinated by how people are able to do this as well as how they started to learn to program.

I’m not the only one, as Ryan Gordon (aka Icculus), a well known game developer who ports many games to Linux and Mac, asked a similar question on Twitter last month.

This led to a lot of interesting tweets and Ryan created a Storify page to share them. Josh “Cheeseness” Bush wrote up a great analysis of those tweets sharing graphs looking at the languages, hardware and more about the people who replied used to get started with programming.

Even though I’m just starting to formally learn to code now, my story with computers is similar to a lot of those stories.

It all started in the early 80s when my father bought a Timex Sinclair TS1000 (aka ZX81) and then a TS1500.  You could load games via tape and also buy magazines with the code to program your own games.  I spent hours handtyping machine code to create games like Breakout.

A few years later my father bought an Apple //c and I then learned Logo, Basic and others.  Nothing that I ever really stuck with from a programming stand point, but enough to learn the basics and spend hours tinkering.

After that, my father bought a an IBM clone 286.  I remember being at Sears with him and telling him to spend the extra money to get a 386, but even a 286 was at least $2,000 back then.  I remember it ran GeOS for a graphical interface and one Christmas, after I received the original Wing Comannder as a gift, I had to buy MS-DOS 5 just so I could use the himem.sys to have enough memory to run the game.

From the Apple //c on, we always had a modem as well.  Starting with a 300 baud modem to a 1200 baud modem later, I started visiting BBSes on the Apple //c and later on the IBM clone as well.  (We had a Compuserve account early on, but hourly charges!  Ouch.) As a teenager I would go to meetups and actually meet the people I was interacting with on a BBS in a real life – something I’d do twenty years later when I got involved in open source and GNOME.

Using Linux for years and being involved with GNOME, taught me how to use a shell, basic XML with Docbook, and revision control with Git.  But now it’s time to learn a formal language and make my first program.

In many ways, I still consider myself an early adopter and if it weren’t having access to computers at a young age, both in home and in school, I’d be a much different person today.

Learning Python

(Orginally written in Day One on November 30th, 2015)

I’ve decided to learn Python.

Not only do I have an itch to scratch, but I need a hobby (as I’ve said many times over the last few years since leaving the open source world.)

Python is supposedly one of the easier languages to learn as a complete beginner. It also is supposed to be good at web scraping, which fulfills a specific need I have.

I started the Codeacademy class for Python last week over the Thanksgiving holiday. I was about 15% of the way through it and then got hung up on Boolean operators. Not only did I find them confusing, but I have an issue with the way Codeacademy structured that chapter. They basically had you copy and paste the code into their editor, which for me, didn’t teach me anything. When it came time to do the quiz, I was hopelessly lost. After swearing about that for a few hours and taking a break, my subconscious kicked in and started thinking about it. I then realized that the Boolean operators are going to be exactly what I need to define if a player’s pick is a unique choice in our pool and to double the points for that particular pick.

But I’m getting ahead of myself.

In 2013, my friend Stone and I resurrected MLBPool, with the creative name of MLBPool2. This was a baseball pool he had been in for ten years that came to an end in 2011. You pick which teams will win and lose their division, individual leaders in hitting and pitching categories and that’s it. You earn double points if your pick is unique and no one else chose that team or person for that category. You can change your picks at the All-Star break, but those changes are only worth half points. That’s it – no daily lineups like fantasy. I call it fantasy sports for the lazy. Which is perfect for me.

This year we also started an NFL version, which I’m managing. It’s identical except there is no changing your picks at the half way point. I manage the website for both at MLBPool2.com.

Every Tuesday morning I have to manually update the Google Sheet. The original MLBPool site was written in ASP and was doing web scraping to update the leaders. I have to believe there is a way to do that again and I’m hoping Python is the answer.

O’Reilly had a 60% sale over Black Friday, so I bought four books:

  • Introducing Python
  • Learning Python
  • Think Python
  • Python Pocket Reference

I’m all in.

The biggest challenge is that there are two versions of Python: 2.7 and 3.5. 2.7 is legacy and 3.x is the future. I even emailed an old friend that I haven’t talked to in a few years that I know uses Python. (I’m terrible about staying in contact with people, but that’s a different story for another day). My CentOS server on Digital Ocean runs 2.7, as does my Mac. He also recommended I start with 2.7. But of course the books are focused on the latest and greatest. I’m hoping I don’t get too confused and can write clean code that works in both, but we’ll see. Worst case scenario is I learn 3.x code from the books and have to upgrade the server, but we all know how that usually turns out…

I need a hobby. I’m hoping I can stick with this. Even writing in my journal isn’t something I’ve stuck with for as long as I’ve liked, but I have to give it a go. I’m hoping by the 2017 season I’ll have a beta that’s working, so I have a year and a half.

With the updates to Day One, maybe I should start a Python journal to document how it’s going. (Update: I have started a new journal in Day One called Python. I may even start blogging my adventures in Python on my personal blog or via DayOne.me).

January 6th, 2016: And, look! I even started blogging my adventures!

Welcome to 2016 and my quest to learn Python

* Dusts off the old blog *

This thing still on?  Still working?  I guess it is!  I could give you the usual excuses why I haven’t blogged much in the last few years.  The rise of Twitter, general laziness, etc.  But I might be back to blogging for a little bit.

I won’t call it a New Year’s resolution as I started it at Thanksgiving, but 2016 is the year I’m going to learn how to code.  Specifically, I’m going to learn Python.  I have an itch to scratch and a problem to solve and Python may be the solution.

I’ve worked with programmers both at my day job and various open source organizations, but I don’t know how to code.  I can manipulate a little HTML and XML (Docbook), but that doesn’t mean I could do it from scratch.

Just over a month ago on Thanksgiving weekend, I decided it was time to learn Python.  I bought a few books from O’Reilly that were on sale, started a Codecademy course, and away I went.

One reason that I may not blog as much, is that I do use a journal – Day One, specifically (and it’s fantastic, but that’s a different subject for another day) as I do enjoy writing.  At the same time I decided to start to learn to code, I started a new notebook in Day One (sshhh – it’s a secret new feature available to beta testers I’m not supposed to talk about…yet) to start detailing my journey into learning Python.

In the coming days, weeks, and hopefully, months I’ll be sharing those thoughts from my journal on trying to learn Python, including why, what’s working, not working and the tools I’m using.  Stay tuned for more as I begin my quest to learn Python.