As a software enthusiast I like to think we should strive not only for improvement but constant curiosity. Curiosity not only helps broaden our mind but also challenge potentially misplaced preconceptions. Preconceptions such as C# is the superior language, which it definitely is and if you think otherwise you are plain wrong. Today I will learn Python. I tend to avoid documenting myself on knowledge I deem unnecessary and the Python sitting there for the longest time. So why the change? Why bother now? Well, my interest in machine learning and papers about where it can take us has been growing lately. Not that I intend to fully move there and nerd the hell out of it but it looks useful enough to explore. Unfortunately, it seems Python is quite prominent in that domain and the trend keeps going.
My approach to learn a new language is, I believe, straightforward. First, find official resources to figure what the language is about. Then, setup my development environment and write some code usually through a tutorial. Eventually, write a small project that allows me to explore some of the language prominent frameworks. I may even find out about some interesting open source projects. While we’re on the open source, it can be the opportunity to learn more about that language by contributing to a project to further improve. So let’s just jump into it!
Googling Python or getting started post 2000s
Luckily enough, we live in an age where any knowledge we desire a few fingertips and taps away. I simply googled python and the first result was the language’s official website. From there, it took only seconds to land on a page with tutorial and code sample links. Also, from the main page I could access an interactive shell which is always useful when investigating issues.
From there I downloaded the latest Python 3 at the time of writing (3.7.3) and installed it on my dev/gaming PC with Windows 10. At the moment of installing I selected the option to have Python added to the PATH because I like using command line utilities. Plus I would rather the guys working on Python to do that rather then myself when future me needs it.
Once installed, I can simply type
py in a terminal window and poof, I’m in a python console. Then I went for the help utility pointing a link to a tutorial. Upon reading the first few pages I got bored and decided to take a break. Yes I am literally writing the post as I go the ending is not guaranteed but the title may change based on that. Though it won’t change for you reading this.
Forty-six days later…
So here we are, after a long break I am back on this. What happened since then. Well, I wrote another post, created a podcast had a bomb holiday and watched both Endgame and Far from home. Also I got more intense in my book reading, read both Patterns of entreprise application architecture along with the first edition of Refactoring. Right now I’m halfway through reading Domain-Driven Design: Tackling complexity blah blah blah. So many things took priority over learning Python. Turns out I didn’t care so much and put that aside, along with this post.
So, here we are. Back on my laptop, opening the editor for this post and trying to go through the tutorial again. I got bored again. As I am typing this I realize I have no need to learn Python. I wanted to play with a fancy piece of tech around the cool concept of machine learning. However, what would I do with it? What is the point of learning Python to do some machine learning? Doing a couple tutorials definitely won’t make me an expert. Neither in Python nor machine learning. Furthermore, it will not make me more aware about the concepts and possibilities behind machine learning.
Closing that chapter for now…
While interested in the possibility of dabbing in the machine learning space at some point in the future I would rather do it when I truly care. Out of curiosity I thought I would Google around to see if there was anything existing I could use right now. As it turns out there is that ML.NET framework Microsoft got out a couple years back. It does look like it does some machine learning stuff with technology I am already familiar with. I am able to either use pre-built models or make my own that I can generate the code for.
I thought about a couple ways I could use it in stuff I built like CoinzProfit. By the way, got a new version released last night on the App Store so go and check it out. As of now I am choosing to stick to my core development principles. Principles reinforced by the experience around writing this post. First, learn only stuff I that will help me solve tangible problems. Second, pick the technology to solve a problem not the opposite which ties into the first one. But more importantly, taking breaks is important to bring clarity to one’s mind.