Jekyll2018-06-11T03:42:40+00:00http://amanroy.me/Aman RoyAman Roy's Personal blog about tech, code and things he experiences.45 Days of code2018-04-25T11:00:00+00:002018-04-25T11:00:00+00:00http://amanroy.me/45-days-of-code<p><img src="/assets/images/45daysofcode/main.png" alt="45 days of code" /></p>
<p><br /></p>
<blockquote>
<p>Which programming language to learn first?</p>
</blockquote>
<blockquote>
<p>How to start learning to code from the very beginning?</p>
</blockquote>
<blockquote>
<p>Is it difficult to learn how to code?</p>
</blockquote>
<blockquote>
<p>and the list goes on…</p>
</blockquote>
<p>These are the few questions people ask me all the time. Maybe you have also asked these questions from people around you or the internet. In this blog post, I have filtered almost all the online courses and blog posts and prepared a <strong>45 days study plan</strong> for getting started in the world of programming. I have made it for 45 days so that it will <strong>fit into your summer/winter breaks</strong>. It is very <strong>beginner-friendly</strong> and it will start very slow. So, <span class="evidence"> If you are an experienced programmer, don’t follow this path.</span> All the source, I have listed is <strong>totally free</strong>. Only if you need certificate then you have to pay but certificates are overrated, don’t think about that.</p>
<h4 id="some-commitments-this-path-requires-">Some commitments this path requires:-</h4>
<ul>
<li>You need to be <strong>consistent</strong> with never giving up attitude.</li>
<li>You have to learn <strong>very fast</strong>.</li>
<li>You have to dedicate <strong>at least 6-7 Hours daily</strong>. By the way, the more you give, the more you get.</li>
<li>Don’t take any <strong>course parallel</strong> to it. Focus on this path only. Don’t divert.</li>
</ul>
<h4 id="some-motivation-before-you-go-ahead-">Some motivation before you go ahead:-</h4>
<ul>
<li>At some point, you will feel like why I am doing this? What’s the point of adding two numbers? Keep the faith and keep moving. This question is same as asking <strong>“why we crawl when we are infant? when we have to stand and walk in the future? We are never going to crawl again, then why? What is the need of it?”</strong> but it’s a process and we have to go through it. You can’t skip that.</li>
<li>I can give you <strong>money</strong> as a motivating factor, but it doesn’t last long. It is true that there is lots and lots of money in this area but don’t do it only for money. Let it be the side effect of what you do.</li>
<li>If you can’t finish it on time as I have given. It’s totally ok. Just <strong>don’t give up</strong>. Complete it as soon as you can.</li>
</ul>
<h4 id="some-tips-to-succeed-in-this-path-">Some tips to succeed in this path:-</h4>
<ul>
<li>I have designed this in a way that you will learn only one programming language and that is <strong>Python</strong>. Python is very beginner friendly that’s why I have chosen it. Computer science was <strong>never about programming language</strong> and never will be. So, never focus on that. Try to learn the logic of the problem. How it is crafted and all that stuffs. You can learn multiple programming languages very easily. Don’t worry about that. <strong>Focus on one for now</strong>.</li>
<li>Take this path as a <strong>fun thing</strong>. Don’t take it as your course subject or you will fall for sure.</li>
<li>Don’t get <strong>stuck in one place</strong> for long. Try hard to understand at first. If you can’t, <strong>google it</strong> and read first few links. At last, you can <a href="mailto:royaman8757@gmail.com?subject=45 days of code">contact me</a> directly. I’ll try my best to help you out.</li>
<li>No need to understand everything at first. It’s ok to go slow. Just keep in mind to be <strong>better than the previous day</strong>.</li>
<li>Take <strong>short notes</strong> while watching lectures.</li>
<li>Be really <strong>fascinated</strong> about what you are learning. Don’t only focus on how to solve a problem, try to <strong>see the beauty which lies within</strong>.</li>
<li><strong>Don’t try to remember</strong> a single thing. This is the worst thing you can do.</li>
<li>Make <strong>small achievable goals</strong>. Make goals for a single day at a time.</li>
<li>If you are comfortable, you can watch videos at <strong>1.5x or 2x speed</strong>. Don’t force yourself for this. Do this only if you are really comfortable.</li>
<li>Give yourself a target to <strong>complete the courses in half of the time given</strong>. That will make you a fast learner.</li>
<li><strong>Type every piece of code</strong> you encounter in the whole process.</li>
<li>After you finish all the stuffs. Try to <strong>make a project on your own</strong>. There are many project ideas on the internet but don’t look there. Brainstorming on your own will be a better idea. <strong>Share the project with me</strong> if possible. I’ll love to see.</li>
</ul>
<div class="breaker"></div>
<h2 id="the-game-begins">THE GAME BEGINS</h2>
<h3 id="day-0---1">Day [0 - 1]</h3>
<p>For the very first day, it’s better to start slow. I am going to list some blogs where you will know some technical terms. Just <strong>skim through it</strong>.</p>
<ol>
<li><strong>Technical stuff in layman’s language</strong><br />
<ul>
<li><a href="http://carlcheo.com/compsci" target="_blank">40 Key Computer Science Concepts Explained In Layman’s Terms</a><br /></li>
<li><a href="https://codeburst.io/intro-to-computer-science-terminology-f9ae64e75d27" target="_blank">Intro to Computer Science Terminology</a></li>
</ul>
</li>
<li><strong>Few tips on programming</strong><br />
<ul>
<li><a href="https://www.codingdojo.com/blog/7-tips-learn-programming-faster" target="_blank">7 Critical Tips to Learn Programming Faster</a>
<br /></li>
<li><a href="https://www.codeconquest.com/bored-programming/" target="_blank">Bored Programming? How to Stay Motivated</a></li>
</ul>
</li>
<li><strong>A comic for understanding things better</strong><br />
<ul>
<li><a href="https://prairieworldcomicsblog.wordpress.com/programming-series-in-order/" target="_blank">Programming Series in Order</a></li>
</ul>
</li>
</ol>
<h3 id="day-2---15">Day [2 - 15]</h3>
<p>The best starting point for any beginner will be <strong>Charles Severance</strong> course on Python. He is just the best teacher out there. He will teach you python as well as how to learn on your own. Watch all the lectures and try to solve all the problem sets.</p>
<p><a href="https://www.coursera.org/learn/python" target="_blank">[Coursera] Programming for Everybody (Getting Started with Python)</a></p>
<p><strong>P.S. - When you click on enroll button, a pop-up will show up for starting your course. Look at bottom left corner, click on “audit course” option. This is a free course. You don’t have to pay anything.</strong></p>
<h3 id="day-16---23">Day [16 - 23]</h3>
<p>Now you have basic knowledge of python. Time to have a good amount of practice. In these <strong>8 days</strong>, you will <span class="evidence">practice! practice! practice!</span></p>
<ol>
<li>
<p>Complete this in <strong>4 days</strong>. It is curated in a way so that you can finish it in only 13 hours. Do it very well because I have given more time than required. It will give you <strong>best hands-on experience</strong>. <br />
<a href="https://www.codecademy.com/tracks/python" target="_blank">Python || Codecademy</a>
﻿</p>
</li>
<li>
<p>Take <strong>2 days</strong> to complete this. Do only <strong>Introduction, Basic data types, Strings</strong> and <strong>math</strong> section. You can do all the sections if you want but the sections I have mentioned is compulsory. If you get stuck for long, google for solutions.<br />
<a href="https://www.hackerrank.com/domains/python/py-introduction" target="_blank"> Hackerrank || Python practice</a></p>
</li>
<li>
<p>Last <strong>2 days</strong>, solve at least <strong>25 question</strong> given in the link below. There are 36 questions, as I am writing this. There are solutions too but don’t peek into it if you haven’t fought with the question at least for a half of an hour. You can solve all if you can.<br />
<a href="https://www.practicepython.org/" target="_blank"> Practice Python || Beginner Python exercises</a></p>
</li>
</ol>
<h3 id="day-24---29">Day [24 - 29]</h3>
<p>These <strong>6 days</strong> are given for books. Video lectures are good but they can never surpass books in any way. Books will give you <strong>underlying mechanism</strong>.</p>
<ol>
<li>You have already learned many things in python. <strong>2 days</strong> is enough to skim through it. There are some parts of <strong>“Object-oriented”</strong> section which you will feel a little difficult to grasp. You can skip those section if you want. Just go easy on this online book. Don’t try to read each and every word.
<br />
<ul>
<li><strong>A byte of python by swaroop</strong> - <a href="https://www.gitbook.com/download/pdf/book/swaroopch/byte-of-python" target="_blank"> [Download for free]</a></li>
</ul>
</li>
<li>The second book I am going to mention is not on python. It is about <strong>algorithm and data structures</strong>. Google these terms if needed. This book includes <strong>11 chapters</strong>. Try to cover at least <strong>3 chapters</strong> a day so that you can complete the whole book in <strong>4 days</strong> at max. This book teaches very complicated computer science stuff with the help of graphics. You will surely fall in love with this book.
<br />
<ul>
<li><strong>Grokking Algorithms</strong> - <a href="https://goo.gl/j7eX4Q" target="_blank"> [Download for free]</a> <a href="http://amzn.to/29rVyHf" target="_blank"> [Buy online] </a> <br />
<span class="evidence"> Please try to buy it if you can. I don’t want to support piracy in any way.</span></li>
</ul>
</li>
</ol>
<h3 id="day-30---45">Day [30 - 45]</h3>
<p>This is the last thing you have to do. This course requires <strong>more time than I have given</strong>. I have done this to see if you have become a <strong>fast learner</strong> or not. This is the essence of everything. You must have to put in more time than required in this. Complete all the problem sets. Don’t skip that.</p>
<p><a href="https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11" target="_blank">Introduction to Computer Science and Programming Using Python</a></p>
<h2 id="final-words">Final Words</h2>
<p><img src="/assets/images/45daysofcode/aaron.jpg" alt="Aaron quote" /></p>
<p><br /><br />
Kudos, you are a rare species now if you have completed even some portion of it because only <span class="evidence">0.5% of people know how to code</span>. This is just a beginning. There are so many things to learn. Ask for help if needed in the comment section below or contact me on my <a href="/about">social media handles</a>. I will love to guide you as much as possible.</p>
<p>Go explore, adventure is waiting!</p>
<p>Happy coding!</p>
<div class="breaker"></div>AmanroyStalkHub2017-05-29T10:00:00+00:002017-05-29T10:00:00+00:00http://amanroy.me/stalkhub<p><a href="https://stalkhub.amanroy.me/">StalkHub</a> is a <a href="http://flask.pocoo.org">Flask</a> based web app which uses <a href="https://developer.github.com/v3">GitHub API v3</a> to plot your Github profile beautifully. It renders basic profile details, user’s watchlist and recent activities.</p>
<hr />
<p><a href="https://stalkhub.amanroy.me/" target="_blank">
<img src="/assets/images/stalkhub/stalkhub.jpg" alt="StalkHub" />
</a></p>
<hr />
<h3 id="built-using">Built using</h3>
<ul>
<li><a href="https://www.python.org">Python</a></li>
<li><a href="http://flask.pocoo.org">Flask</a></li>
<li><a href="http://materializecss.com">Materializecss</a></li>
<li><a href="https://developer.github.com/v3">GitHub API v3</a></li>
<li><a href="http://jinja.pocoo.org/docs/2.9">Jinja2</a></li>
</ul>
<hr />
<h3 id="demo">Demo</h3>
<p>This app is deployed on <a href="https://heroku.com">Heroku</a></p>
<p>Check it here - <a href="https://stalkhub.amanroy.me/">https://stalkhub.amanroy.me/</a></p>
<hr />
<h3 id="how-to-deploy">How to deploy</h3>
<p>Read it here - <a href="https://github.com/aman-roy/StalkHub#installation/">https://github.com/aman-roy/StalkHub#installation/</a></p>
<hr />
<h3 id="extra-info">Extra info</h3>
<p>GitHub link is <a href="https://github.com/aman-roy/StalkHub">here</a>. Don’t forget to give it a star.
If you need some help, just <a href="https://github.com/aman-roy/StalkHub/issues">tell me</a>.</p>AmanroyStalkHub is a Flask based web app which uses GitHub API v3 to plot your Github profile beautifully. It renders basic profile details, user’s watchlist and recent activities.This is CS50!2017-04-29T11:00:00+00:002017-04-29T11:00:00+00:00http://amanroy.me/This-is-CS50!<p><img src="/assets/images/cs50/CS50_aman_roy.jpg" alt="This is CS50" /></p>
<p>So, the journey which I started a few months ago reached its end. <a href="https://www.edx.org/course/introduction-computer-science-harvardx-cs50x">CS50</a> is an 11 week(12 weeks when I started) MOOC which is an Introduction to Computer Science. It started from the very beginning talking about bits and bytes but ended with using an <a href="https://en.wikipedia.org/wiki/Application_programming_interface">API</a>. According to CS50 survey report, almost <strong>73% of CS50 students</strong> have never taken a CS course before. This course is taught by <a href="http://cs.harvard.edu/malan/">David J. Malan</a> who is the coolest professor I ever come across. I got to know about this course from a <a href="https://www.quora.com/What-are-some-of-the-best-ways-to-learn-programming/answer/Rounak-Banik">Quora Answer</a> and it is the best thing ever happened to me.</p>
<p>In this blog post, I am going to tell you my overall experiences through each week and problem I faced through each problem sets. By the way, I started this <a href="https://en.wikipedia.org/wiki/Massive_open_online_course">MOOC</a> in 2016 but can’t complete due to exams but resumed it in 2017. In between, the course got moved from <strong>PHP to Python</strong>. This course also teaches about C, Flask(Python microframework for creating dynamic websites), Javascript, HTML, CSS, etc.</p>
<p>Before moving forward I want to tell you that before this course, I have some exposure to programming, mainly in C and Python but I learned a lot through this journey. This <a href="https://en.wikipedia.org/wiki/Massive_open_online_course">MOOC</a> was not easy but it was interesting and that is what matters the most because if it seems easy that means I am not learning anything. Whenever you think this <a href="https://en.wikipedia.org/wiki/Massive_open_online_course">MOOC</a> is not for you that means you are not pushing much. According to <a href="http://cs.harvard.edu/malan/">David J. Malan</a>, this course has no prerequisites but I think there are two -</p>
<ol>
<li><strong>Consistency</strong> and</li>
<li><strong>Never Give up Attitude</strong></li>
</ol>
<p>And always remember…</p>
<blockquote>
<p>A year from now you will wish you had started today. ~ <strong>Karen Lamb</strong></p>
</blockquote>
<p>So, Start today. Sorry, not even today. Start it <strong>NOW!</strong> But don’t start if you don’t want to finish it. Because,</p>
<blockquote>
<p>Do or do not. There is no try. ~ <strong>Yoda</strong></p>
</blockquote>
<hr />
<h2 id="week-0-scratch-aka-honeymoon_period">Week 0: SCRATCH aka {Honeymoon_Period}</h2>
<p>This was just a <strong>honeymoon period</strong> for me. This week lecture was about computer science in general. I was taught some basic things about computer science. <a href="https://scratch.mit.edu/">Scratch</a> was also introduced to understand some basic concepts of programming.</p>
<h3 id="problem-set-0">Problem Set: 0</h3>
<p>This was simply complicated. Simple because you know everything about your tools but complicated because you have to think yourself how to use them in a manner to produce something really good out of it. In this problem set, you have to create a problem first then you have to solve it. <span class="evidence">Maybe you are good at solving the problem but you will have a hard time in thinking of a problem which you think you can solve.</span></p>
<h2 id="week-1-5-c-aka-sweet_poison">Week 1-5: C aka {Sweet_Poison}</h2>
<p>I call it <strong>sweet poison</strong>. These weeks are all about <strong>“C”</strong>. It’s a low-level programming language so we have to do memory management manually but it is very fast. These weeks are not all about <strong>“C”</strong> only but also about some basic <a href="https://en.wikipedia.org/wiki/Algorithm">Algorithms</a> and <a href="https://en.wikipedia.org/wiki/Data_structure">Data Structures</a>. So, I call it sweet poison because at first, it seems very easy but when David introduce me to pointers, it became a real headache. There are many other headaches too but this was really painful. That time I was also like giving up but I kept going because of <a href="https://en.wikipedia.org/wiki/Winston_Churchill">Winston Churchill</a>, because once he said -</p>
<blockquote>
<p>If You’re Going Through Hell, Keep Going ~ Winston Churchill</p>
</blockquote>
<p><span class="evidence">So after googling millions of time, wandering through thousands of blog posts I understood, and I understood it well.</span></p>
<h3 id="problem-set-1-5">Problem Set: 1-5</h3>
<p>At first, I tackled with <a href="http://docs.cs50.net/problems/hello/hello.html">Hello, world</a> problem and I thought, What an easy question is this. I decided to <strong>finish CS50 in less than a month</strong> but I have no idea what is about to come. Problem Set 1 and 2 was an easy cake for me but Week 3 hinted me that you have to keep patience and this is not gonna end in a month. Problem set 4 proved the previous point like a boss and took quite some time to be solved. Problem Set 5 alone took a month because of two reasons. First, It was really tough for me and second because my exams are near so I can’t fully concentrate on it. But somehow I managed to get <strong>100/100</strong> in all problem sets. I also managed to solve <strong>hacker1</strong> but can’t do hacker series onwards.</p>
<h2 id="pause">Pause</h2>
<p>So, I left the course midway for few months because my exams are very near and I don’t want to mess it up. It was maybe November 2016 that time when I left and resumed it in March 2017. CS50 got changed. It moved from <strong>PHP to Python</strong> which is good for me because I have some experience in Python but it was not all that good because I got to know about things which I already know.</p>
<h2 id="week-6-10-into-the-web-aka-the_messi">Week 6-10: Into the Web aka {The_Messi}</h2>
<p>I call it <strong>The Messi</strong> because it is really a mess. Previously every week you only interact with “C” but from now on every week you got introduced to fully new technology. Week 6 and 7 has no problem sets so it was a big relief for me. I got introduced to how the internet works, TCP/IP and some web protocols which is necessary because I was going to dive into web technologies in upcoming weeks. I got introduced to <a href="https://en.wikipedia.org/wiki/Machine_learning">machine learning</a> too but couldn’t get much. In upcoming weeks I got to know about Python, Flask(for creating backend of a website), HTML, CSS and JavaScript. I got to know about <a href="https://en.wikipedia.org/wiki/Relational_database_management_system">RDBMS</a> using SQL which is quite nice. So all along it was quite a mess but it introduced me to a plethora of things which is good for my future projects.</p>
<h3 id="problem-set-6-8">Problem Set: 6-8</h3>
<p>Problem set 6 was based on basic python so that was easy and took 2-3 hours to complete. Problem set 7 was not hard, It was interesting. This was the first time I was going to build backend of a website. It took some time but it’s worth doing it. Problem set 8 was again a headache because it was really a mess. You have to understand a lot of things like - HTML, CSS, JavaScript, Python, Flask, SQL, etc and on the top of this, you have to also interact with an <a href="https://en.wikipedia.org/wiki/Application_programming_interface">API</a>. The answer was easy and short but the question was large and complex. You can’t solve a problem without understanding the question first. So it took a week for me to understand it completely. At last, I got 100/100 in all three.</p>
<h2 id="week-11-the-end-aka-the_last_lecture">Week 11: The End aka {The_last_lecture}</h2>
<p>After many rise and fall, I somehow reached the end. In this week there is nothing to learn but it made me realize that how I started with Scratch, all the way to C, Python, Javascript, etc and reached its end. It was the shortest video in comparison to other videos but has the most impact. It was quite emotional because CS50 is more family than an MOOC to me. A short video is also shown in the last about the whole journey of CS50 which seems quite nice. Finally, It was awesome.</p>
<h2 id="final-project">Final Project</h2>
<p>For my final project I have created a <a href="http://flask.pocoo.org">Flask</a> based web app which uses <a href="https://developer.github.com/v3">GitHub API v3</a> to plot your Github profile beautifully.</p>
<h4 id="demo">Demo</h4>
<p>You can try this web app here - <a href="https://stalkhub.amanroy.me/">https://stalkhub.amanroy.me/</a></p>
<p>It is deplyed on heroku. For more details read it <a href="http://amanroy.me/stalkhub/">here</a>.</p>
<p>Codes are on GitHub - <a href="https://github.com/aman-roy/StalkHub/">https://github.com/aman-roy/StalkHub/</a></p>
<p>Don’t forget to give it a star.</p>
<h2 id="gradebook">Gradebook</h2>
<p><img src="/assets/images/cs50/Aman_Gradebook_screenshot.png" alt="Gradebook_screenshot" /></p>
<h2 id="some-tips">Some Tips</h2>
<ol>
<li>Everyone is not same. You may understand some concepts late that doesn’t mean, you can’t understand it at all. Give some time to it. You will understand it for sure. Never leave it in mid way.</li>
<li>Try to write as much clean code as you can. It boosts your grade.</li>
<li>Connect to people in online groups. Question whenever you are stuck. Answer as many question as you can in group. Be an ACTIVE LERNER!</li>
</ol>
<h2 id="special-thanks">Special thanks</h2>
<ol>
<li><a href="http://cs.harvard.edu/malan/">David J. Malan</a></li>
<li><a href="https://twitter.com/zamylachan">Zamyla Chan</a></li>
<li><a href="https://www.facebook.com/douglaslloyd">Doug Lloyd</a></li>
<li><a href="https://www.facebook.com/kzidanee">Kareem Zidane</a></li>
</ol>
<h3 id="edit">Edit</h3>
<ul>
<li>Someone asked for the course link. Here it is <a href="https://www.edx.org/course/introduction-computer-science-harvardx-cs50x/">https://www.edx.org/course/introduction-computer-science-harvardx-cs50x/</a></li>
</ul>
<div class="breaker"></div>
<h1><center>This Was CS50.</center></h1>AmanroyHello, World!2017-02-21T11:00:00+00:002017-02-21T11:00:00+00:00http://amanroy.me/Hello,-World!<p>Hi,</p>
<p>This is going to be my first blog post on my own website. I titled it <b>“Hello, world!”</b> after thinking a lot. I finally came up with this title because I am a programmer and all the programmers out there are keeping there first blog post title <b>“Hello, World!”</b> too. So, I have to follow there rituals.</p>
<p>I am going to write a blog post twice a month because I want to try something new. I think sharing knowledge and experiences is a good thing. Writing blog is my new year resolution too but I am delaying it because my exams are going on.</p>
<p>I will mostly write about my experiences with technology and life. I will also write some random things which I really don’t know right now. I love coding very much. I wanna try DS, Algorithms and Machine learning too this year.</p>
<p>So, that’s all. See you around.</p>AmanroyHi,MP3 Downloader2017-02-01T10:00:00+00:002017-02-01T10:00:00+00:00http://amanroy.me/mp3-downloader<p><a href="https://github.com/aman-roy/mp3_downloader">Mp3-Downloader</a> is a simple terminal based python script which download songs by just entering songs name or youtube link of that song.</p>
<hr />
<p>What’s inside?</p>
<ul>
<li><a href="https://www.python.org">Python</a></li>
<li>Some python modules (urllib, re, etc)</li>
</ul>
<hr />
<h4 id="web-base-application-too">Web Base Application too!</h4>
<p>You can use web based mp3 downloader here.
<br />
<a href="http://mp3.amanroy.me">http://mp3.amanroy.me</a>
<br />
<br />
This terminal based script is ported into a web application using <a href="http://flask.pocoo.org">flask framework</a> and requests are processed using <a href="https://cloud.google.com/appengine/docs">google app engine</a>.</p>
<hr />
<center><b>Demo of mp3-downloader script</b></center>
<script type="text/javascript" src="https://asciinema.org/a/1c0zitgara99eq8zn85tv3orm.js" id="asciicast-1c0zitgara99eq8zn85tv3orm" async=""></script>
<hr />
<p>GitHub link is <a href="https://github.com/aman-roy/mp3_downloader">here</a>.
If you need some help, just <a href="https://github.com/aman-roy/mp3_downloader/issues">tell me</a>.</p>AmanroyMp3-Downloader is a simple terminal based python script which download songs by just entering songs name or youtube link of that song.