<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Shivam's Blog]]></title><description><![CDATA[Hey! I'm Shivam. I'm an award-winning Software Engineer &amp; a CS major with a background in Full Stack Mobile Engineering. More about me? https://goyalshivam.com/ it is. 🚀]]></description><link>https://blog.shyvum.in</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Apr 2026 16:32:33 GMT</lastBuildDate><atom:link href="https://blog.shyvum.in/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Interviewing Experience at Navi - SDE 1]]></title><description><![CDATA[The offer came via on-campus hiring at Thapar Institute, Patiala. Navi came to our campus in September 2021 to hire Fresh Graduates for SDE-1 roles.

Company 💪🏻
At Navi, our mission is to build financial services that are simple, accessible, and af...]]></description><link>https://blog.shyvum.in/interviewing-experience-at-navi-sde-1</link><guid isPermaLink="true">https://blog.shyvum.in/interviewing-experience-at-navi-sde-1</guid><category><![CDATA[Software Engineering]]></category><category><![CDATA[interview]]></category><category><![CDATA[job search]]></category><category><![CDATA[Experience ]]></category><category><![CDATA[Navi]]></category><dc:creator><![CDATA[Shivam Goyal]]></dc:creator><pubDate>Thu, 16 Jun 2022 13:20:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1652437852676/1s3gohB3O.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p>The offer came via on-campus hiring at Thapar Institute, Patiala. Navi came to our campus in September 2021 to hire Fresh Graduates for SDE-1 roles.</p>
</blockquote>
<h2 id="heading-company">Company 💪🏻</h2>
<p>At Navi, our mission is to build financial services that are simple, accessible, and affordable.</p>
<p>Navi is founded by Sachin Bansal (Co-Founder, Flipkart) &amp; Ankit Agarwal to build consumer-centric and technology-driven businesses in the BFSI (Banking, Financial Services &amp; Insurance) space.</p>
<p><strong>Company Profiles:</strong> <a target="_blank" href="https://navi.com/">Website</a> | <a target="_blank" href="https://www.linkedin.com/company/go-navi/">LinkedIn</a> | <a target="_blank" href="https://www.crunchbase.com/organization/bac-acquisition">Crunchbase</a> | <a target="_blank" href="https://www.instagram.com/naviappofficial/">Instagram</a></p>
<h2 id="heading-opening">Opening ⛳️</h2>
<ul>
<li><p><strong>Profile Offered:</strong> Software Development Engineer - 1</p>
</li>
<li><p><strong>Role Type:</strong> Full-Time Employment</p>
</li>
<li><p><strong>Eligible Batch:</strong> 2022 Graduating</p>
</li>
<li><p><strong>Eligible Degree:</strong> Bachelor of Engineering</p>
</li>
<li><p><strong>Eligible Branch:</strong> Computer Science</p>
</li>
<li><p><strong>CGPA Cut-off:</strong> None</p>
</li>
<li><p><strong>Minimum 10th/12th %:</strong> 60%</p>
</li>
</ul>
<h2 id="heading-job-description">Job Description 📑</h2>
<h3 id="heading-responsibilities">Responsibilities:</h3>
<ul>
<li><p>Work on the development backend systems of large product</p>
</li>
<li><p>Build reliable, secure, and performant backend systems</p>
</li>
<li><p>Drive test coverage and continuous delivery automation within the team</p>
</li>
<li><p>Mentor and provide feedback to teammates</p>
</li>
</ul>
<h3 id="heading-requirements">Requirements:</h3>
<ul>
<li><p>Strong computer science fundamentals</p>
</li>
<li><p>Good knowledge of the Java ecosystem</p>
</li>
<li><p>Can write code that is readable, maintainable, and performant</p>
</li>
<li><p>Know the importance of tests and how to approach writing different types of tests</p>
</li>
<li><p>Good understanding of relational databases, transactions, entity-relationship modeling</p>
</li>
<li><p>Comfortable writing multi-threaded programs</p>
</li>
</ul>
<h3 id="heading-bonus">Bonus:</h3>
<ul>
<li><p>Understanding of domain-driven design concepts like ubiquitous language, bounded contexts, aggregates, and domain events</p>
</li>
<li><p>Know how to use test-driven development as a design tool</p>
</li>
<li><p>Good intuition for the principles underlying object orientation, particularly encapsulation</p>
</li>
<li><p>Understand the importance of immutability and of reducing the state-space of objects</p>
</li>
<li><p>Seek to identify key underlying ideas and use those as building blocks before reaching for shiny new tools</p>
</li>
</ul>
<h2 id="heading-timeline">Timeline ⏰</h2>
<ul>
<li><p>September 21 - Applications Open</p>
</li>
<li><p>September 22 - Applications Closed</p>
</li>
<li><p>September 28 - Company Presentation &amp; Online Assessment</p>
</li>
<li><p>September 30 - Interviews &amp; Verbal Offer</p>
</li>
<li><p>May 10 - Written Offer Letter</p>
</li>
<li><p>May 23 - Day 1 at Navi</p>
</li>
</ul>
<h2 id="heading-recruitment-process">Recruitment Process 📈</h2>
<p>Let’s dive straight into the process step by step</p>
<ul>
<li><p>Application Submission</p>
</li>
<li><p>Company Presentation</p>
</li>
<li><p>Online Assessment</p>
</li>
<li><p>Resume Review &amp; Shortlisting</p>
</li>
<li><p>3 x Virtual Interviews</p>
</li>
<li><p>Offer Review &amp; Extend</p>
</li>
</ul>
<h2 id="heading-application-submission">Application Submission 📃</h2>
<p>We were provided with a Google Form from the Placement Cell to submit our resumes that can be forwarded to the organization alongside some basic identification and eligibility verification details.</p>
<h2 id="heading-company-presentation">Company Presentation 📽</h2>
<p>Navi organized an hour-long WebEx meeting for the participating candidates to explain and present the details of the role.</p>
<p>Presenters included people from Human Resources, Engineering, &amp; People Management. They majorly focused on describing the company and different businesses that Navi deals in, followed by details on the role, hiring process, and compensation.</p>
<p>A well-structured compensation breakup was also shown as part of the presentation.</p>
<h2 id="heading-online-assessment">Online Assessment 🧪</h2>
<p>Navi used <a target="_blank" href="https://doselect.com/">DoSelect</a> to conduct an initial online assessment to filter out candidates based on their scores and answering patterns.</p>
<p>The total time for the assessment was 120 minutes and had ~50 questions. These questions were divided into 4 sections.</p>
<ul>
<li><p>Section 1: Aptitude MCQs (20 Questions) (20 minutes)</p>
</li>
<li><p>Section 2: Maths MCQs (25 Questions) (20 minutes)</p>
</li>
<li><p>Section 3: Coding Level A (2 Questions) (50 minutes)</p>
</li>
<li><p>Section 4: Coding Level B (1 Question) (30 minutes)</p>
</li>
</ul>
<p>The time limit for the first 2 sections is very limited, so be quick while attempting those. For coding questions, the time was pretty enough and the level was LC Easy/Medium.</p>
<p>I was able to solve all coding questions and almost 95% of MCQs correctly.</p>
<h2 id="heading-resume-review-amp-shortlisting">Resume Review &amp; Shortlisting ♻️</h2>
<p>Based on the scores in Online Assessment &amp; the Resume submitted, they shortlisted 20 candidates out of 400 applications. I was part of this shortlisted batch.</p>
<p>These shortlisted candidates were scheduled for a Technical Interview on the next day.</p>
<h2 id="heading-3-x-virtual-interviews">3 x Virtual Interviews 👔</h2>
<p>Navi interviewed candidates virtually via Google Meet. All the candidates were interviewed on the same day.</p>
<h3 id="heading-round-1-technical">Round 1 - Technical</h3>
<p>My first interview was scheduled for 10 am in the morning with an SDE-3 from the hiring team. The agenda of this interview was around Problem Solving and Data Structures.</p>
<p>This round lasted 60 minutes and I was supposed to solve an algorithmic question on a Google Doc. The difficulty level was LC Medium.</p>
<p>Out of 20, only 3 people were shortlisted for Round 2.</p>
<h3 id="heading-round-2-technical">Round 2 - Technical</h3>
<p>The second interview was scheduled one hour after the first round with the Engineering Manager of the hiring team. The agenda of this interview was around Low-Level System Design, discussions about previous projects/internships, and miscellaneous technologies listed on my resume.</p>
<p>This round also lasted 60 minutes. For the LLD question, I was given Software Requirement over a Google Doc and I was supposed to write class definitions and describe what data structures to use to optimize the software while showcasing Low-Level Design knowledge.</p>
<p>Out of 3, only I was shortlisted for Round 3.</p>
<h3 id="heading-round-3-behavioural">Round 3 - Behavioural</h3>
<p>The third interview was scheduled for around 3 pm in the afternoon with a Senior Group Manager. The agenda of this interview was around culture fitment to single out candidates whose values, beliefs, and behavior fit in with Navi's culture.</p>
<p>This round lasted 30 minutes. The interview asked 5-6 behavioral questions around my previous work experience and my expectations from Navi.</p>
<h2 id="heading-offer-the-yay-moment">Offer! — the YaY moment! 🥳</h2>
<p>Within a couple of hours, the recruiter notified the placement cell that I've cleared the hiring process and they would like to extend an offer to me.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1655382703677/sfTZ1Ev5Y.gif" alt="cat-dancing.gif" class="image--center mx-auto" /></p>
<h2 id="heading-are-you-interviewing-herere-some-tips">Are you interviewing? Here’re some tips.</h2>
<h3 id="heading-before-interviews">Before Interviews</h3>
<ul>
<li><p>Go through all the resources provided by hiring teams.</p>
</li>
<li><p>Research about the company. Make sure you know their values.</p>
</li>
<li><p>Prepare answers to general questions beforehand.</p>
</li>
<li><p>Go through your resume. Make sure you know, what they know about you.</p>
</li>
</ul>
<h3 id="heading-during-interviews">During Interviews</h3>
<ul>
<li><p>Be on time. Join the call 5 minutes before the scheduled time.</p>
</li>
<li><p>Dress formally. Just because it’s virtual, doesn't mean it's casual.</p>
</li>
<li><p>Let the interviewer know your thought process. Keep talking.</p>
</li>
<li><p>Ask clarifying questions, and make use of what the interviewer gives you.</p>
</li>
</ul>
<h3 id="heading-after-interviews">After Interviews</h3>
<ul>
<li><p>Ask follow-up questions relevant to the job.</p>
</li>
<li><p>Ask the interviewer for honest feedback.</p>
</li>
<li><p>Give closing greetings to the interviewer.</p>
</li>
</ul>
<h2 id="heading-looking-for-resources-herere-some">Looking for resources? Here're some. 🚁</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=oQkxA18xevk">https://www.youtube.com/watch?v=oQkxA18xevk</a></div>
<p> </p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=B0PdIAkXAY0&amp;t=640s">https://www.youtube.com/watch?v=B0PdIAkXAY0&amp;t=640s</a></div>
<p> </p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=0163cssUxLA">https://www.youtube.com/watch?v=0163cssUxLA</a></div>
<p> </p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=q_Dug-JUHA0">https://www.youtube.com/watch?v=q_Dug-JUHA0</a></div>
]]></content:encoded></item><item><title><![CDATA[Getting Started with Tech for Beginners]]></title><description><![CDATA[Agenda?
A lot of people ask me, how to get started with tech. If you have been asking this to someone, this might be the answer.
Let me try to answer it by taking some relevant programming fields in context.
Options?
According to me, there are four m...]]></description><link>https://blog.shyvum.in/getting-started-with-tech-for-beginners</link><guid isPermaLink="true">https://blog.shyvum.in/getting-started-with-tech-for-beginners</guid><category><![CDATA[Beginner Developers]]></category><category><![CDATA[technology]]></category><category><![CDATA[General Advice]]></category><category><![CDATA[Roadmap]]></category><dc:creator><![CDATA[Shivam Goyal]]></dc:creator><pubDate>Sun, 10 Jan 2021 21:49:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1664099850198/I4qiflDEA.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-agenda">Agenda?</h2>
<p>A lot of people ask me, how to get started with tech. If you have been asking this to someone, this might be the answer.</p>
<p>Let me try to answer it by taking some relevant programming fields in context.</p>
<h2 id="heading-options">Options?</h2>
<p>According to me, there are four major programming fields that a beginner can start with,</p>
<ol>
<li>Data Structures &amp; Algorithms</li>
<li>Competitive Programming</li>
<li>Web / App Development</li>
<li>Machine Learning / Computer Vision</li>
</ol>
<p>Let’s talk about them descriptively one by one.</p>
<h2 id="heading-data-structures-andamp-algorithms">Data Structures &amp; Algorithms?</h2>
<p>An essential &amp; general starting point of everyone's programming journey is Data Structures &amp; Algorithms.</p>
<p>In Data Structures you learn about the syntax and possible ways of structuring your data in different forms while in Algorithms you get to know the hustle part of mental work where you write procedural steps to solve a specific problem.</p>
<p>There are plenty of resources available online for learning DSA, I would recommend to pick up a dedicated regular class or a course. There are various benefits of joining a program, and the most important ones are regularity &amp; mentor support.</p>
<h4 id="heading-relevant-resources">Relevant Resources:</h4>
<ul>
<li><a target="_blank" href="https://www.jomaclass.com/data-structures-and-algorithms">JomaClass</a> </li>
<li><a target="_blank" href="http://gomaster.in/">GoMaster</a> </li>
<li><a target="_blank" href="https://www.interviewbit.com/">InterviewBit</a> </li>
<li><a target="_blank" href="https://www.hackerrank.com/">HackerRank</a></li>
<li><a target="_blank" href="https://www.hackerearth.com/">HackerEarth</a></li>
</ul>
<h2 id="heading-competitive-programming">Competitive Programming?</h2>
<p>One of the branches of DSA comes out to be Competitive Programming where you have time &amp; space restrictions and need to solve a theoretical problem by writing optimized codes while using minimum resources and competing against 100s and 1000s of coders.</p>
<p>You can start with Competitive Coding right after you have gained knowledge of basic Data Structures. There are various platforms available online. I would recommend going with <a target="_blank" href="https://codeforces.com/">Codeforces</a> and <a target="_blank" href="https://codechef.com/">CodeChef</a>.</p>
<h4 id="heading-relevant-resources">Relevant Resources:</h4>
<ul>
<li><a target="_blank" href="https://clist.by/">CLIST</a></li>
<li><a target="_blank" href="https://www.youtube.com/channel/UCKuDLsO0Wwef53qdHPjbU2Q">William Lin</a></li>
<li><a target="_blank" href="https://g.co/kickstart">Google Kickstart</a></li>
</ul>
<h2 id="heading-web-app-development">Web / App Development?</h2>
<p>If you are interested in making applications, I would recommend starting with Web or App Development as it's the web and mobile apps with which you interact on a daily basis. More specifically start with Apps as they are in popular demand these days and I personally unlock my phone 100 times a day to dive into those.</p>
<p>You can choose any of the frameworks available online, there are tons of them. I use Flutter for App Development and ReactJS for Web Development. These are the prettiest framework I have worked with till now.</p>
<h4 id="heading-relevant-resources">Relevant Resources:</h4>
<ul>
<li>Web - <a target="_blank" href="freeCodeCamp.org">freeCodeCamp</a> </li>
<li>Web - <a target="_blank" href="https://courses.learncodeonline.in/learn/Full-Stack-MERN-Bootcamp">LearnCodeOnline</a></li>
<li>App - <a target="_blank" href="https://www.youtube.com/channel/UCFTM1FGjZSkoSPDZgtbp7hA">Pawan Kumar</a> </li>
<li>App - <a target="_blank" href="https://www.udacity.com/course/build-native-mobile-apps-with-flutter--ud905">Udacity</a></li>
</ul>
<h2 id="heading-machine-learning-computer-vision">Machine Learning / Computer Vision?</h2>
<p>Machine Learning is an intriguing field and really interesting to pursue as a career. But there are nearly no jobs available for freshers.</p>
<p>If you are in college, Machine Learning or Computer Vision might give you an upper hand in placements but might not get you placed all alone. I would recommend limiting Machine Learning to the extent you feel it's gonna add up to your career.</p>
<h4 id="heading-relevant-resources">Relevant Resources:</h4>
<ul>
<li><a target="_blank" href="https://www.udemy.com/course/machinelearning/">Machine Learning A-Z</a></li>
</ul>
<h2 id="heading-mantra-to-success">Mantra to success?</h2>
<p>Set your long term goals early in your career and short term goals as you go. Define them in such a way that your short-term goals adds up to a long-term goal. Similarly, your long-term goals add up to your life-goal.</p>
<p>Here's how goals could look like:</p>
<h4 id="heading-a-long-term-goal">A Long Term Goal</h4>
<p>Get a Software Engineer job at Google.</p>
<h4 id="heading-a-short-term-goal">A Short Term Goal</h4>
<p>To acquire a skill that would help you get an internship in the upcoming summer.</p>
<blockquote>
<p><strong>ProTip:</strong> Having prior experience in form of internships adds a bit of weight to your resume when applying for full-time roles.</p>
</blockquote>
<h2 id="heading-success">Success?</h2>
<p>Success is no accident. It is hard work, perseverance, learning, studying, sacrifice, and most of all, love of what you are doing or learning to do. ~ <a target="_blank" href="https://en.wikipedia.org/wiki/Pel%C3%A9">Pelé</a> </p>
]]></content:encoded></item><item><title><![CDATA[Interviewing Experience at Google - Application Engineering Intern]]></title><description><![CDATA[It was a cold winter night of November when I was scrolling through my LinkedIn and a mail popped up on my cell phone.
The subject said, "2021 Application Engineering Internship Opportunity with Google India!".
At first, I was like, "Ahh.. this seems...]]></description><link>https://blog.shyvum.in/interviewing-experience-at-google-application-engineering-intern</link><guid isPermaLink="true">https://blog.shyvum.in/interviewing-experience-at-google-application-engineering-intern</guid><category><![CDATA[Google]]></category><category><![CDATA[Interviews]]></category><category><![CDATA[internships]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[General Programming]]></category><dc:creator><![CDATA[Shivam Goyal]]></dc:creator><pubDate>Sun, 27 Dec 2020 17:06:16 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1609088332022/glsVhsEOm.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It was a cold winter night of November when I was scrolling through my LinkedIn and a mail popped up on my cell phone.</p>
<p>The subject said, "<strong>2021 Application Engineering Internship Opportunity with Google India!</strong>".</p>
<p>At first, I was like, "<strong>Ahh.. this seems interesting. Let’s give it a read.</strong>"</p>
<blockquote>
<p>Neither I had applied nor been referred to this role. It was just sheer luck that the recruiter found me interesting and decided to shoot me an email.</p>
</blockquote>
<h2 id="application-engineering-whats-that">Application Engineering? What’s that? 💼</h2>
<p>It was not the first time I was hearing the term <strong>Application Engineering</strong>, but my initial perspective about the role was a bit off. Like, everyone, I was applying only for SWE roles till now, never thought of going in the AE direction.</p>
<p>When I dug deeper into the role and read more about it, not only I found it <strong>more exciting</strong> than generic SWE roles, also I found it to be <strong>more aligned</strong> with <strong>my interests</strong> and <strong>my career perspective</strong>.</p>
<p>Application Engineering is more <strong>business-aligned</strong> and generally focused on building products for fellow <strong>Googlers</strong> rather than for public release.</p>
<h2 id="recruitment-process">Recruitment Process 📃</h2>
<p>Let’s dive straight into the process step by step</p>
<ul>
<li>Application Review &amp; Shortlisting</li>
<li>2 x Hangout Interviews</li>
<li>Hiring Committee (HC) Review</li>
<li>Offer Review &amp; Extend</li>
</ul>
<h2 id="application-review-and-shortlisting">Application Review &amp; Shortlisting 👀</h2>
<p>When I got the initial email to check my interest in the role, I was asked to fill an <strong>Interview Availability Form</strong>.</p>
<p>The form asked for the times when I’m available to take the interviews in a span of 10 days in the second week of December along with my preferred programming languages.</p>
<blockquote>
<p>I wasn’t shortlisted till this time. Interviews will only be scheduled if I’m shortlisted for further interaction based on feedback from hiring teams.</p>
</blockquote>
<p>Two days later, I got a mail saying I've been shortlisted for the interviews and mandatorily need to take part in an <strong>Interview Prep Session</strong>. The session took place in the next week.</p>
<h2 id="2-x-hangout-interview">2 x Hangout Interview 👔</h2>
<p>Following the Interview Prep Session, I got the invitations for the interviews.</p>
<p>The interviews were scheduled on the very first day of the availability I gave. Both the interviews were <strong>back to back</strong> with some rest between them. Along with the schedule, they shared the links to separate <strong>Interview Documents</strong>.</p>
<p>Both the interviews were approximately 1 hour each and were done via <strong>Google Meet</strong>.</p>
<h3 id="coding-interview">Coding Interview</h3>
<blockquote>
<p><strong>Result:</strong> Positive<br /><strong>Experience:</strong> Good</p>
</blockquote>
<h3 id="application-design-interview">Application Design Interview</h3>
<blockquote>
<p><strong>Result:</strong> Positive<br /><strong>Experience:</strong> Average</p>
</blockquote>
<h2 id="hiring-committee-hc-review">Hiring Committee (HC) Review 🕒</h2>
<p>A couple of days after the interviews, the recruiter emailed notifying me that I’ve done well in my interviews and they would be moving me to the next stage, <strong>Intern Hiring Committee Review</strong>.</p>
<blockquote>
<p>Here I was also asked to confirm my graduating year and send the latest copies of resume and academic transcripts.</p>
</blockquote>
<h2 id="offer-the-yay-moment">Offer! — the YaY moment! 🥳</h2>
<p>Around a week later, the recruiter notified me that I've cleared the hiring process and they would like to extend an internship offer to me.</p>
<blockquote>
<p>I was given 48 hours to accept the offer.</p>
</blockquote>
<h2 id="are-you-interviewing-herere-some-tips">Are you interviewing? Here’re some tips.</h2>
<h3 id="before-interviews">Before Interviews</h3>
<ul>
<li>Go through all the resources provided by hiring teams.</li>
<li>Research about the company. Make sure you know their values.</li>
<li>Prepare answers to general questions beforehand.</li>
<li>Go through your resume. Make sure you know, what they know about you.</li>
</ul>
<h3 id="during-interviews">During Interviews</h3>
<ul>
<li>Be on time. Join the call 5 minutes before the scheduled time.</li>
<li>Dress formally. Just because it’s virtual, doesn't mean it's casual.</li>
<li>Let the interviewer know your thought process. Keep talking.</li>
<li>Ask clarifying questions, and make use of what the interviewer gives you.</li>
</ul>
<h3 id="after-interviews">After Interviews</h3>
<ul>
<li>Ask follow-up questions relevant to the job.</li>
<li>Ask the interviewer for honest feedback.</li>
<li>Give closing greetings to the interviewer.</li>
</ul>
<h2 id="looking-for-resources-herere-some">Looking for resources? Here're some. 🚁</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=XKu_SEDAykw">https://www.youtube.com/watch?v=XKu_SEDAykw</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.interviewbit.com/google-interview-questions/">https://www.interviewbit.com/google-interview-questions/</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=0163cssUxLA">https://www.youtube.com/watch?v=0163cssUxLA</a></div>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.geeksforgeeks.org/top-10-system-design-interview-questions-and-answers/">https://www.geeksforgeeks.org/top-10-system-design-interview-questions-and-answers/</a></div>
]]></content:encoded></item><item><title><![CDATA[My Winning Experience in JPMorgan Chase’s CodeforGood 2020]]></title><description><![CDATA[❔ Intro to JPMC’s Code for Good
According to JPMorgan Chase & Co.,

Code for Good is a series of hackathons hosted in JPMorgan’s global technology centers. During this event, participants spend 12–24 hours with our employees, developing creative solu...]]></description><link>https://blog.shyvum.in/winning-experience-in-jpmorgan-chase-codeforgood-2020</link><guid isPermaLink="true">https://blog.shyvum.in/winning-experience-in-jpmorgan-chase-codeforgood-2020</guid><category><![CDATA[hiring]]></category><category><![CDATA[hackathon]]></category><category><![CDATA[education]]></category><category><![CDATA[2Articles1Week]]></category><dc:creator><![CDATA[Shivam Goyal]]></dc:creator><pubDate>Mon, 24 Aug 2020 09:32:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1603886447592/n3i_DwvIv.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="intro-to-jpmcs-code-for-good">❔ Intro to JPMC’s Code for Good</h2>
<h3 id="according-to-jpmorgan-chase-and-co">According to JPMorgan Chase &amp; Co.,</h3>
<blockquote>
<p><a target="_blank" href="https://careers.jpmorgan.com/US/en/students/programs/code-for-good">Code for Good</a> is a series of hackathons hosted in JPMorgan’s global technology centers. During this event, participants spend 12–24 hours with our employees, developing creative solutions to help nonprofits tackle real-world problems.</p>
<p>It’s the chance of a lifetime to demonstrate how technology can be one of the greatest tools for solving social problems around the world.</p>
</blockquote>
<h3 id="according-to-me">According to me,</h3>
<blockquote>
<p>It’s a platform for university students, industry experts, and NPOs, where all come together to use technology to build a product that can help in solving real-world problems, not the bigger ones, but putting up a foundation stone for the greater good.</p>
<p>Students get to learn from industry experts, and vice-versa. In the end, competent students are offered internships and FTE opportunities with the firm.</p>
</blockquote>
<h2 id="the-selection-process-to-code-for-good">👉 The Selection Process to Code for Good</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603913000553/vSjNtBgtr.png" alt="Selection Process" /></p>
<h2 id="the-problem-statement">📃 The Problem Statement</h2>
<p>Our problem statement was given by <a target="_blank" href="http://inqui-lab.org/">Inqui-lab Foundation</a> and was centered on developing a data collection and analytics solution.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603913104704/lomHEwxa9.jpeg" alt="Problem Statement" /></p>
<h2 id="presentation-from-inqui-lab-foundation">🎁 Presentation from Inqui-lab Foundation</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://docs.google.com/presentation/d/1ilW4imBMy_M88s_la9voB3WycjNSJXPAlCfzvy99Hbs">https://docs.google.com/presentation/d/1ilW4imBMy_M88s_la9voB3WycjNSJXPAlCfzvy99Hbs</a></div>
<h3 id="about-inqui-lab-foundation">About Inqui-lab Foundation</h3>
<p>Inqui-Lab aims to nurture the next generation as grassroot problem solvers who can contribute meaningfully to society. Their mission is to design platforms and interventions that transform student learning spaces into places of creativity, design, and innovation.</p>
<h2 id="the-solution">🎯 The Solution</h2>
<p>We created a Progressive Web Application (PWA) based on ReactJS to get the data filled-in using forms thereby making the data collection process easier. We also created different dashboards so as to see the data in an aggregated format and draw out conclusions.</p>
<p>The entire backend / APIs were created on NodeJS and the databases were on MongoDB.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603913128366/qHLPaZYiY.png" alt="Form Selection" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603913144042/cIRlU-Dpp.png" alt="Student Observation Form" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603913168932/F3n1CKCf5.png" alt="Mentor Observation Form" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603913177558/Hzu_dldkR.png" alt="Admin Portal" /></p>
<h2 id="data-flow-diagram">🔢 Data Flow Diagram</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603913267926/YzmMlClp2.png" alt="Data Flow Diagram" /></p>
<h2 id="tech-stack-used">💻 Tech Stack Used</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603913284649/XX55eoxSq.png" alt="Data Flow Diagram" /></p>
<h2 id="video-demonstration">📺 Video Demonstration</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=IwvphziZ3cM">https://www.youtube.com/watch?v=IwvphziZ3cM</a></div>
<h2 id="the-team">🙌 The Team</h2>
<p>My team titled <strong>#Team46</strong>, was a team of 5 members from different parts of the country. We worked through the challenge in a very collaborative manner and as a result, we’re able to win the hackathon at the end of the day.</p>
<p><a target="_blank" href="https://www.linkedin.com/in/shivamgoyal1899/">Shivam Goyal — Thapar Institute of Engineering &amp; Technology, Patiala</a><br /><a target="_blank" href="https://www.linkedin.com/in/ravengineer554/">Rahul Bera — Vellore Institute of Technology, Chennai</a><br /><a target="_blank" href="https://www.linkedin.com/in/parshwa-shah-580a2a131/">Parshwa Shah — Sardar Patel Institute of Technology, Mumbai</a><br /><a target="_blank" href="https://www.linkedin.com/in/jessiya-joy-03184b198/">Jessiya Joy — National Institute of Technology, Calicut</a><br /><a target="_blank" href="https://www.linkedin.com/in/aseem-khullar/">Aseem Khullar — Thapar Institute of Engineering &amp; Technology, Patiala</a>  </p>
<h2 id="the-mentors">👬 The Mentors</h2>
<p>There were two mentors who were assigned to our team for guiding us throughout the hackathon day regarding technical as well as non-technical aspects of the product, problem statement.</p>
<p>The mentors were also responsible for judging the team members individually as the individual score of every team member is a major factor while extending job opportunities to participating students.</p>
<p><a target="_blank" href="https://www.linkedin.com/in/sachin-bhade-b80b0619/">Sachin Bhade — Vice President — JPMorgan Chase | LinkedIn</a><br /><a target="_blank" href="https://www.linkedin.com/in/jagendra-deshmukh-48b64b165/">Jagendra Deshmukh — Associate — JPMorgan Chase &amp; Co. | LinkedIn</a> </p>
<h2 id="and-the-winners">🎉 And the Winners</h2>
<p>At 02:08 PM, on Monday 17th Aug, <strong>#Team46</strong> was announced as the winners for the Inqui-lab Foundation’s problem statement.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603913303239/RBGDbRriu.png" alt="Winners" /></p>
<h2 id="final-words">📩 Final Words</h2>
<p>I really don’t have words to express how it feels to be a winner in such a large scale hiring hackathon. The moment when winners were being announced, I was so worried &amp; nervous. But the fact that we won it finally was really a dream come true for me and my team. We were so shocked that we literally asked the organizers to announce the result for our PS once again. 😅</p>
<p>Overall, it was a great experience, collaborating with students across India and building a product that soon will be used to solve a real-world problem and in turn, would help lakhs of students to build their skills further.</p>
<p>Here, I would like to express my thanks and gratitude to Sachin and Jagendra as well. They stood with us for the entire day of the hackathon and motivated us to build the right product while keeping the environment as friendly as possible. Thanks again guys, It wouldn’t have been possible without you guys.</p>
<p>Although it was a virtual event and I personally missed the energy blasts and talking to tons of people like we do at in-person events, but the organizers really did a great job and made the hackathon as close to an in-person event as possible. All thanks to Anjana &amp; Mridula, you guys rock. 😉</p>
<h2 id="more-about-code-for-good">🔰 More about Code for Good</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://careers.jpmorgan.com/us/en/students/programs/code-for-good">https://careers.jpmorgan.com/us/en/students/programs/code-for-good</a></div>
]]></content:encoded></item><item><title><![CDATA[Building a Flutter AlertDialog in just 15 minutes]]></title><description><![CDATA[The AlertDialog is basically a Popup in Flutter. Whenever you want to create a floating box that is centered on the page, you can simply use an AlertDialog. The implementation of the same is very easy and has been provided in-built with Flutter SDK. ...]]></description><link>https://blog.shyvum.in/building-a-flutter-alertdialog-in-just-15-minutes</link><guid isPermaLink="true">https://blog.shyvum.in/building-a-flutter-alertdialog-in-just-15-minutes</guid><category><![CDATA[Flutter Examples]]></category><category><![CDATA[app development]]></category><category><![CDATA[2Articles1Week]]></category><category><![CDATA[components]]></category><dc:creator><![CDATA[Shivam Goyal]]></dc:creator><pubDate>Sun, 17 Nov 2019 18:20:58 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1731663363544/52df13e9-77c8-4a24-af8b-ccfc23eda2b1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The AlertDialog is basically a Popup in Flutter. Whenever you want to create a floating box that is centered on the page, you can simply use an AlertDialog. The implementation of the same is very easy and has been provided in-built with Flutter SDK. So, let's dive in… 👻</p>
<h3 id="heading-what-youll-build">What you’ll build?</h3>
<p>In this tutorial, you’ll build a mobile app featuring an AlertDialog / Popup in Flutter. The AlertDialog will have the following features:</p>
<ul>
<li><p>Animated loader GIF</p>
</li>
<li><p>Customized actions buttons</p>
</li>
<li><p>Curved Edges</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603910206273/6UtlgV3Fn.jpeg" alt="That’s exactly how our AlertDialog gonna look like" class="image--center mx-auto" /></p>
<p>This tutorial focuses on adding an AlertDialog to the Flutter app. Non-relevant concepts and code blocks are glossed over and are provided for you to simply copy and paste.</p>
<h3 id="heading-github-profile-shyvum">GitHub Profile | shyvum</h3>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/shyvum/">https://github.com/shyvum/</a></div>
<p> </p>
<h3 id="heading-setting-up-flutter-on-your-machine">Setting up Flutter on your machine</h3>
<p>The detailed steps to install Flutter on your personal computer &amp; getting started with Flutter is available in the following blog post</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://blog.goyalshivam.com/install-flutter-on-windows-and-mac">https://blog.goyalshivam.com/install-flutter-on-windows-and-mac</a></div>
<p> </p>
<h3 id="heading-alertdialog-constructor">AlertDialog constructor</h3>
<pre><code class="lang-dart"><span class="hljs-keyword">const</span> AlertDialog({
    Key key,
    Widget title,
    EdgeInsetsGeometry titlePadding,
    TextStyle titleTextStyle,
    Widget content,
    EdgeInsetsGeometry contentPadding: <span class="hljs-keyword">const</span> EdgeInsets.fromLTRB(<span class="hljs-number">24.0</span>, <span class="hljs-number">20.0</span>, <span class="hljs-number">24.0</span>, <span class="hljs-number">24.0</span>),
    TextStyle contentTextStyle,
    <span class="hljs-built_in">List</span>&lt;Widget&gt; actions,
    Color backgroundColor,
    <span class="hljs-built_in">double</span> elevation,
    <span class="hljs-built_in">String</span> semanticLabel,
    ShapeBorder shape
})
</code></pre>
<h3 id="heading-downloading-assets">Downloading Assets</h3>
<p>Download the GIF by right-clicking, and saving it as <code>listening.gif</code> at <code>/{%PROJECTROOT%}/assets/images/listening.gif</code></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603911489976/uaSWHesIV.gif" alt class="image--center mx-auto" /></p>
<blockquote>
<p>Credits: <a target="_blank" href="https://in.pinterest.com/pin/643662971717965351/">Bendt on Pinterest</a></p>
</blockquote>
<h3 id="heading-importing-assets">Importing Assets</h3>
<p>Import the GIF to your project by adding the file path to your <code>pubspec.yaml</code> file.</p>
<pre><code class="lang-yaml"><span class="hljs-string">...</span>
<span class="hljs-attr">flutter:</span>
  <span class="hljs-attr">uses-material-design:</span> <span class="hljs-literal">true</span>
  <span class="hljs-attr">assets:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">assets/images/listening.gif</span>
