Learning Journal — 2017

Sometimes You Win, Sometimes You Learn

They say reflection is the most important part of the learning process. We do not learn from experience, we learn from reflecting on experience. In 2017, I learned a lot of new things in different fields such as programming, self growth and parenting and this is my attempt to reflect on all the learning activities and capture some takeaways.

# Books:

1> The Happiness of Pursuit: Finding the Quest That Will Bring Purpose to Your Life

- Chris Guillebeau

  • I bought this book in 2016 when I was visiting the famous Powell’s bookstore in Portland. As the title suggests, this book is a collection of various real life stories of extreme quests of travel, music, sports and other passions that reveal the direct link between questing and long-term happiness. The author himself accomplished his quest to travel to every single country in the world before his 35th birthday. Its definitely an interesting read that gets you thinking about a greater purpose, something that will transform your life from a routine to an adventure.

2> The 10x Rule: The Only Difference Between Success and Failure

- Grant Cardone

  • There is a common saying that hard work doesn’t guarantee success but without it one doesn’t have a chance. This book beats on that idea and just encourages the readers to do everything 10 times more than the other average guy in order to succeed in a field. Although it has a good rating on Amazon I didn’t enjoy the book so much, may be because I bought the audiobook version and the entire narration sounded like a loud sales pitch. It has some good advice here and there but nothing that I had not heard or read before.

3> Soft Skills: The Software Developer’s Life Manual

- John Sonmez

  • This book has a lot of good tips on marketing and productivity for software developers. It encourages programmers to try the non-corporate career path of working as a consultant or a freelancer. The suggestions on branding oneself and getting the name out in the community are useful. The author also discusses a lot of other aspects of life such as health, finance and success habits. Overall the book was a good refresher on treating one’s career as a business and always striving to grow in every area of life.

4> 300 Questions New Parents Ask

- William and Martha Sears

  • My wife and I are expecting our first kid this year and hence this book. There is so much to read and learn even for dads in order to provide the right support and help to the moms. The reality is so different from what we see in movies and TV shows. This is a pretty old book on the subject but still quite relevant and its question-answer format makes it easy to read and jump sections.

5> CSS Master

- Tiffany Brown

  • This book covers all CSS concepts from architecture and complex layouts to animations and preprocessors with very practical and easy to understand examples. I’ve been writing CSS for the last few years, but never took the time to read an entire book on the subject before. I also began using CSS linter plugins in my IDE last year and a lot of the linter rules made more sense after reading this book. As the field of CSS continues to evolve with new grid layouts and other cssnext features, its great to have a good solid understanding of its core concepts.

6> YDKJS: Up & Going

- Kyle Simpson

  • I’ve read a few books on JavaScript before, but this new series by Kyle Simpson is by far the best. Its all about the light bulb moments, when things go from blurry to crystal clear. One of the things I learned from this first book in the series was that the JavaScript engine actually compiles the program on the fly and then immediately runs the compiled code. Like most others I had the wrong assumption before that JavaScript is interpreted because its source code is processed each time it runs. Overall this book is a good refresher for all JS basics such as objects, prototypes, hoisting, coercion etc.

7> YDKJS: Scope & Closures

- Kyle Simpson

  • In this second book, Kyle defines and explains the purpose of the Engine, Compiler, and Scope and how they interact with each other to compile and execute a JS program. For example, the Compiler declares a variable in the current Scope and when executing, the Engine looks up the variable in Scope and assigns a value to it. Once you get a good grasp of these concepts, you can comprehend your code so much better. My goal was to complete the entire series last year, but I managed to read only the first 2 books. Hopefully, I’ll make time to read the remaining 4 books this year.

# Side Projects:

1> E-commerce

  • Last year in July I completed 10 years of professional programming. Over these 10 years, I’ve worked on many different applications but I’ve never had a chance to work on an e-commerce project. So as one of my goals for 2017, I decided to work on a side project to build a mobile friendly website for a restaurant. The idea was to build something simple where users can just see the menu items, add them to the cart and checkout.
  • I built the site with the following stack:
