Decision Time & Machine Learning

It’s decision time. I have spent the past 6 months or so learning the Python. Other than some messing around on my Commodore 64 when I was a teen, I started this journey with zero knowledge about coding. A variety of background factors had driving me to the point in my life where significant changes were required and, after some initial doubt as to whether or not it was a feasible choice for me, I landed on coding as a means of bringing about the required change.

The landscape has changed beyond all recognition since the last time I undertook serious study back in the nineties. The amount of information now available to the potential student can be overwhelming and demands a higher degree of focus than I had previously had to muster. So many coding blogs, with so many links to other coding blogs. So many YouTube videos with an ever-distracting plethora of comments to get lost in and related videos suggested. So many online courses on so many online learning platforms.

Even when trying to decide on something as simple as a book, where you might think you can escape the noise, you face the same issue of being presented with recommended books that others bought book-bundles that might appeal as well as upsells at the checkout.

The Paradox of Choice

Suffice it to say, it takes an iron will to navigate this landscape without pouring hours of precious time down the drain. It’s something that I am still working on and adjusting to in my efforts to reach my Python-related goals and regularly reminds me of the paradox of choice in modern society.

So, to even reach the first step of deciding on what language to learn was small struggle. Being frank, the decision was based in part on the fact that Python is considered one of the easier languages to learn and a good place to start coding as a springboard to other languages. Beyond that, I wanted to learn a language that can be used in a variety of applications and it turns out that, as a general purpose language, Python can be used in all sorts of ways. Game development, web development and apps, web-scraping, pen-testing, data analysis, machine learning / AI etc. etc. It’s used by tech-giants like Google, Facebook, Dropbox and a long list of others. There’s also an active, friendly and supportive community there to help foster the talent.

Now, I am sure that most of the same can be said of other languages, but ultimately, Python was were I settled. Having reached that point, (just like all other Python neophytes) I was again faced with the paradox of choice and an overwhelming amount of options. Where to start? Which direction to take? Which YouTube channel(s) to subscribe to? Should I bother to sign up to email lists and which ones are worth the time? Where to spend hard-earned cash on books and/or courses. Nowadays, of course, even selecting a book requires a second choice of whether to invest in the digital or physical format.

Initial Resources

After much deliberation and improving my ability to reduce noise and focus on what matters, I bought the kindle version of Eric Mattes’ fine text book Python Crash Course and diligently worked my way through it, absorbing and retaining as much as I could. On completing the book, two things struck me:

  1. It’s an excellent introductory resource and gave me a solid base to build on.
  2. The Kindle format may be great for the latest page-turner, but IMHO it’s a poor substitute for the physical text book.

Another thing that became clear to me was that, in the world of computer programming, it’s all about using code to solve problems. This lead me to a point where I was very keen on developing problem solving skills. Codewars offered me a free and goal orientated means of getting better at writing code with the specific intention of solving a problem. Here’s my current ranking:

Codewars Ranking

Given that my ultimate goal in learning to code is to gain employment using my Python skillset, it became clear that a high ranking on Codewars would not be enough. The internet reliably informed me that I needed to be able to demonstrate my skills with a coding project. That way, potential employers would be able to deduce whether I would be worth employing or not.

Having spent time online (blogs, YouTube) looking at potential projects, I came to the conclusion that I needed to upskill if I were to be able to code up something unique and not just copy and paste an existing project. After short deliberation, I decided on Ardit Sulce’s course on Udemy, as the focus was on putting together a variety of real world applications. Turned out that it was an excellent resource and delivered exactly what I needed – information that I could use in putting together my own project.

Decision Time

In my initial post on this blog, I provided details on my first project Fan Fun – a ‘fun’ quiz program that combines several Python libraries – web scraping with BeautifulSoup & Requests, GUI with TKinter, text to speech with pyttsx. I had a lot of fun putting it together and learned that, no matter where you are in the sphere of programming excellence, just start. Make a start, put a project together and learn as you go. Otherwise, you’ll never make the jump.

Which brings me to the point of this whole post – decision time. Essentially, I reached a point where I needed to decide where specifically to focus my attention with Python. When I completed Fan Fun, there was a sense of “OK, what now?”. I felt that I could put together another project as proof of competency, but whatever I did next needed greater intention behind it. I needed to decide where I wanted to go with Python.

From the outset, Machine Learning and AI had appealed to me. The more I looked into it and the requirements needed to become a successful machine learning engineer, the more it appealed. I had looked into other options, but there was no spark there. Nothing that left me feeling as excited as the concept of AI. Machine Learning is something that’s been with us for a few decades already, but with the onset of greater computing power, lower software/hardware costs, IoT, Big Data etc, it’s becoming more and more a part of life and will most certainly continue to be so. And that’s something I want to be part of.

And that’s where my journey so has brought me. I have decided to focus on developing the skills needed in data analysis and machine learning. It’s not going to be easy, but then nothing worthwhile ever is. My journey started last month when I invested in Daniel Bourke’s excellent course on Udemy.

I have also invested in physical text books that will help develop a robust understanding of data analysis and machine learning:

  • Python For Data Analysis by Wes Mckinney
  • Grokking Deep Learning by Andrew Trask
  • Competing in the Age of AI by Marco Iansiti & Karim Lakhani

Machine Learning and Future Posts

Going forward, I expect to be posting about projects relating to processing data with MatPlotLib, Pandas and Numpy, getting comforatable with SciKitLearn’s ‘out-of-the-box’ estimators and, in the not too distant future, things like deep learning, neural networks and TensorFlow. I also expect to be paying close attention to Daniel Bourke’s blog and to ensure the continued consumption of quality content on machine learning and AI.

Something tells me that this is just the beginning…