AI: From ZERO to H...aving A Lot of Questions (Part II)

Written by htbrandao | Published 2020/04/07
Tech Story Tags: education | ai | learning | work | storytelling | learn-machine-learning | artificial-intelligence | zero-to-hero | web-monetization

TLDR Part I of the ZERO series: "From AI - From AI to Machine Learning" Part I: Learning something new is awesome, but not now. Don't try to contribute to open source projects. You'll probably get lost on the scope and won't understand what is going on. It'll mostly lead to failure and sadness, which will slow down your learning curve at a crucial moment. It's better to have a single reliable sharp knife to a bunch of small knockoffs pocket blades. You need to bench 80 Kg properly to bench 85, 90 and 100kg.via the TL;DR App

(If you just landed here, be sure to check Part I)
Couple of months on the job. Rocking Python, Linux and Git. The sky is the limit, right? RIGHT?! Maybe. But not now.
Learning something new is awesome. Some circuits, a bit of hot glue and here's a brand new cyborg with laser eyes...?!
Nope.
Until about a year ago I had never heard about the Raspberry Pi. So I started reading about it. I've read all the documentation. The page said it has and ARM processor. I never heard about it, what did I do? Googled it. The page on ARM Architecture explained about RISC and CISC. I never heard about RISC and CISC. What did I do? Googled it.
See where I'm going?
After spending the whole Saturday reading, was I able to develop my own? Build my own kernel? My own distro?
Niet.
Be it martial arts, powerlifting or AI, you gotta strengthen your core. Keep it tight! It was time for: Foundations.
A couple of hundred lines of functional programming are not foundations. Reading from a database, parsing and writing somewhere else are not foundations.
Everyone feels embarassed whenever they look at their old code.
Improving takes time. Research, experience, mistakes, knowledge and maturity itself. No one without experience and training wakes up, goes to the gym and bench presses 120 Kg. Why would studying be different?
I come from the future, and I bear gifts:
  1. Do you want 3-months-from-now you to avoid some brain hemorrhage when looking at your old code?
    The answer is Documentation. Try to write comments - or complete descriptions! - on what you are doing right now. Start right now, I MEAN IT. Some lines of docstring will go a long way, trust me.
  2. Do you want 1-week-from-now you to feel sad with low morale?
    Do not try to contribute to open source projects. You'll probably get lost on the scope and won't understand what is going on. It'll mostly lead to failure and sadness, which will slow down your learning curve at a crucial moment.
  3. Do you want tomorrow you to feel tired and give up?
    Keep your chin up! You'll only see your real progress further down the road. With some luck and personal effort, it'll be a perpetual process of learning and noticing your - endorphin - progress.
I only had three tools. I needed them to be as sharp as possible. It is better to have a single reliable sharp knife to a bunch small knockoffs pocket blades. You need to bench 80 Kg properly to bench 85, 90 and 100kg.
Know, your, stuff. As much as you can.
My approach? Delving into books (or documentation). Youtube videos, blog posts (e.g: medium, towards data science, hacker noon, kd nuggets, kaggle) can be great sources of information, but there's only so much it can do for you.
In college we had a saying that translates to "It's already in my blood". When knowledge is in our blood, chances of forgetting it are close to none.

So, the entire book (or documentation)? Well, go as far as you can, follow your heart, but move forward only when you really manage to learn. Feel free to skim - but try not to skip - chapters or sections of the content. Focus on what you can improve now. Chances are that you won't be needing that network/TCP chapter in the forseeable future...
I said to skim instead of skip because you might learn some new vocabulary and relevant information (e.g.: You might not remember the layers of the OSI model, but you'll learn that there's a model. And googling for "newtork model layers" is as good as "OSI model".)
Go back to your code, file by file, class by class, function by function, line by line. See that for loop used when creating a list? You can improve it's performance by using list comprehension. Have you ever tried to use map?
Ask someone to evaluate your code.
Write tests! Don't know about tests? Good! Now is as good time as any.
I managed to refactor/rewrite everything that I had done. It felt great. Just like leveling up in real life.
The title of this series is "AI - From ZERO to H...aving lots of questions!" and you haven't seen any machine learning, or even statiscts until now. It happens that in my case, I need to code and do the math. Many data cientists don't. Fear not!
More projects were coming my team's way. I felt good, confident. Eager for new opportunities
...and had no idea what was coming my way. But that's a story for another time. The title will probably be something close to:
"How did I become the team's self-entitled RegEx god in one day, and who's the one that uses .cab files?!".
Part III - Coming soon

COVID-19 IS SERIOUS. STAY AT HOME!

References:
  1. Raspberry Pi: https://www.raspberrypi.org/documentation/
  2. Functional programming: https://en.wikipedia.org/wiki/Functional_programming
  3. Powerlifting: https://stronglifts.com/5x5/
  4. List comprehensions: ps://docs.python.org/3/tutorial/datastructures.html#list-comprehensions
  5. Python tests: https://realpython.com/python-testing/
  6. Programming paradigms: http://www.eecs.ucf.edu/~leavens/ComS541Fall97/hw-pages/paradigms/major.html
  7. Documenting Python Code: A Complete Guide: https://realpython.com/documenting-python-code/
  8. Programming in Python 3: A Complete Introduction to the Python Language: https://www.amazon.com/Programming-Python-Complete-Introduction-Language-ebook/dp/B001OFK2DK
  9. Linux Bible: https://www.amazon.com/Linux-Bible-Christopher-Negus-ebook/dp/B00XC9L0HS/ref=sr_1_1?dchild=1&keywords=linux+bible&qid=1586209469&s=digital-text&sr=1-1
  10. Regular expressions (regex): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
  11. Introduction to Statistical Learning: https://faculty.marshall.usc.edu/gareth-james/ISL/ISLR%20Seventh%20Printing.pdf

Written by htbrandao | No roots, only root~#
Published by HackerNoon on 2020/04/07