"host" : "heroku",
"database" : "mongo db",
"framework" : "sails js",
"payment_lib" : "stripe"

I decided to go with the Sails JS framework mainly because of its emphasis on developer happiness and a convention-over-configuration philosophy. The choice for the payment library was a lot easier decision because of Stripe’s popularity. Stripe is targeted at developers, hence it’s API is clean, well documented, and extremely easy to use.

# Courses:

1> JavaScript 30: Build 30 things in 30 days with 30 tutorials

- Wes Bos

  • Like most other front-end engineers these days, I use a JavaScript framework for the different projects at work (in my case its Ember JS). All frameworks are designed to make you more productive but that comes at a cost of one losing touch and forgetting the low level DOM APIs and other language features or sometimes not learning all the new language additions that get introduced every few months. So when this course came out sometime last year, I was excited to find some interesting exercises to solve in vanilla JS. This is a great course by Wes Bos that covers a lot of different parts of client side development from animations and layouts to ES6 features and geo-location APIs.

2> Learn Node

- Wes Bos

  • I’ve been programming in PHP for all my backend tasks ever since I started working on web development projects. So I set a goal last year to learn some server side JavaScript development. This course by Wes Bos has 44 videos that teach how to build a full stack web app with Node.js. It covers everything from user accounts and authentication to image uploading and deploying apps on Heroku and Digital Ocean. The end result is a Yelp style responsive restaurant application which allows users to search for restaurants and leave reviews.

3> Develop Web Apps in Node.js and Sails.js

- Mike McNeil

  • I chose Sails.js for my e-commerce side project last year and to learn all the framework concepts in-depth, I watched this course by the framework creator Mike McNeil. Most concepts are easy to grasp if one has built some web apps before with other frameworks. The Blueprints concept of Sails.js makes it easy to quickly generate API routes and actions and its Waterline ORM provides a clean abstraction to work with any database.

4> The Bradley Method

  • This was a 10 classes (once a week) course that my wife and I took last year to educate our selves about the entire childbirth process. It is designed for new parents to learn everything in a small group setting from an independent affiliated instructor. We are really glad that we took this course as we learned so much about prenatal nutrition & exercise, relaxation techniques and how husbands can play a role as a coach during labor. The class also covers writing birth plans and how to communicate with the hospital staff to make the entire process as easy as possible. With all the birth related surgeries happening so often these days, its important to be informed about all the different ways one can avoid medical interventions.

# Other Activities:

1> Conferences

  • I attended the So Ember Conf in San Deigo last year and had a great time learning from and networking with some of the best minds in the Ember JS community. This was my first Ember conference and hence it was very exciting to finally meet some of the emberenos in person. It was a one day conference that took place at the beautiful Catamaran Resort Hotel and the entire event was very well organized by Dockyard. Being part of some community makes such a big difference in one’s career growth. Besides this conference, I’ve learned a tremendous amount through Ember’s local meetups, online slack channels and even by making small open source contributions.

2> Podcasts

  • I generally listen to podcasts while driving to work every morning. Its a great way to make the most of your daily travel time. I picked some new shows to listen to last year that were really impressive. The first one was How I Built This by Guy Raz. On this show, Guy interviews startup founders about how they built their companies. I enjoyed listening to stories of Reddit, Starbucks, Airbnb and Chipotle. The other new podcast that I picked and learned a lot from was The EmberMap Podcast by Sam Selikoff and Ryan Toronto. This show has very practical and detailed discussions about different challenges one faces while building front-end apps in Ember JS.

# Summary:

According to the Four Burners theory, there are three different options for work-life balance. One can outsource, embrace constraints or break one’s life into seasons. So far my approach towards life was more like the last option, to focus on just one thing at a time, but now as multiple aspects of life have started to get equally important, there has been a gradual shift towards embracing constraints and finding ways to maximize the time I have.

Looking forward to a busy but fruitful and exciting 2018!