3 resources to crack the art of learning something new

These are the lists of resources I read / watch before I begin learning something entirely new. I hope it helps you.

I’m always fascinated by the thrill of learning something new. It adds enormous value to my mental and physical being. It even helps me see things from a different perspective and shapes my overall thinking process in an impactful manner.

As much as I enjoy the struggle in the process of throwing myself into various scenarios and letting my brain to deal with it, I also make sure I acquire the skill at a faster pace by figuring out important and essential aspects and making immediate use of the learnings in real world to validate the path.

Learning is an inevitable truth of life, so why not crack this art and make this path easier and interesting. Here is my list of resources which helped me to look through this art.

There’s no speed limit. (The lessons that changed my life) by Derek Sivers

If you’re more driven than “just anyone” — you can do so much more than anyone expects. And this applies to ALL of life — not just school.

This blog post was introduced to me by Prateek Dayal. Ever since I read it, It changed my approach towards learning. Arbitrary time attached to adopt a skill is made keeping everyone in mind. You can always speed up the process and overcome the learning curve.

Smashing fear, Learn anything by Tim Ferris

I’m amazed by the amount of things this guy has achieved in his life so far, both at a personal and professional level. His approach of deconstructing the learning curve and applying the famous “Pareto’s 80/20 theory” to almost everything is the secret sauce behind his success.

The first 20 hours — How to learn anything by Josh Kaufman

In this talk Josh Kaufman talks about how his obsession with learning new things lead him to “The first 20 hours” principle. Which is basically, learning the most common stuff about the task in the first 20 hours and produce enough result to generate momentum.

What resources do you think gave you significant boost in learning something new? You can share them in the response below or simply let me know what you think about this article. Lastly, I will leave you with a quote

The noblest pleasure is the joy of understanding. — Leonardo da Vinci

If you liked this article, click "Recommend" on Medium. Or, say hi to me on Twitter 👋

How to create self hosted Heroku like server in 5 simple steps.

Goal — `git push` and enjoy your coffee ☕️

Building a server from ground zero to host a production app could be a real pain. The whole process of installing all the dependencies one by one with their appropriate version, and keeping necessary configs in check is very tedious. There are a few tools to automate these tasks, such as, Chef, Puppet, F*cking Shell Script etc. but they come with their own DSL which requires learning curve. None of them work out of the box.

I’m a huge fan of Heroku. My mind was blown by the ease of deployment that Heroku provides when I saw it for the first time. Ever since then, I’ve become addicted to their command line tool belt. But unfortunately, this ease comes with a hefty price tag. Even a slightly dynamic project with minimal resource would cost around $50. They do offer a free plan which, according to me, is not feasible unless you’re hosting a static site. 

This pushed me to look out for a viable, cheaper, and lazy (to cater my addiction) solution, and this is how I stumbled upon Dokku-alt.

Dokku-alt is a Docker powered mini-Heroku. The smallest PaaS implementation you’ve ever seen. It’s a fork of original dokku. The idea behind this fork is to provide complete solution with plugins covering most of use-cases which are stable and well tested.

Voila! It’s exactly what I was looking for. I grabbed a $5 DigitalOcean Ubuntu droplet and made it my playground for testing this new shiny toy. Few sets of commands, domain DNS setup, and a cup of coffee is all it took to deploy an app. The whole experience was pretty sweet and painless. Life is way simpler now.

Here’s how you can make yours:

Step 1 (pre-requisites):

  • You need a fresh (recommended) Ubuntu 14.04 LTS VM from any cloud provider (seriously, it doesn’t matter).
  • A ready-to-use domain with DNS access. 
  • Your public ssh key for password-less access to execute commands on your server. 

Step 2 (Installation): 

Execute below ssh command on your VM after logging in via root.

$ sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/dokku-alt/dokku-alt/master/bootstrap.sh)"

