Tweaking the path
Reviewing my progress so far, I have come to the conclusion that I need to be more focused in terms of what I’m studying. Language-wise, I’ve worked with C, C++, Python and Haskell. This has been overwhelming because I think more progress could have been made if I had narrowed my pursuits considerably. Consequently, I have chosen to focus on Python as my main programming language with Haskell as a side language.
Gaining mastery over one language before tackling others will help considerably when it efficiently expanding my tool set especially since I’ll have a reliable model with regards to imperative, object-oriented and functional paradigms. My technical aids in this endeavour is mainly Learning Python by Mark Lutz. For a real world application perspective, Programming Python (by the same author) seems quite intriguing.
Project wise, I completed the data visualisation tutorial (Data visualisation tutorial code). I’m now working on understanding how to use APIs courtesy of http://newcoder.io/api/.
Today, I I started the data visualization beginner project on newcoder.io. I completed the setup necessary for the tutorials by getting pip (python install python) and getting started with python virtual environments courtesy of virtualenv. I really like being able to have an isolated development space where I can install packages without worrying about potential conflicts.
In terms of the tutorial, I finished coding up the parse section which means that from a CSV file, I can obtain a JSON-like object which is more amenable to manipulation within python. My plan is to complete each of the five tutorials before making my own projects based on what I’ve learned.
C/C++ and Haskell
With regards to my learning explorations in C, I am exploring an implementation of a linked list using pointers. With C++, I am progressing steadily through Programming principles and practice using C++ by Bjarne Stroustrup. I enjoy the fact that it reflects on the role that technology in society. One of the questions posed was ‘How many human activities can you think of which don’t involve a computational device either directly or indirectly?’. After pondering for a while, I was astounded by how embedded (haha) computers were in daily life. Sure, there are those without access to any devices but where access is available, even simple things like going for a walk involve trainers which were designed/manufactured in part using computers!
With Haskell, my main learning resource is Haskell: The craft of functional programming which I’m using to build a foundation before working through CS194: Introduction to Haskell according to the extremely learning path suggested here.
I am frankly irritated by the current state of my knowledge and by my lack of action. However, my philosophy has been affected by:
Whilst I am still reflecting on the wisdom of these treasures, I have decided to be realistic in the portrayal of this adventure. There is no point in waiting for substantial learning progress or for the grand post idea. Like developing software, learning is an actively iterative process. There are ups and there are downs, all of which are instrumental. Instead of focusing on the final product or destination, I will tinker, make and break. Perfection is impossible so I’ll just keep doing because excellence is achievable 😀
A wise man once said, “A journey of a thousand miles begins with a single step”. Those who savour insightful quotes will recognise the words of Lao Tzu. This is the first (somewhat public) step for me I feel should have taken been taken sooner…but I digress. That’s a story for another day.
I am on an adventure. This medium shall serve as my journal of the challenges I face, the opportunities I seize and the mistakes I look forward to making. I am doing this for me. If my words bring insight to even a single person, I will count it as a blessing.
At this period in my life, I am focused on a transformative learning endeavour which I’ve named The Ghost Protocol. Unlike the movie with a similar moniker, I will make my learning mission a reality.
The difficulty of this journey is staggering yet I believe surmountable. For too long, I have run away from greatness and squandered my time. No longer. This is my stake in the ground. No being, force or stroke of fate shall stop me. How do I know? It’s abecedarian really. I am my greatest enemy, the most frustrating puzzle that I need to solve.
Amusingly, I am also the solution. No excuses, no holding back, no fear. As a self-correcting system, it’s time to change and hopefully one day, achieve transcendence 😀