<span class="hljs-string">...</span>
</code></pre>
<h3 id="heading-putting-code-in-action">Putting Code in action</h3>
<p>Create a file named <code>voicePayDialog.dart</code> in the same directory as of your <code>main.dart</code> file and amend the file with the following code:</p>
<pre><code class="lang-dart"><span class="hljs-keyword">import</span> <span class="hljs-string">'package:flutter/material.dart'</span>;

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">VoicePay</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">StatefulWidget</span> </span>{
  <span class="hljs-meta">@override</span>
  _VoicePayState createState() =&gt; _VoicePayState();
}

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">_VoicePayState</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">State</span>&lt;<span class="hljs-title">VoicePay</span>&gt; </span>{

  <span class="hljs-meta">@override</span>
  Widget build(BuildContext context) {
    <span class="hljs-keyword">return</span> AlertDialog(
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.all(
          Radius.circular(<span class="hljs-number">25</span>),
        ),
      ),
      title: Text(
        <span class="hljs-string">'VoicePay'</span>,
        textAlign: TextAlign.center,
        style: TextStyle(fontWeight: FontWeight.w700, fontSize: <span class="hljs-number">25.0</span>),
      ),
      content: Column(
        mainAxisSize: MainAxisSize.min,
        mainAxisAlignment: MainAxisAlignment.end,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: &lt;Widget&gt;[
          Image.asset(<span class="hljs-string">'assets/images/listening.gif'</span>),
          SizedBox(height: <span class="hljs-number">10.0</span>),
          Container(
            alignment: Alignment.center,
            height: <span class="hljs-number">45.0</span>,
            child: Text(
              <span class="hljs-string">'Tap on mic to VoicePay'</span>,
              style: TextStyle(fontSize: <span class="hljs-number">20.0</span>),
              textAlign: TextAlign.center,
            ),
          ),
          SizedBox(height: <span class="hljs-number">30.0</span>),
          Row(
            mainAxisSize: MainAxisSize.max,
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: &lt;Widget&gt;[
              IconButton(
                icon: Icon(Icons.keyboard),
                onPressed: () {},
              ),
              IconButton(
                icon: Icon(Icons.mic),
                onPressed: () {},
              ),
              IconButton(
                icon: Icon(Icons.translate),
                onPressed: () {},
              ),
            ],
          ),
        ],
      ),
    );
  }
}
</code></pre>
<p>To show the AlertDialog / Popup add the following code to <code>onPressed</code> or <code>onTap</code> parameter of any button in your <code>main.dart</code> file:</p>
<pre><code class="lang-dart">onPressed: () {
  showDialog(
    context: context,
    builder: (BuildContext context) {
      <span class="hljs-keyword">return</span> VoicePay();
    },
  );
},
</code></pre>
<blockquote>
<p>Remember to import <code>voicePayDialog.dart</code> in <code>main.dart</code></p>
</blockquote>
<h3 id="heading-building-amp-running-the-application">Building &amp; running the application</h3>
<ul>
<li><p>Connect your Emulator or physical Android device to test the application.</p>
</li>
<li><p>Click on Build &amp; Run.</p>
</li>
<li><p>And Boooom 🧨, your app is ready to launch.</p>
</li>
</ul>
<h3 id="heading-congratulations">Congratulations!</h3>
<p>You have completed this tutorial and have built a Flutter app with an AlertDialog! Also, in the meantime, you integrated GIFs in the App.</p>
]]></content:encoded></item><item><title><![CDATA[Understanding Version Control Systems: GitHub Simplified with SourceTree]]></title><description><![CDATA[What is a Version Control System?
Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of ...]]></description><link>https://blog.shyvum.in/understanding-version-control-systems</link><guid isPermaLink="true">https://blog.shyvum.in/understanding-version-control-systems</guid><category><![CDATA[2Articles1Week]]></category><category><![CDATA[Git]]></category><category><![CDATA[version control]]></category><dc:creator><![CDATA[Shivam Goyal]]></dc:creator><pubDate>Sat, 07 Sep 2019 19:40:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1731663965159/f5ea4269-432a-4557-90ae-3d0cc78672ac.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-a-version-control-system">What is a Version Control System?</h2>
<p>Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.</p>
<p>In simple words, Version Control enables your code to live long by logging the state continuously, in an easily accessible format.</p>
<h2 id="heading-do-we-developers-really-need-vcs">Do we developers really need VCS?</h2>
<p>Having a VCS linked to your project is not a mandatory feature, but surely is a recommended one.</p>
<p>Having a VCS makes it easy to track '<strong>who developed what</strong>' when the project is being developed on multiple devices simultaneously, by multiple developers.</p>
<p>While it is possible to develop software without using any version control, doing so subjects the project to a huge risk that no professional team would be advised to accept. So the question is not whether to use version control but <strong>which version control system to use</strong>.</p>
<h2 id="heading-which-version-control-is-best-for-you">Which Version Control is best for you?</h2>
<p>There are plenty of choices available in the market including:</p>
<ol>
<li>Git</li>
<li>Mercurial</li>
<li>SVN</li>
<li>CVS</li>
</ol>
<p>The industry’s most used VCS is <strong>Git</strong> and hence is the most recommended one.Here, we will only be talking about Git.</p>
<h2 id="heading-pros-amp-cons-of-git-version-control">Pros &amp; Cons of Git Version Control</h2>
<h3 id="heading-pros-of-using-git">Pros of using Git</h3>
<p>It’s exactly why to pick Git over others.</p>
<ul>
<li>Distributed fault-tolerant network architecture</li>
<li>Optimized for fast commits and checkouts</li>
<li>Non-destructive updates through the use of an immutable log</li>
</ul>
<h3 id="heading-cons-of-using-git">Cons of using Git</h3>
<p>Nothing is perfect, hence is Git.</p>
<ul>
<li>Weak support for large binary files</li>
<li>Very large repositories with extensive history can slow down interactions</li>
<li>Learning curve and un-intuitive commands</li>
</ul>
<h2 id="heading-setting-up-git">Setting up Git</h2>
<p>Now, it’s time to set up Git on your system.</p>
<p>There are plenty of ways to start with, but we will be using a <strong>VCS</strong> client called <strong>SourceTree</strong> as it’s the most prevailing VCS client in the tech industry.</p>
<h3 id="heading-reasons-for-choosing-sourcetree">Reasons for choosing SourceTree</h3>
<p>There are five major reasons for choosing SourceTree over Command-Line or any other Git client.</p>
<ol>
<li><strong>Branch management</strong><br /> Managing branches in Sourcetree is easy. It enables you to switch working copies with a single click. It also tells you how far ahead or behind you are to the version in the repository, and alerts you to push or pull. Know where you are with visual branch management.</li>
<li><strong>Working Copy</strong><br /> Using the command line can sometimes feel like you are working in the dark. The ‘Working Copy’ section shows the difference between your local copy and the version in the Git repository. This gives you a ‘real-time’ view of your local files, so you can see exactly what you have changed.</li>
<li><strong>Branch History</strong><br /> A huge part of the SourceTree interface is History. This section displays the full history of the current branch. Each commit and file change is displayed and accessible, providing a very powerful tool for version control. This alone is a huge benefit for projects which are worked on regularly by multiple developers.</li>
<li><strong>GitFlow</strong><br /> One feature I make use of is GitFlow. Having 6+ developers working on one set of code at once can get complicated. GitFlow adds a structured process to your workflow, which ensures that parallel code changes are completed without any hiccups, and it’s a two-click setup! I have seen a huge reduction in merge conflicts thanks to GitFlow.</li>
<li><strong>It’s Free</strong><br />  It doesn’t cost a thing to download or use SourceTree, great huh!?</li>
</ol>
<h3 id="heading-installing-sourcetree">Installing SourceTree</h3>
<ul>
<li>Go to the  <a target="_blank" href="https://sourcetreeapp.com">Sourcetree website</a> and click the download button.</li>
<li>From the ZIP file you download, click the application file (EXE for Windows or DMG for Mac) to download.</li>
<li>After you install, you’ll have to agree to the Atlassian Customer Agreement and hit <strong>Continue</strong>.</li>
<li>You need an Atlassian account to use Sourcetree. When you get to this screen, click either <strong>Use an existing account</strong> or <strong>Go to My Atlassian</strong> and follow the prompts to <a target="_blank" href="https://id.atlassian.com/signup">create a new account</a>. Once you’ve got an account, you’ll be able to log in with <strong>Use an existing account</strong>.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603914398607/8Q7NmB6IF.png" alt="Logging in to SourceTree" /></p>
<ul>
<li>If you want to connect to a remote hosting service, use the default options as you enter your Bitbucket or GitHub credentials. If you can’t continue without generating an SSH key, select <strong>HTTPS</strong> to continue or see <a target="_blank" href="https://confluence.atlassian.com/x/X4FmKw">Set up an SSH key</a> for more details about setting up SSH with Sourcetree.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603914420972/VLdB4bvuH.png" alt="Connecting extra accounts" /></p>
<ul>
<li>Follow the prompts until you’re done with the setup. If you aren’t ready to clone a repository, click <strong>Skip Setup</strong>.</li>
</ul>
<h3 id="heading-connecting-to-github">Connecting to GitHub</h3>
<ul>
<li>Firstly, <strong>sign up</strong> on GitHub, if you already don’t have a GitHub account.</li>
</ul>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/join">https://github.com/join</a></div>
<ul>
<li>Switch to SourceTree. Click the gear icon and select <strong>Accounts.</strong></li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603914460578/-ba8nB1Rr.png" alt="Add GitHub account" /></p>
<ul>
<li>Click <strong>Add</strong> from the <strong>Accounts</strong> tab.</li>
<li>After you select a <strong>GitHub</strong> as Host, enter your hosting details. Keep the default <strong>Auth Type</strong> and click <strong>Connect Account</strong> to enter your credentials.</li>
<li>When you enter your account details, you can choose whether you prefer to connect with HTTPS or SSH. Choose <strong>HTTPS</strong> for now.</li>
<li>An authentication window will open in your browser. Login with your GitHub Credentials and grant permission.</li>
</ul>
<p><strong>Hola…!!! 🙌</strong> Your Github account is logged into SourceTree and you are good to go.</p>
<h2 id="heading-breakfast-lunch-dinner-commands">Breakfast + Lunch + Dinner Commands</h2>
<p>These are the commands which are highly used in each and every project.</p>
<ul>
<li><strong>git init </strong><br />Create empty Git repo in the specified directory. Run with no arguments to initialize the current directory as a git repository</li>
<li><strong>git add </strong><br />Stage all changes in <code>&lt;directory&gt;</code> for the next commit. Replace <code>&lt;directory&gt;</code> with a <code>&lt;file&gt;</code> to change a specific file.</li>
<li><strong>git commit -m "<code>&lt;message&gt;</code>"</strong><br />Commit the staged snapshot, but instead of launching a text editor, use <code>&lt;message&gt;</code> as the commit message.</li>
<li><strong>git push <code>&lt;remote&gt;</code> <code>&lt;branch&gt;</code></strong><br />Push the branch to <code>&lt;remote&gt;</code>, along with necessary commits and objects. Creates named branch in the remote repo if it doesn’t exist.</li>
<li><strong>git pull </strong><br />Fetch the specified remote’s copy of the current branch and immediately merge it into the local copy.</li>
<li><strong>git clone <code>&lt;repo&gt;</code></strong><br />Clone repo located at onto local machine. The original repo can be located on the local filesystem or on a remote machine via HTTP or SSH.</li>
<li><strong>git status</strong><br />List which files are staged, unstaged, and untracked.</li>
<li><strong>git log</strong><br />Display the entire commit history using the default format. For customization see additional options.</li>
<li><strong>git diff</strong><br />Show unstaged changes between your index and working directory.</li>
</ul>
<h2 id="heading-poweruser-tips">PowerUser Tips</h2>
<p>Here are the tips to make the best use of Git with your projects.</p>
<h3 id="heading-sourcetree-dark-mode">SourceTree Dark Mode</h3>
<p>Enable Dark Theme for SourceTree in <strong>Tools &gt;&gt; Options.</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603914636535/US6y9oQMi.png" alt="SourceTree Dark Mode" /></p>
<h3 id="heading-push-with-commit">Push with Commit</h3>
<p>Tick the checkbox against <strong>‘Push changes immediately…’</strong> to make sure your changes are updated on the <strong>remote</strong> repository as soon as you commit the change to the local copy of repository.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603914658433/t4wdEUKvD.png" alt="Push with Commit" /></p>
<h3 id="heading-sourcetree-quickaccess-menu">SourceTree QuickAccess Menu</h3>
<p>Use the QuickAccess menu to access frequently used features easily.</p>
<ul>
<li><strong>Terminal</strong> to open Terminal directly at the repository directory</li>
<li><strong>Remote</strong> to open the remote repository in the browser</li>
<li><strong>Explorer</strong> to open the local repository in the File Explorer</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603914675119/5IvJEglQv.png" alt="QuickAccess" /></p>
<h3 id="heading-faster-repository-search"><strong>Faster Repository Search</strong></h3>
<ul>
<li>Press <strong>Ctrl + B</strong> on your keyboard to toggle Bookmarks Sidebar.</li>
<li>Type your search query straight away.</li>
<li>Hit <strong>ENTER</strong> to open the Working Copy of repo in <strong>SourceTree</strong>.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603914690721/0Wn7n2XhF.png" alt="Faster Repository Search" /></p>
<h3 id="heading-git-cheatsheethttpswwwatlassiancomdamjcr8132028b-024f-4b6b-953e-e68fcce0c5faatlassian-git-cheatsheetpdf"><a target="_blank" href="https://www.atlassian.com/dam/jcr:8132028b-024f-4b6b-953e-e68fcce0c5fa/atlassian-git-cheatsheet.pdf">Git CheatSheet</a></h3>
<h3 id="heading-sourcetree-shortcutshttpskapelicomcheatsheetssourcetreedocsetcontentsresourcesdocumentsindex"><a target="_blank" href="https://kapeli.com/cheat_sheets/Sourcetree.docset/Contents/Resources/Documents/index">SourceTree Shortcuts</a></h3>
]]></content:encoded></item><item><title><![CDATA[Building Flutter PullToRefresh in just 15 minutes]]></title><description><![CDATA[The pull-to-refresh pattern lets a user pull down on a list of data using touch in order to retrieve more data. The "Pull-to-refresh" gesture was first introduced by Loren Brichter in the Tweetie app and in no time it became so popular that countless...]]></description><link>https://blog.shyvum.in/building-flutter-pulltorefresh-in-just-15-minutes</link><guid isPermaLink="true">https://blog.shyvum.in/building-flutter-pulltorefresh-in-just-15-minutes</guid><category><![CDATA[Flutter Examples]]></category><category><![CDATA[2Articles1Week]]></category><category><![CDATA[components]]></category><dc:creator><![CDATA[Shivam Goyal]]></dc:creator><pubDate>Wed, 17 Jul 2019 20:15:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1731664268373/ed8d0932-5c92-4f96-afbb-487a4f16da03.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The pull-to-refresh pattern lets a user pull down on a list of data using touch in order to retrieve more data. The "Pull-to-refresh" gesture was first introduced by Loren Brichter in the Tweetie app and in no time it became so popular that countless apps adopted this gesture. Today “pull-to-refresh” feature is a natural part of many popular apps, including Twitter, Gmail, Tweetbot, and others.</p>
<h3 id="heading-what-youll-build">What you’ll build?</h3>
<p>In this tutorial, you’ll build a mobile app featuring a PullToRefresh gesture using the Flutter SDK. Your app will:</p>
<ul>
<li><p>Display a dynamic list with a random number of items</p>
</li>
<li><p>Each time you <strong>PullToRefresh</strong> the no of items will change in the list</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603916440302/FMHnUCxzQ.png" alt="That’s how our PullToRefresh gonna work" class="image--center mx-auto" /></p>
<p>This tutorial focuses on adding a PullToRefresh gesture to a Flutter app. Non-relevant concepts and code blocks are glossed over and are provided for you to simply copy and paste.</p>
<h3 id="heading-github-repository-shyvum">Github Repository | shyvum</h3>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/shyvum/PullToRefresh">https://github.com/shyvum/PullToRefresh</a></div>
<p> </p>
<h3 id="heading-widget-in-focus-refreshindicator">Widget In Focus | RefreshIndicator</h3>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=ORApMlzwMdM">https://www.youtube.com/watch?v=ORApMlzwMdM</a></div>
<p> </p>
<h3 id="heading-setting-up-flutter-on-your-machine">Setting up Flutter on your machine</h3>
<p>The detailed steps to install Flutter on your personal computer &amp; getting started with Flutter is available in the following blog</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://blog.goyalshivam.com/install-flutter-on-windows-and-mac">https://blog.goyalshivam.com/install-flutter-on-windows-and-mac</a></div>
<p> </p>
<h3 id="heading-component-syntax">Component Syntax</h3>
<p>The basic format of PullToRefresh gesture looks like the one below:</p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="317eb92b5539c629babec53298e11e20"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a href="https://gist.github.com/shyvum/317eb92b5539c629babec53298e11e20" class="embed-card">https://gist.github.com/shyvum/317eb92b5539c629babec53298e11e20</a></div><p> </p>
<h3 id="heading-implementation">Implementation</h3>
<p>The most generic way to implement PullToRefresh is as follows:</p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="53ed7ef36b745856ec39fa2411fbfa65"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a href="https://gist.github.com/shyvum/53ed7ef36b745856ec39fa2411fbfa65" class="embed-card">https://gist.github.com/shyvum/53ed7ef36b745856ec39fa2411fbfa65</a></div><p> </p>
<h3 id="heading-importing-dart-libraries-to-maindart-file">Importing dart libraries to main.dart file</h3>
<p>Import <strong>dart:async</strong> &amp; <strong>dart:math</strong> libraries to your main.dart file by adding the following line at the starting of the file:</p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="5fbfd9e0b28c8d045443d1928658c0c4"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a href="https://gist.github.com/shyvum/5fbfd9e0b28c8d045443d1928658c0c4" class="embed-card">https://gist.github.com/shyvum/5fbfd9e0b28c8d045443d1928658c0c4</a></div><p> </p>
<h3 id="heading-putting-code-in-action">Putting Code in action</h3>
<p>Amend your main.dart file as per the following code:</p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="49de5b5f62da49ca15fb0836edb094ef"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a href="https://gist.github.com/shyvum/49de5b5f62da49ca15fb0836edb094ef" class="embed-card">https://gist.github.com/shyvum/49de5b5f62da49ca15fb0836edb094ef</a></div><p> </p>
<h3 id="heading-building-amp-running-the-application">Building &amp; running the application</h3>
<ul>
<li><p>Connect your Emulator or physical Android device to test the application.</p>
</li>
<li><p>Click on Build &amp; Run.</p>
</li>
<li><p>And Boooom 🧨, your app is ready. The final build would look like the below illustration.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603916281069/GyeRiHnQ1.gif" alt="The final output of the implementation" class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Building a Flutter DateTime Picker in just 15 minutes]]></title><description><![CDATA[With the Flutter DateTime Picker plugin, you can add date & time pickers to your native application. The plugin’s interface is inspired by the iOS Cupertino style menu.
What you’ll build?
In this tutorial, you’ll build a mobile app featuring a DateTi...]]></description><link>https://blog.shyvum.in/building-a-flutter-datetime-picker-in-just-15-minutes</link><guid isPermaLink="true">https://blog.shyvum.in/building-a-flutter-datetime-picker-in-just-15-minutes</guid><category><![CDATA[Flutter Examples]]></category><category><![CDATA[app development]]></category><category><![CDATA[2Articles1Week]]></category><dc:creator><![CDATA[Shivam Goyal]]></dc:creator><pubDate>Tue, 16 Jul 2019 19:00:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1731664028255/a48d2e9f-8b62-4e6f-ac6e-69530b6ee68c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With the <a target="_blank" href="https://pub.dev/packages/flutter_datetime_picker">Flutter DateTime Picker plugin</a>, you can add date &amp; time pickers to your native application. The plugin’s interface is inspired by the iOS Cupertino style menu.</p>
<h3 id="heading-what-youll-build">What you’ll build?</h3>
<p>In this tutorial, you’ll build a mobile app featuring a DateTime Picker using the Flutter SDK. Your app will:</p>
<ul>
<li><p>Display separate Date &amp; Time Pickers with a minimalistic interface</p>
</li>
<li><p>Display the selected data as outputs to console</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603911767048/jMnptB2_f.png" alt="That’s how our DateTime Picker gonna look" class="image--center mx-auto" /></p>
<p>This tutorial focuses on adding a DateTime Picker to a Flutter app. Non-relevant concepts and code blocks are glossed over and are provided for you to simply copy and paste.</p>
<h3 id="heading-github-repository-shivamgoyal1899">Github Repository | ShivamGoyal1899</h3>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://github.com/shyvum/DateTimePicker">https://github.com/shyvum/DateTimePicker</a></div>
<p> </p>
<h3 id="heading-package-used-flutterdatetimepicker">Package Used | flutter_datetime_picker</h3>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://pub.dev/packages/flutter_datetime_picker">https://pub.dev/packages/flutter_datetime_picker</a></div>
<p> </p>
<h3 id="heading-setting-up-flutter-on-your-machine">Setting up Flutter on your machine</h3>
<p>The detailed steps to install Flutter on your personal computer &amp; getting started with Flutter is available in the following blog</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://blog.goyalshivam.com/install-flutter-on-windows-and-mac">https://blog.goyalshivam.com/install-flutter-on-windows-and-mac</a></div>
<p> </p>
<h3 id="heading-component-syntax">Component Syntax</h3>
<p>The basic format of a DateTime Picker looks like the one below:</p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="a9c940d27e1f7e9f3ab00d11a4694576"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a href="https://gist.github.com/shyvum/a9c940d27e1f7e9f3ab00d11a4694576" class="embed-card">https://gist.github.com/shyvum/a9c940d27e1f7e9f3ab00d11a4694576</a></div><p> </p>
<h3 id="heading-adding-datetime-picker-plugin-as-a-dependency">Adding DateTime Picker plugin as a dependency</h3>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="c42e9a1293c7b990cc55068d9b3127b8"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a href="https://gist.github.com/shyvum/c42e9a1293c7b990cc55068d9b3127b8" class="embed-card">https://gist.github.com/shyvum/c42e9a1293c7b990cc55068d9b3127b8</a></div><p> </p>
<p>Adding the additional capability to a Flutter app is easy using <a target="_blank" href="https://pub.dev/flutter">Pub packages</a>. In this tutorial, you introduce the <a target="_blank" href="https://pub.dev/packages/flutter_datetime_picker">DateTime Picker plugin</a> by adding a single line to the <code>pubspec.yaml</code> file.</p>
<h3 id="heading-importing-plugin-to-maindart-file">Importing plugin to main.dart file</h3>
<p>Import <strong>flutter_datetime_picker</strong> dependency to your main.dart file by adding the following line at the starting of the file:</p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="eee11d94ebfafab8bef2001b19eb5332"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a href="https://gist.github.com/shyvum/eee11d94ebfafab8bef2001b19eb5332" class="embed-card">https://gist.github.com/shyvum/eee11d94ebfafab8bef2001b19eb5332</a></div><p> </p>
<h3 id="heading-putting-code-in-action">Putting Code in action</h3>
<p>Amend your main.dart file as per the following code:</p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="2200371794b2d5cf1bc684023a947b02"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a href="https://gist.github.com/shyvum/2200371794b2d5cf1bc684023a947b02" class="embed-card">https://gist.github.com/shyvum/2200371794b2d5cf1bc684023a947b02</a></div><p> </p>
<h3 id="heading-building-amp-running-the-application">Building &amp; running the application</h3>
<ul>
<li><p>Connect your Emulator or physical Android device to test the application.</p>
</li>
<li><p>Click on Build &amp; Run.</p>
</li>
<li><p>And Boooom, your app is ready. The final build would look like the below illustration.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1603912114480/nKgmksjeq.gif" alt="The final output of the implementation" class="image--center mx-auto" /></p>
<h3 id="heading-customization-options">Customization Options</h3>
<p>There are three functional variations of the plugin available as follows:</p>
<ul>
<li><p>Solo DatePicker</p>
</li>
<li><p>Solo TimePicker</p>
</li>
<li><p>Dual DateTimePicker</p>
</li>
</ul>
<h3 id="heading-language-options">Language Options</h3>
<p>There are various language options available to implement the plugin for international use. For changing the language of the component amend the following with preferred <strong>LocaleType</strong>.</p>
<pre><code class="lang-plaintext">locale: LocaleType.en
</code></pre>
<ul>
<li><p>English(en)</p>
</li>
<li><p>Persian(fa)</p>
</li>
<li><p>Chinese(zh)</p>
</li>
<li><p>Dutch(nl)</p>
</li>
<li><p>Russian(ru)</p>
</li>
<li><p>Italian(it)</p>
</li>
<li><p>French(fr)</p>
</li>
<li><p>Spanish(es)</p>
</li>
<li><p>Polish (pl)</p>
</li>
<li><p>Portuguese(pt)</p>
</li>
<li><p>Korean(ko)</p>
</li>
<li><p>Arabic(ar)</p>
</li>
<li><p>Turkish(tr)</p>
</li>
<li><p>Japanese(jp)</p>
</li>
<li><p>German(de)</p>
</li>
<li><p>Danish(da)</p>
</li>
<li><p>Bengali(bn)</p>
</li>
<li><p>Vietnamese(vi)</p>
</li>
<li><p>Armenian(hy)</p>
</li>
</ul>
<h3 id="heading-further-customizations">Further Customizations</h3>
<p>If you want to customize your own style of date time picker, there is a class called CommonPickerModel, every type of date time picker is extended from this class, you can refer to other picker models (eg. DatePickerModel), and write your custom one, then pass this model to showPicker method, so that your own date time picker will appear, it’s easy, and will perfectly meet your demand.</p>
<p><strong>How to customize your own picker model:</strong></p>
<div class="gist-block embed-wrapper" data-gist-show-loading="false" data-id="441c080a6ef7880b966e9ecdcddda28a"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a href="https://gist.github.com/shyvum/441c080a6ef7880b966e9ecdcddda28a" class="embed-card">https://gist.github.com/shyvum/441c080a6ef7880b966e9ecdcddda28a</a></div>]]></content:encoded></item><item><title><![CDATA[How to install Flutter on Mac & Windows]]></title><description><![CDATA[In this post, we’ll have an overview of Flutter, the latest buzz in the App Development market. Flutter is gaining popularity faster than any other framework. Some say it is Google’s answer to Facebook’s React Native, but that debate is for later. Le...]]></description><link>https://blog.shyvum.in/install-flutter-on-windows-and-mac</link><guid isPermaLink="true">https://blog.shyvum.in/install-flutter-on-windows-and-mac</guid><category><![CDATA[Flutter Examples]]></category><category><![CDATA[guide]]></category><category><![CDATA[app development]]></category><category><![CDATA[2Articles1Week]]></category><dc:creator><![CDATA[Shivam Goyal]]></dc:creator><pubDate>Mon, 17 Jun 2019 17:59:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1731664009836/8d2cfe32-b6eb-4a7c-bef7-bdeaa0e16768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this post, we’ll have an overview of Flutter, the latest buzz in the App Development market. Flutter is gaining popularity faster than any other framework. Some say it is <strong>Google’s answer to Facebook’s React Native</strong>, but that debate is for later. Let’s learn the basics of Flutter and how to start using it.</p>
<h2 id="heading-what-is-flutter">What is Flutter?</h2>
<p>Flutter is Google’s portable UI toolkit for crafting high-quality native experiences for mobile, web, and desktop in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.</p>
<h2 id="heading-what-does-flutter-do">What does Flutter do?</h2>
<p>For users, Flutter makes beautiful app UIs come to life.</p>
<p>For developers, Flutter lowers the bar to entry for building mobile apps. It speeds up the development of mobile apps and reduces the cost and complexity of app production across iOS and Android.</p>
<p>For designers, Flutter helps deliver the original design vision, without loss of fidelity or compromises. It also acts as a productive prototyping tool.</p>
<h2 id="heading-what-technology-is-flutter-built-with">What technology is Flutter built with?</h2>
<p>Flutter is built with C, C++, Dart, and Skia (a 2D rendering engine). See this <a target="_blank" href="https://docs.google.com/presentation/d/1cw7A4HbvM_Abv320rVgPVGiUP2msVs7tfGbkgdrTy0I/edit#slide=id.gbb3c3233b_0_162">architecture diagram</a> for a better picture of the main components.</p>
<h2 id="heading-why-use-flutter">Why use Flutter?</h2>
<ul>
<li><p>Develop for iOS and Android from a single codebase</p>
</li>
<li><p>Do more with less code, even on a single OS, with a modern, expressive language and a declarative approach</p>
</li>
<li><p>Experiment by changing code and reloading as your app runs (with hot reload)</p>
</li>
<li><p>Fix crashes and continue debugging from where the app left off</p>
</li>
<li><p>Benefit from a rich set of Material Design and Cupertino (iOS-flavor) widgets built using Flutter’s own framework</p>
</li>
<li><p>Realize custom, beautiful, brand-driven designs, without the limitations of OEM widget sets</p>
</li>
</ul>
<h2 id="heading-how-to-install-flutter-on-windows">How to Install Flutter on Windows?</h2>
<h3 id="heading-minimum-system-requirements">Minimum System Requirements</h3>
<ul>
<li><p>Operating Systems: Windows 7 or later [64-bit]</p>
</li>
<li><p>Disk Space: 400 MB</p>
</li>
<li><p><a target="_blank" href="https://git-scm.com/download/win">Git for Windows</a></p>
</li>
</ul>
<h3 id="heading-get-the-flutter-sdk">Get the Flutter SDK</h3>
<ul>
<li>Download Latest Flutter SDK here:</li>
</ul>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://flutter.dev/docs/development/tools/sdk/releases?tab=windows">https://flutter.dev/docs/development/tools/sdk/releases?tab=windows</a></div>
<p> </p>
<ul>
<li><p>Unzip the downloaded zip in <code>C:\flutter</code> .</p>
</li>
<li><p>Locate <code>flutter_console.bat</code> inside the <code>flutter</code> directory and start it by double-clicking.</p>
</li>
</ul>
<h3 id="heading-update-your-path">Update your path</h3>
<p>If you wish to run Flutter commands in the regular Windows console, take these steps to add Flutter to the <code>PATH</code>environment variable:</p>
<ul>
<li><p>From the Start search bar, type ‘env’ and select <strong>Edit environment variables for your account</strong></p>
</li>
<li><p>Under <strong>User variables</strong> check if there is an entry called <strong>Path</strong>:</p>
</li>
<li><p>If the entry does exist, append the full path to <code>flutter\bin</code> using <code>;</code> as a separator from existing values.</p>
</li>
<li><p>If the entry does not exist, create a new user variable named <code>Path</code> with the full path to <code>flutter\bin</code> as its value.</p>
</li>
</ul>
<blockquote>
<p>Note that you will have to close and reopen any existing console windows for these changes to take effect.</p>
</blockquote>
<h3 id="heading-run-flutter-doctor">Run flutter doctor</h3>
<p>From a console window which has the Flutter directory in the path (see above), run the following command to see if there are any platform dependencies you need to complete the setup:</p>
<pre><code class="lang-plaintext">C:\flutter&gt; flutter doctor
</code></pre>
<p>This command checks your environment and displays a report of the status of your Flutter installation. Check the output carefully for other software you may need to install or further tasks to perform (shown in <strong>bold</strong> text).</p>
<p><strong>For example:</strong></p>
<pre><code class="lang-plaintext">[-] Android toolchain - develop for Android devices
    • Android SDK at C:\Android\sdk
    ✗ Android SDK is missing command line tools; download from https://goo.gl/XxQghQ
    • Try re-installing or updating your Android SDK,
     visit https://flutter.dev/setup/#android-setup for detailed instructions.