It will probably take less than a minute to install all the required libs. Once the installation is done, it will run a Sinatra server on port 2000. You simply need to point your browser to http://<your server ip>:2000/ add your domain and public ssh key to finish the configuration. 

Step 3 (App creation):

We will now create the app that we want to host.

dokku apps:create (your app name here)

Whatever name you give to your app, it will also become the subdomain to access it. Now let’s add environment keys to the app.

dokku config:set (your app name) KEY1=value1 KEY2=value2 …

Step 4 (Database):

Dokku-alt offers multiple databases including PostgreSQL, MySQL, MongoDB, MariaDB, Redis etc. If you don’t find yours in the list than I’m sure there must be a plugin available to install it. 

Let’s install PostgreSQL for the sake of it.

dokku postgresql:create (your database name here)

It will install and create a database with the name you provide. But we’re not done yet. There’s one more important step we need to follow before moving ahead, i.e.:

dokku postgresql:link (app name) (database name)

Only after this command that your app will be able to access the database. This will also add required database credentials as environment keys. 

Step 5:

Now, add remote git url on your development machine inside the project folder.

git remote add dokku dokku@(your domain):(your app name)
git push dokku master

Grab a cup of coffee and wait for it to finish. If everything goes as expected, you will have a working copy of your app in a matter of minutes. 

Here is the list of commands provided by dokku-alt

P.S: if you run into memory allocation issues, follow these steps for the fix. 

P.S.S: You can also execute commands from your local machine by ssh dokku@<your domain> "your command here"

If you liked this article, click "Recommend" on Medium. Or, say hi to me on Twitter 👋

Shipped my first Ember production app in a month

Today we shipped Crowdfire which we’ve been working on since a month. The dashboard is completely written in Ember using Ember CLI and deployed to Amazon S3 keeping it totally independent of the backend.

To give you more context, I joined Crowdfire (formerly JustUnfollow) team in the mid December last year. Our immediate goal for 2015 was to rebrand and more importantly to rewrite the existing web interface which was serving our users since past 5 years.

Ember is not so common in JavaScript dev community here in Mumbai or Bangalore. There’s quite a buzz around ReactJS. However, Ember was on my list since long and their roadmap is pretty concrete in terms of guideline, improvements, release cycle etc. I’ve done production apps on Backbone and AngularJS as well where latter seems to be very flaky in their future roadmap and former is way too basic in its offering respectively. Also, Our team had few months of experience in AngularJS and we already did some of the ground work for kick starting the project. But, finally after some convincing we took a decision to go with Ember rather than sticking around with AngularJS.

While starting up with Ember there are bunch of resources on the internet which gets you started with the framework but most of them share only half-truth and can be really painful in learning phase. Ember has a steep learning curve which can drive you crazy while building your real world web application. I would suggest, better grab Ember-CLI 101 ebook and RTFM. These two resource definitely turned out to be great companion while getting my head around the framework.

I’m glad we chose Ember. Our team is having a good time so far.

Ember is a solid and robust for building web applications. Moreover, if you’re a Ruby and Rails fan like me then you will completely fall in love again with frontend development while using the framework. It has all the goodness of both with some extra sugar which takes the whole web application development at another level of fun and it does get better with every release. Thanks to the amazing team behind it and the awesome community, IMO Ember is changing the way web applications are built.

One of the mistake I’ve seen new devs in Ember make is they still think in “previously used framework” or “Plain JavaScript” way. This should not be the case while writing in Ember. Ember solves the problem is its own way. Unless you embrace “think in Ember” philosophy you won’t be able to reach the zen of it.

Good luck. Ping me on @BilalBudhani if you’ve any questions for me.

P.S: I wrote a small plugin on Ember-CLI for oh-my-zsh here.

EDIT: If you're interested in learning EmberJS or want to get a brief overview about the framework then, I would strongly suggest Ember 101 EBook by Adolfo Builes. I've personally started with this one and it was really helpful.