During my undergraduate studies at the University of California, San Diego, I found myself immensely fascinated with Economics and Computer Science. The former allowed me to describe the world with models and the latter allowed me to build those models in a practical manner. The combination of these two disciplines led me to find Machine Learning which I now do full time.
I decided to create this blog simply to become a better engineeer. More specifically, this blog serves 3 purposes:
To help me understand deeply. I believe a good litmus test of one’s understanding is to see how well one can explain a subject in a clear and concise manner. Oftentimes I would tell myself “Oh yeah I completely understand this” only to be dumbstruck when asked to explain the material. In this blog, I plan to disect many machine learning papers. The act of doing so will act like sort of a “Checks and Balances” on my perception of my own understanding.
“The first principle is that you must not fool yourself, and you are the easiest person to fool.” - Richard Feynman
To improve my writing. Writing is important because it is no different from thinking, and being able to think more coherently is what makes better engineers. I highly recommend reading Jordan Peterson’s Essay Writing Guide , and as you read it note the similiarties between the paradigms of writing and programming. For example he has a statement on “paragraphs” where:
“A paragraph should present a single idea. … if your paragraph is rambling on for 300 words, or more, it’s possible that it has more than one idea in it, and should be broken up.”
Now how is this different from the Single Reponsibility Principle by Robert Martin? Here’s an exceprt from Clean Code
Functions should do one thing. They should do it well. They should do it only.
Functions, like pargraphs, too need to contain only one idea. There are many other examples like this, I’ll write a blog post about them in future.
To document my process. To improve we need to have a record of something, understand why it doesn’t work, why it does, and then finally iterate on it. This blog is a means of accomplishing the first step in that process.
The posts on this blog are not final. Instead, I see them as prototypes waiting for their next iteration. So if you see any mistakes in my posts, or if you have anything you would like to contribute, or if you have any questions feel free to message me at my LinkedIn . I’m also planning on making this repository public in the future and suggestions can be made via pull requests (WIP). Thanks for checking out the blog, I hope it is as useful to you as it is for me :)