</code></pre>
<h2 id="heading-android-setup">Android Setup</h2>
<blockquote>
<p>Flutter relies on a full installation of Android Studio to supply its Android platform dependencies. However, you can write your Flutter apps in a number of editors.</p>
</blockquote>
<h3 id="heading-install-android-studio">Install Android Studio</h3>
<ol>
<li><p>Download and install <a target="_blank" href="https://developer.android.com/studio">Android Studio</a>.</p>
</li>
<li><p>Start Android Studio, and go through the '<strong>Android Studio Setup Wizard</strong>'. This installs the latest Android SDK, Android SDK Platform-Tools, and Android SDK Build-Tools, which are required by Flutter when developing for Android.</p>
</li>
</ol>
<h3 id="heading-set-up-your-android-device">Set up your Android device</h3>
<p>To prepare to run and test your Flutter app on an Android device, you’ll need an Android device running Android 4.1 (API level 16) or higher.</p>
<ol>
<li><p>Enable <strong>Developer Options</strong> and <strong>USB debugging</strong> on your device. Detailed instructions are available in the <a target="_blank" href="https://developer.android.com/studio/debug/dev-options">Android documentation</a>.</p>
</li>
<li><p>Windows-only: Install the <a target="_blank" href="https://developer.android.com/studio/run/win-usb">Google USB Driver</a></p>
</li>
<li><p>Using a USB cable, plug your phone into your computer. If prompted on your device, authorize your computer to access your device.</p>
</li>
<li><p>In the terminal, run the <code>flutter devices</code> command to verify that Flutter recognizes your connected Android device.</p>
</li>
</ol>
<p>By default, Flutter uses the version of the Android SDK where your <code>adb</code> tool is based. If you want Flutter to use a different installation of the Android SDK, you must set the <code>ANDROID_HOME</code> environment variable to that installation directory.</p>
<h3 id="heading-install-the-flutter-and-dart-plugins">Install the Flutter and Dart plugins</h3>
<ol>
<li><p>Start Android Studio.</p>
</li>
<li><p>Open plugin preferences (<strong>File &gt; Settings &gt; Plugins</strong>).</p>
</li>
<li><p>Select <strong>Browse repositories</strong>, select the Flutter plugin and click <strong>Install</strong>.</p>
</li>
<li><p>Click <strong>Yes</strong> when prompted to install the Dart plugin.</p>
</li>
<li><p>Click <strong>Restart</strong> when prompted.</p>
</li>
</ol>
<h2 id="heading-how-to-install-flutter-on-macos">How to Install Flutter on MacOS?</h2>
<h3 id="heading-minimum-system-requirements-1">Minimum System Requirements</h3>
<ul>
<li><p>Operating Systems: macOS [64-bit]</p>
</li>
<li><p>Disk Space: 700 MB</p>
</li>
<li><p><a target="_blank" href="https://git-scm.com/download/mac">Git for macOS</a></p>
</li>
</ul>
<h3 id="heading-get-the-flutter-sdk-1">Get the Flutter SDK</h3>
<ul>
<li>Download Latest Flutter SDK here:</li>
</ul>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://flutter.dev/docs/development/tools/sdk/releases?tab=macos">https://flutter.dev/docs/development/tools/sdk/releases?tab=macos</a></div>
<p> </p>
<ul>
<li>Extract the file in the desired location e.g.</li>
</ul>
<pre><code class="lang-plaintext">$ cd ~/development
$ unzip ~/Downloads/flutter_macos_v1.5.4-hotfix.2-stable.zip
</code></pre>
<ul>
<li>Add the <code>flutter</code> tool to your path. To do this, open your bash profile from your terminal (might need <strong>sudo</strong>)</li>
</ul>
<pre><code class="lang-plaintext">$ sudo vim ~/.bash_profile
</code></pre>
<p>Add your flutter path to the <code>$PATH</code> variable in bash_profile.</p>
<p><strong>E.g.</strong> If you extracted flutter in your <code>Applications</code> folder, your path will be <code>/Applications/flutter/bin</code> . Add this to the existing <code>$PATH</code> variable by using <code>:</code> in between two paths. Once added, save and close the <code>bash_profile</code> . Run terminal again and check the <code>$PATH</code> by running</p>
<pre><code class="lang-plaintext">$ echo $PATH
</code></pre>
<p>You should see your Flutter path added to the <code>$PATH</code></p>
<ul>
<li>Run <code>flutter precache</code> in the terminal.</li>
</ul>
<h3 id="heading-run-flutter-doctor-1">Run flutter doctor</h3>
<p>Run the following command to see if there are any dependencies you need to install to complete the setup (for verbose output, add the <code>-v</code> flag):</p>
<pre><code class="lang-plaintext">$ flutter doctor
</code></pre>
<p>This command checks your environment and displays a report to the terminal window. The Dart SDK is bundled with Flutter; it is not necessary to install Dart separately. Check the output carefully for other software you may need to install or further tasks to perform (shown in <strong>bold</strong> text).</p>
<p><strong>For example:</strong> If you haven’t used Flutter before, you might see an output like this by running <code>flutter doctor</code></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604513907756/sKFSytjlE.png" alt="Flutter doctor output on a fresh system" /></p>
<p>You can see there are several things to be done to begin using Flutter in this Mac. To correct these issues, let’s run the following commands</p>
<h3 id="heading-fix-license-issue-in-android-studio">Fix license issue in Android studio</h3>
<pre><code class="lang-plaintext">$ flutter doctor --android-licenses
</code></pre>
<h3 id="heading-fix-ios-toolchain-issues">Fix iOS toolchain issues</h3>
<blockquote>
<p>Install Xcode command line tools if you are on Mac OS Mojave</p>
</blockquote>
<pre><code class="lang-plaintext">$ brew update
$ brew install --HEAD usbmuxd
$ brew link usbmuxd
$ brew install --HEAD libimobiledevice
$ brew install ideviceinstaller
</code></pre>
<h3 id="heading-update-ios-deploy">Update iOS-deploy</h3>
<pre><code class="lang-plaintext">$ npm install -g ios-deploy
</code></pre>
<p><code>brew</code> does not maintain it any longer, as <code>flutter doctor</code> suggests</p>
<h3 id="heading-android-studio-install-flutter-and-dart-plugins">Android Studio — Install Flutter and Dart plugins</h3>
<ol>
<li><p>Start Android Studio.</p>
</li>
<li><p>Open plugin preferences (<strong>Preferences &gt; Plugins</strong> on macOS, <strong>File &gt; Settings &gt; Plugins</strong> on Windows).</p>
</li>
<li><p>Select <strong>Browse repositories</strong>, select the Flutter plugin and click <strong>Install</strong>.</p>
</li>
<li><p>Click <strong>Yes</strong> when prompted to install the Dart plugin.</p>
</li>
<li><p>Click <strong>Restart</strong> when prompted.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604514061001/KN26xKqHl.png" alt="Install Flutter and Dart plugin in Android Studio" /></p>
<h3 id="heading-install-vscode-flutter-extension"><strong>Install VSCode Flutter Extension</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604514084419/GsBsefA9R.png" alt /></p>
<p>Now all issues should be gone</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604514117224/52fscGr1W.png" alt="We are GO flight!" /></p>
<h2 id="heading-ios-setup">iOS Setup</h2>
<h3 id="heading-install-xcode">Install Xcode</h3>
<p>To develop Flutter apps for iOS, you need a Mac with Xcode 9.0 or newer:</p>
<ul>
<li><p>Install Xcode 9.0 or newer (via <a target="_blank" href="https://developer.apple.com/xcode/">web download</a> or the <a target="_blank" href="https://itunes.apple.com/us/app/xcode/id497799835">Mac App Store</a>).</p>
</li>
<li><p>Configure the Xcode command-line tools to use the newly-installed version of Xcode by running the following from the command line:</p>
</li>
</ul>
<pre><code class="lang-plaintext">$ sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
</code></pre>
<ul>
<li><p>This is the correct path for most cases, when you want to use the latest version of Xcode. If you need to use a different version, specify that path instead.</p>
</li>
<li><p>Make sure the Xcode license agreement is signed by either opening Xcode once and confirming or running <code>sudo xcodebuild -license</code> from the command line.</p>
</li>
</ul>
<p>With Xcode, you’ll be able to run Flutter apps on an iOS device or on the simulator.</p>
<h3 id="heading-set-up-the-ios-simulator">Set up the iOS simulator</h3>
<p>To prepare to run and test your Flutter app on the iOS simulator, follow these steps:</p>
<ul>
<li>On your Mac, find the Simulator via Spotlight or by using the following command:</li>
</ul>
<pre><code class="lang-plaintext">$ open -a Simulator
</code></pre>
<ul>
<li><p>Make sure your simulator is using a 64-bit device (iPhone 5s or later) by checking the settings in the simulator’s <strong>Hardware &gt; Device</strong> menu.</p>
</li>
<li><p>Depending on your development machine’s screen size, simulated high-screen-density iOS devices may overflow your screen. Set the device scale under the <strong>Window &gt; Scale</strong> menu in the simulator.</p>
</li>
</ul>
<h3 id="heading-create-and-run-a-simple-flutter-app">Create and run a simple Flutter app</h3>
<p>To create your first Flutter app and test your setup, follow these steps:</p>
<ul>
<li>Create a new Flutter app by running the following from the command line:</li>
</ul>
<pre><code class="lang-plaintext">$ flutter create my_app
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604514281134/S-Y_AM7NN.png" alt="A successful creation will show something like this" /></p>
<p>A <code>my_app</code> directory is created, containing Flutter’s starter app.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604514309394/MdzNq5zEo.png" alt="Flutter app directory" /></p>
<p>CD into this directory:</p>
<pre><code class="lang-plaintext">$ cd my_app
</code></pre>
<p>To launch the app in the Simulator, ensure that the Simulator is running and enter:</p>
<pre><code class="lang-plaintext">$ flutter run
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604514388146/BMs4ZJR2c.gif" alt="Your first Flutter iOS app is running in Simulator" /></p>
<h3 id="heading-deploy-to-ios-devices">Deploy to iOS devices</h3>
<p>To deploy your Flutter app to a physical iOS device, you’ll need some additional tools and an Apple account. You’ll also need to set up physical device deployment in Xcode.</p>
<ul>
<li><p>Install <a target="_blank" href="https://brew.sh/">homebrew</a>.</p>
</li>
<li><p>Ensure that homebrew is up to date:</p>
</li>
</ul>
<pre><code class="lang-plaintext">$ brew update
</code></pre>
<ul>
<li>Install the tools for deploying Flutter apps to iOS devices by running the following commands:</li>
</ul>
<pre><code class="lang-plaintext">$ brew install --HEAD usbmuxd
$ brew link usbmuxd
$ brew install --HEAD libimobiledevice
$ brew install ideviceinstaller ios-deploy cocoapods
$ pod setup
</code></pre>
<h2 id="heading-android-setup-1">Android setup</h2>
<blockquote>
<p>Flutter relies on a full installation of Android Studio to supply its Android platform dependencies. However, you can write your Flutter apps in a number of editors; a later step will discuss that.</p>
</blockquote>
<h3 id="heading-install-android-studio-1">Install Android Studio</h3>
<ol>
<li><p>Download and install <a target="_blank" href="https://developer.android.com/studio">Android Studio</a>.</p>
</li>
<li><p>Start Android Studio, and go through the '<strong>Android Studio Setup Wizard</strong>'. This installs the latest Android SDK, Android SDK Platform-Tools, and Android SDK Build-Tools, which are required by Flutter when developing for Android.</p>
</li>
</ol>
<h3 id="heading-set-up-your-android-device-1">Set up your Android device</h3>
<p>To prepare to run and test your Flutter app on an Android device, you’ll need an Android device running Android 4.1 (API level 16) or higher.</p>
<ol>
<li><p>Enable <strong>Developer Options</strong> and <strong>USB debugging</strong> on your device. Detailed instructions are available in the <a target="_blank" href="https://developer.android.com/studio/debug/dev-options">Android documentation</a>.</p>
</li>
<li><p>Windows-only: Install the <a target="_blank" href="https://developer.android.com/studio/run/win-usb">Google USB Driver</a></p>
</li>
<li><p>Using a USB cable, plug your phone into your computer. If prompted on your device, authorize your computer to access your device.</p>
</li>
<li><p>In the terminal, run the <code>flutter devices</code> command to verify that Flutter recognizes your connected Android device.</p>
</li>
<li><p>Once ready, run <code>flutter run</code> again to run the app on Android device 😎</p>
</li>
</ol>
<p>By default, Flutter uses the version of the Android SDK where your <code>adb</code> tool is based. If you want Flutter to use a different installation of the Android SDK, you must set the <code>ANDROID_HOME</code> environment variable to that installation directory.</p>
<h2 id="heading-set-up-the-android-emulator">Set up the Android emulator</h2>
<p>To prepare to run and test your Flutter app on the Android emulator, follow these steps:</p>
<ol>
<li><p>Enable <a target="_blank" href="https://developer.android.com/studio/run/emulator-acceleration">VM acceleration</a> on your machine.</p>
</li>
<li><p>Launch <strong>Android Studio &gt; Tools &gt; Android &gt; AVD Manager</strong> and select <strong>Create Virtual Device</strong>. (The <strong>Android</strong> submenu is only present when inside an Android project.)</p>
</li>
<li><p>Choose a device definition and select <strong>Next</strong>.</p>
</li>
<li><p>Select one or more system images for the Android versions you want to emulate, and select <strong>Next</strong>. An <em>x86</em> or <em>x86_64</em> image is recommended.</p>
</li>
<li><p>Under Emulated Performance, select <strong>Hardware — GLES 2.0</strong> to enable <a target="_blank" href="https://developer.android.com/studio/run/emulator-acceleration">hardware acceleration</a>.</p>
</li>
<li><p>Verify the AVD configuration is correct, and select <strong>Finish</strong>. For details on the above steps, see <a target="_blank" href="https://developer.android.com/studio/run/managing-avds">Managing AVDs</a>.</p>
</li>
<li><p>In Android Virtual Device Manager, click <strong>Run</strong> in the toolbar. The emulator starts up and displays the default canvas for your selected OS version and device.</p>
</li>
</ol>
<h2 id="heading-congratulations">Congratulations!</h2>
<p>YaY..!! 👻 You’re almost done. Now, you are ready to design beautiful Android and iOS Apps with Flutter.</p>
]]></content:encoded></item></channel></rss>