tag:syedmusaali.svbtle.com,2014:/feedSyed Musa Ali2016-02-26T01:32:28-08:00Syed Musa Alihttps://syedmusaali.svbtle.comsyed.musa.ali@outlook.comSvbtle.comtag:syedmusaali.svbtle.com,2014:Post/problem-spaces2016-02-26T01:32:28-08:002016-02-26T01:32:28-08:00Game AI Part 2: Problem Spaces<p><em>This is the second part in an series of posts on Game AI. The first post can be found <a href="http://syedmusaali.svbtle.com/introduction-to-game-ai">here</a></em></p>
<p>When building AI agents that solve complex problems or play games, it helps to consider the problem in this way:</p>
<ul>
<li>Consider the starting conditions of the puzzle or game as an <strong>Initial State</strong>
</li>
<li>Naturally, your goal is to get the game in a certain state (or any such state that satisfies certain conditions). We’ll call these <strong>Winning States</strong>
</li>
<li>Now consider a wide open space, where every point represents a game state. (You can also see this as a maze of states). We’ll call this the <strong>Problem space</strong>
</li>
<li>So now solving the problem equates getting from the <em>initial state</em> to a <em>winning state</em>. Sometimes this will require you to FIND the winning state, and sometimes you’d know the exact winning state, but you’d have to figure out the path from an initial state to the winning state. This process is called the <strong>Search</strong>
</li>
</ul>
<p>An example of a situation where you have to find the path from initial to winning state, where you know the winning state, is the Rubik’s cube. Every state of the cube represents a point in the problem space. You know exactly which state is called the <em>winning state</em>. So the question how to get there from a given initial state? </p>
<p>From any state of the Rubik’s cube, you can go to <em>many</em> other states of the cube depending on what rotation you perform. What should be noted here is that you can’t go to <em>any</em> state from a state, instead specific states can lead to specific states. So this can be visualized as a maze of states. Something similar to this:</p>
<p><img src="http://www.jaapsch.net/puzzles/images/rubslide/graph5b.gif" alt="the graph"></p>
<p>Now obviously, Rubik’s cube has a very complex Problem Space, but what we learn from representing this as a maze, is that now writing an AI agent that can solve the Rubik’s cube is equivalent to writing an AI that can solve a maze. We just need to give it the right maze to solve. So first, let’s consider how to solve a maze. Consider the following maze:</p>
<p><img src="http://www-tc.pbs.org/wgbh/nova/einstein/images/lrk-maze.gif" alt="the maze"></p>
<p>Now instead of considering every point in the maze as a state, let’s simplify things by only consider the ones that present an outcome, or require a decision, i.e:</p>
<ul>
<li>The Forks in the roads</li>
<li>The Dead Ends</li>
<li>The Exit. </li>
</ul>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/maze.jpg" alt="maze with tree"><br>
So now you can see there are states that lead to multiple states (forks), and there are those that lead to no new state (dead ends). So we reconstruct this as a tree with the starting position as the root, the dead ends, and exit as leaves. </p>
<p><img src="http://compsci2014.wikispaces.com/file/view/binaryTree.jpeg/412844508/binaryTree.jpeg" alt="the maze tree"></p>
<p>So to solve the maze, we need to traverse this tree and find a path from root to the leaf marked “Exit”. Assuming the maze has no cycles, one of the simplest ways to do this would be a recursive function (let’s call it “explore”) as follows:</p>
<p>explore ( node <strong>n</strong>):</p>
<ol>
<li>If n is the Exit, add <strong>n</strong> to <em>solution stack</em> and return “true” or “win”</li>
<li>else if <strong>n</strong> is a dead end (no child nodes, and is not an Exit) then return “false” of “fail”</li>
<li>else (<strong>n</strong> has child nodes) then for each child node <strong>m</strong>, explore(m)</li>
<li>if any child node returns a true/win , then add <strong>n</strong> to <em>solution stack</em> and return true/win.</li>
</ol>
<p>We mentioned a <em>solution stack</em> in the above algorithm. This would be a <em>stack</em> data structure that holds a trail of nodes that represent the solution path. We use a stack because we enter the nodes in reverse (pushing to the stack), and then when we want to see the solution, we read them in reverse-order of entry (popping the stack).</p>
<p>Now what this recursive function will do is try each possible path until it finds the exit. If it runs into a dead end, it goes back until it finds a fork that leads to an unexplored path. This going back is called <em>back-tracking</em>. The process of exploring each path till you reach its end, is called <em>depth-first traversal</em>.</p>
<p>The above problem was an example of scenarios where the solution is a <em>path</em> from an <strong>initial state</strong> to a <strong>winning state</strong>. As we mentioned before, there are also problems which just require you to <em>find</em> a winning state, irrespective of path. The states in these problem spaces are usually not connected like in the maze. So there aren’t any restrictions on how to get from a state to another. This means that they can’t be directly transformed into a tree.</p>
<p>One such problem is the <a href="https://googledrive.com/host/0B60nf5QgzTkvZ1RzQ2FCZjI3Nnc/Eightqueenspuzzle.html">Eight Queen’s Problem</a>. The object of the game is to place 8 Queens on a chessboard such that they do not attack each other. Now if we think of every arrangement of the queens as a <strong>state</strong> then the <strong>Problem Space</strong> will have roughly 64<sup>8</sup> = 281,474,976,710,656 states (64 blocks where each of the 8 Queens can be placed). This is a considerably large Problem Space.</p>
<p>If we model the problem space this way, this means we have 8 variables (one for each queen’s position) and each of them can have 64 possible values. Now we can reduce this Problem Space considerably if we simply account for the fact that no two queens can be in the same column. So each column will have exactly <strong>one</strong> queen. So another way to model the Problem Space would be to let the 8 variables represent the row of each Queen (they are already spread across the columns). So that leaves us with 8 variables each of which can have 8 possible values. Thus there are now 8<sup>8</sup> = 16,777,216 possible states. This is a much smaller Problem Space, but still pretty large.</p>
<p>So how do we search through these 16,777,216 states? Since these states are not exactly interconnected, we don’t have a tree of sorts, to traverse. Now if you notice, until now, we have been considering placing all Queens at once, and then calling it a state. Another way to approach the problem is to place the Queen’s one at a time, for example starting from the left most column and then moving rightwards. After each placement, all next possible placements can be child nodes of that placement. So we can form a tree with empty board as root node, all placements of first queen will be its child nodes, and so on.</p>
<p>We can even further simplify the Problem Space if we only consider legal placements. For example, consider placing the first queen in the middle row:</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/chess1.png" alt="chess 1"></p>
<p>Now this will block these places on the board for other queens:</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/chess2.png" alt="chess 2"></p>
<p>So We have 5 possible places in the second column. And after placing the 2nd Queen, we’ll only have 3 places in the 3rd column:</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/chess3.png" alt="chess 3"></p>
<p>So this reduces the problem spaces a lot more, and each node will have relatively fewer child nodes, thus the traversal should be quicker.</p>
tag:syedmusaali.svbtle.com,2014:Post/cv-a-tutorial2016-02-24T19:59:11-08:002016-02-24T19:59:11-08:00CV: A Tutorial<p><img src="http://images.freeimages.com/images/previews/c7e/resume-2-1616792.jpg" alt="Image"></p>
<p>The word “CV” is so deceptively simple: Just two simple letters (they even placed together on the keyboard) and yet it embodies the main hurdle between me and starting my job hunt. I am sure a lot of you feel the same way. So I finally figured a simple (ok maybe not <em>that</em> simple) way to get tackle this gate keeper head-on.</p>
<h2 id="the-master-list-of-awesomeness_2">The Master List of Awesomeness <a class="head_anchor" href="#the-master-list-of-awesomeness_2">#</a>
</h2>
<p>Most people simply list down everything they can think about themselves. The object of a CV isn’t to throw facts at the recruiter. The object is to wow them. The recruiter has no interest in your father’s name, your date of birth, your NIC or that one time you went fishing. None of these things contribute towards convincing the company that you are a valuable addition to their team. </p>
<p>So the first step in making a CV isn’t compiling a list of facts about you, it’s to make a list of things that make you awesome. We will call this list <strong>The Master List of Awesomeness</strong>. Why are we calling it a <em>Master</em> List? Because it lists down <em>all</em> of the things that make you awesome, irrespective of context. </p>
<p>At this point it’s highly likely you would mope and say “but Musa, I am not awesome!” Well of course you are! Everyone is. But if you, who has known yourself all your life, can’t see those things, how can you expect a complete stranger to read a page or two and be completely in awe of you? So take a good long look at yourself and find those things. Ask your friends if you have to. Dig in to your FB Time-line if you must! You may not know what those things are, but you will find them, and you will list them.</p>
<p>At this point, each of these things should be a couple of words or a sentence. Whatever it is, you need to be able to put each item down concretely in a single sentence. Writing down solidifies an abstract thought. <strong>Force yourself to write down things that set you apart</strong>. For example:</p>
<ul>
<li>Math makes sense to me.</li>
<li>I paid attention in class.</li>
<li>I have a bunch of freelance projects under my belt</li>
<li>I am used to working my butt off.</li>
<li>I have worked on X technology.</li>
<li>I have a lot of ideas.</li>
</ul>
<p>Perhaps some of these things overlap, and that’s okay. Keep jotting down items. The more you write them down, the better you will feel about yourself. Remember, you have to be your own fan before you can convince others to join your fan club.</p>
<p>Now for each item, find evidence. Right now it’s just a claim. You need to <strong>prove these claims by supporting real-world examples</strong>. This could be a time you demonstrated said skill, or this could be a note on how you acquired the skil, or simply an elaboration of it. For example:</p>
<blockquote>
<p>Math makes sense to me</p>
<ul>
<li>I have the highest grades in my math courses. </li>
<li>I made this project that required a lot of math skills</li>
</ul>
<p>I have worked on X technology.</p>
<ul>
<li>I built this with X</li>
<li>I also built this with X</li>
</ul>
</blockquote>
<p>Now you have a repository of nice things to write about yourself, with evidence to back it up. </p>
<h2 id="the-need-for-a-custom-tailored-cv_2">The Need for a Custom Tailored CV <a class="head_anchor" href="#the-need-for-a-custom-tailored-cv_2">#</a>
</h2>
<p>You thought we were going to make <em>one</em> CV didn’t you? Well guess what? You were WRONG! This isn’t Lord Of The Rings, and you ain’t Sauron. <strong>There is no one CV to rule them all</strong>.</p>
<p>Every employer has their own needs and requirements. What they are looking for, is someone to fulfill exactly those requirements. Based on these requirements, they have a profile of the ideal candidate. From their perspective, the entire hiring process can simplified to the question “Who is the closest match to our ideal candidate”. </p>
<p>So while it’s pretty cool if you have worked on simulations for quantum physics, but if the employer wants someone to write an enterprise application for a bank, your quantum physics experience means nothing to them (unless you can demonstrate how it maps to their needs).</p>
<h2 id="employer39s-checklist_2">Employer’s Checklist <a class="head_anchor" href="#employer39s-checklist_2">#</a>
</h2>
<p>To custom tailor your CV, you need to first understand what your target employer needs. This section demands an entire post on its own, but we’ll simplify this into a few basic questions for now:</p>
<ul>
<li>What does the Company do for a living?</li>
<li>What kind of people do they need to accomplish that?</li>
<li>Are you that kind of a person?</li>
</ul>
<p>Most public job postings come with a list of criteria, but if you are applying to a job in any other way than a public posting (this is arguably a more common way to recruit), then you need to understand what the company is looking for. You must get inside their head to <strong>envision their Ideal Candidate</strong>.</p>
<p>This may involve:</p>
<ul>
<li>Scouring their Website</li>
<li>Understanding their products</li>
<li>Talking to contacts inside the company</li>
<li>Thoroughly reading the job description</li>
</ul>
<p>List down your findings as a collection of qualities they value in a candidate. This is the <strong>Employer’s Checklist</strong> which they will be using to judge your CV.</p>
<h2 id="the-shortlist-of-awesomeness_2">The Shortlist of Awesomeness <a class="head_anchor" href="#the-shortlist-of-awesomeness_2">#</a>
</h2>
<p>Now that you know what the employer is looking for, shortlist items from your Master List that make you look like their ideal candidate. This will give you an outline for the content of your CV. The points are what you want the employer to think of you. The proofs of those points are how you will showcase that side of yourself.</p>
<h2 id="the-template_2">The Template <a class="head_anchor" href="#the-template_2">#</a>
</h2>
<p>Start googling for CV templates. Things to keep in mind:</p>
<ul>
<li>Don’t go with the most popular one amongst your friends or fellow candidates. It pays to stand out.</li>
<li>Don’t go over the top eccentric. We don’t want them to question your sanity… just yet.</li>
<li>Don’t focus too much on the sections listed in the template. You will make your own sections as needed.</li>
<li>Focus on finding a nice, clean, visually appealing template that stands out.</li>
<li>Also consider ease-of-use of the template. If you are looking to custom tailor your CV for each employer, you will need to modify it quite often and so the process must be very easy.</li>
<li>Ms Word isn’t the only tool out there for this work. There are a lot of templates available for photoshop. If you are tech-savvy enough, you can even use this <a href="https://github.com/mszep/pandoc_resume">markdown resume builder</a>
</li>
</ul>
<h2 id="organizing-your-content_2">Organizing Your Content <a class="head_anchor" href="#organizing-your-content_2">#</a>
</h2>
<p>As I mentioned before, don’t follow the template’s sections. Make up your own based on what makes sense for you. The few <strong>sections you should keep:</strong></p>
<ul>
<li>
<strong>About me</strong> (This is simply the title of the CV which is your name, plus some contact information)</li>
<li>
<strong>Education</strong> (reverse chronological list of your places of study along with a point or two about what you did or achieve there)</li>
<li>
<strong>Experience</strong> (if you have any. If you have never worked anywhere its better to simply skip this)</li>
<li>
<strong>Technical Skills</strong> (a simple list of technologies you have worked on, but only do this if your list is impressive. If like me, you only have one or two items, skip it. There are other ways to showcase your talent. Don’t fake this list, recruiters can tell).</li>
</ul>
<p>As you may have guessed, a section detailing your bio data is useless. It’s a waste of space so delete it if your template has it.</p>
<p>I am not a fan of the objective line either as everyone writes something generic. Consider replacing this with a <strong>Why Me?</strong> section where you make your main value proposition. Briefly explain why you think you a good fit for the job. For example, I would point out to financial software houses how I bring my actuarial skills to the table along with my proven coding skills.</p>
<p>Personally I abhor the Skills section (eg: leadership, team player, communication skills). It adds nothing of value since these are just claims. Writing these does not automatically mean the candidate has these. In fact, as as a recruiter, I often skip this section. Yes, these skills might be points in your short list, but instead of listing them outright, we will hint at them. </p>
<p>The recruitment process is a lot like dating. You don’t just <em>tell</em> the girl you are a loving and caring (or even filthy rich) person. You <em>show</em> it to her, or at least you hint at it. Similarly we will <strong>hint at your fine qualities using the proofs in your shortlist</strong>. These will make up the meat of your CV. Organize these into sections that make sense and write them down in your CV. </p>
<p><strong>Possible Sections</strong>:</p>
<ul>
<li><p><strong>Projects</strong> (perfect place to showcase your tech skills, by showing what you have done with them. Don’t make this a long bullet list cramming in that crappy game you made in second semester. Find the two or three most relevant projects that you may have used as proofs and write a titled paragraph about each of them. Write what technology you used, what was it about, and the main reason that makes this an awesome project, and makes you awesome by extension)</p></li>
<li><p><strong>Advanced Courses</strong> (if you took up some electives that makes you a prime candidate for this job, write about them. Write what you learned in that course or what you did or made)</p></li>
<li><p><strong>Domain Knowledge</strong> (If you have some experience with the company’s field of work, you can write about that. For example, when I applied to financial companies, I would write about my actuarial science studies. I even cleared an entire interview once using this tactic)</p></li>
<li><p><strong>Research Papers</strong> (Like everything else, this works best if your research work is relevant to the company. Otherwise, it just feels like page filler )</p></li>
<li><p><strong>Roles and Responsibilities</strong> (If you have been very active in co-curricular activities and feel this highlights qualities important to the employer, then write about these. I suppose it works better if you played a key role in an event sponsored by the company)</p></li>
<li><p><strong>Achievements</strong> (I usually save this section for last if there is room. I use a simple bullet point to show my competition wins and academic positions. You should do what feels right to you)</p></li>
</ul>
<p>This isn’t by any means an exhaustive list. These are nothing more than just samples. It depends entirely on your proofs. Go with the best organization of that content you can think of. At the the end of the day, the objective is to get your point across and you should strive to find the most efficient way to do that.</p>
<h2 id="finishing-touches_2">Finishing Touches <a class="head_anchor" href="#finishing-touches_2">#</a>
</h2>
<p>Expensive leather shoes still look crappy if you don’t polish them. So after all the effort you put in to making your CV, don’t skip out some basic rules and etiquette:</p>
<ul>
<li><p>No Typos. The recruiter and his entire team will laugh at you if you write “Peer-to-peer” as “pair-to-pair”.</p></li>
<li><p>Don’t start a new section at the bottom of the page. Shift it to the new page.</p></li>
<li><p>Fonts and formatting should be consistent. Don’t let it wary page to page.</p></li>
<li><p>If emailing, send a PDF not a word document. Certainly not a .txt file (someone actually sent me that).</p></li>
<li><p>If handing in a hard copy, invest a little and get a color print out. </p></li>
</ul>
<p>Lastly go through your CV again while keeping the Employer’s Checklist at hand and see if you meet their criteria.</p>
<h2 id="getting-them-to-read-your-cv_2">Getting them to read your CV <a class="head_anchor" href="#getting-them-to-read-your-cv_2">#</a>
</h2>
<p>For Fresh Grads, best case would be to have an awesome CGPA. They will actually email you to <em>ask</em> for your CV even if you miss out on their recruitment drive. Even for old graduates, the best case would be getting a call from their HR depth asking for your CV. It happens. Although, I usually decline such offers stating I am very happy at my current job and do not wish to switch. This is usually a good (albeit mean) prank to pull on your colleagues though.</p>
<p>If you are not getting a call, the next option is to approach them during their recruitment drive. Companies often attend events hoping to hunt down some talent. They get a lot of applications though so make sure yours is captivating. This is also a good time to chat up their people about their firm and what they are looking for. Developing a rapport with them also helps if you put a picture on your CV which they would later use to link it to you. Though the picture trick can be tricky to pull off and one person complained it made the entire HR depth laugh at him. Yet, sometimes it may result in employees of the opposite gender beg the recruiter to hire you. (Sidenote: For the love of decency, please don’t put your figure measurements in your CV!)</p>
<p>If there is no recruitment drive either, seek out contacts inside the company (or approach their CEO on twitter if it’s a start up) and talk to them about your interest in the company. Maybe they can route your CV to the relevant people.</p>
<p>Last option, just email their HR people. Almost all company websites have a careers/jobs page. Use this to you advantage. (This is also a great place to visit when trying to assess the company’s requirements).</p>
<h2 id="foreword_2">Foreword <a class="head_anchor" href="#foreword_2">#</a>
</h2>
<p>I hope this helps in your hunt. Feel free to contact me to tell me how awesome I am or why my advise sucks (look for the “say hello” button if you don’t know me on any social platform). Though don’t feel bad if I take my sweet time getting back to you. It’s not you, it’s me. I almost always have too much on my plate (hence the bulging belly). Unfortunately, it’s unlikely I will get time to review your CV so please don’t me in a position where I have to say no to reading your masterpiece. If you do get a job based on a CV you made from these steps, do send me THAT and maybe I will do a Hall of Fame sort of post later to help future generations.</p>
tag:syedmusaali.svbtle.com,2014:Post/how-to-make-an-external-hard-disk-from-your-old-laptop2015-03-14T16:58:00-07:002015-03-14T16:58:00-07:00How To Make An External Hard Disk From Your Old Laptop<p>My laptop was recently termed unfixable, so I bought a new Desktop. My old laptop is now labeled ‘trash’, so my first thought was ‘What can I scavenge from this?’ One interesting thing I decided to do was take out the old HDD and make a portable external HDD out of it. The following is a step by step guide on how I did it and how you can do it too.</p>
<h2 id="things-you-will-need_2">Things you will need: <a class="head_anchor" href="#things-you-will-need_2">#</a>
</h2>
<ol>
<li> An old laptop that you are about to throw away</li>
<li> A 2.5 inch External Enclosure for Portable Hard Disk</li>
</ol>
<p>My old laptop is an HP Pavilion dv6-3162. The guide assumes you have a similar laptop but the general procedure is applicable to most laptops. If you want specific instructions on how to dismantle your laptop, I suggest <a href="http://www.insidemylaptop.com">www.insidemylaptop.com</a>. The second item on the list is a casing that will hold your old hard disk and provide a USB interface to it. I bought a Samsung one for Rs.500 ($5). I assume they are readily available at most computer stores.</p>
<h2 id="step-1-remove-the-battery_2">Step 1: Remove the Battery <a class="head_anchor" href="#step-1-remove-the-battery_2">#</a>
</h2>
<p>This step is pretty straightforward. Unplug the laptop, unlock the battery and remove it.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_203642.jpg" alt=""></p>
<h2 id="step-2-remove-the-service-cover-from-the-lapt_2">Step 2: Remove the Service Cover from the Laptop <a class="head_anchor" href="#step-2-remove-the-service-cover-from-the-lapt_2">#</a>
</h2>
<p>On the underside of the laptop, there is a small section of the cover separated from<br>
the rest. This is the service cover that lets you access the key components without having to dismantle the entire thing.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_203654.jpg" alt=""></p>
<p>Carefully unscrew this and take it off. This should provide you access to:</p>
<ol>
<li>The Hard Disk Drive</li>
<li>The Wireless Card</li>
<li>Both RAM Modules</li>
<li>CMOS Battery</li>
</ol>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_203809.jpg" alt=""></p>
<p>Out of this, we are currently interested in the HDD. </p>
<h2 id="step-3-remove-the-hard-disk-drive_2">Step 3: Remove the Hard Disk Drive <a class="head_anchor" href="#step-3-remove-the-hard-disk-drive_2">#</a>
</h2>
<p>Carefully unplug the HDD from the cable connecting it to the motherboard, and then remove it.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_203834.jpg" alt=""></p>
<p>Personally, I wasn’t expecting it to be this small. Partially because moments before, I was looking at my huge Desktop HDD and figuring out if there was room for another one in there.</p>
<h2 id="step-4-remove-the-hdd-cover_2">Step 4: Remove the HDD Cover <a class="head_anchor" href="#step-4-remove-the-hdd-cover_2">#</a>
</h2>
<p>The HDD has a cover that is made up of two metal pieces and a black film. We need to remove this in order for it to fit into our Portable HDD casing. The metal parts are screwed to the HDD. </p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_203929.jpg" alt=""></p>
<p>Unscrew these are remove the cover.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_203957.jpg" alt=""></p>
<h2 id="step-5-prepare-the-external-casing_2">Step 5: Prepare the External Casing <a class="head_anchor" href="#step-5-prepare-the-external-casing_2">#</a>
</h2>
<p>This is the casing I bought.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204021.jpg" alt=""></p>
<p>Now we’ll remove the top and bottom cover. The bottom reveals soldered circuitry. The top reveals a connector for the HDD.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204034.jpg" alt=""></p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204051.jpg" alt="the three parts"></p>
<h1 id="step-6-insert-the-hdd-into-the-casing_1">Step 6: Insert the HDD into the Casing <a class="head_anchor" href="#step-6-insert-the-hdd-into-the-casing_1">#</a>
</h1>
<p>Place the HDD inside the casing. Align the port of the HDD with the casing’s connector and carefully slide it into place. Make sure the connection is tight.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204111.jpg" alt=""></p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204143.jpg" alt=""></p>
<p>Now place the top cover over this and press it in until it clicks in or is tightly shut.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204849.jpg" alt=""></p>
<h2 id="step-7-screw-the-hdd-in-place_2">Step 7: Screw the HDD in Place <a class="head_anchor" href="#step-7-screw-the-hdd-in-place_2">#</a>
</h2>
<p>Holding carefully turn the casing over. Your HDD has built-in screw holes that should now align with the slits in the casing.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204424.jpg" alt=""></p>
<p>The casing also comes with this nice little Ziploc bag of screws of varying sizes. </p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204230.jpg" alt=""></p>
<p>From these, take out four of the big screws.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204354.jpg" alt=""></p>
<p>Now hold the HDD in place and apply these screws.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_212956.jpg" alt=""></p>
<p>If the top cover doesn’t keep the HDD in place, you can attempt this with the top cover off and holding the HDD in place with your hand.</p>
<h2 id="step-8-close-the-casing_2">Step 8: Close the Casing <a class="head_anchor" href="#step-8-close-the-casing_2">#</a>
</h2>
<p>Now press the bottom cover (and top cover if you removed it) in place and press it in until it clicks or is tightly shut.</p>
<p>There should be screw holes on the sides for the tiny screws in the Ziploc bag. These can be used to make sure the top and bottom covers don’t come loose. </p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204901.jpg" alt=""></p>
<p>I was too lazy to apply these tiny screws. Instead I simply put the whole thing in the pouch that came with the casing. It’s a snug fit and holds everything tightly in place.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_204955.jpg" alt=""></p>
<p>Your Portable External HDD is now ready to be used.</p>
<h2 id="step-9-connecting-it-to-the-pc_2">Step 9: Connecting it to the PC <a class="head_anchor" href="#step-9-connecting-it-to-the-pc_2">#</a>
</h2>
<p>The casing should come with a USB data cable like this one.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_205109.jpg" alt=""></p>
<p><strong>Protip:</strong> Don’t throw away the wire bind. Instead, wrap it around one of the ends so that you don’t lose it and can use it in the future when you put away the cable.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_205131.jpg" alt=""></p>
<p>Locate the port on your HDD casing.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_205004.jpg" alt=""></p>
<p>Now simply plug the relevant end in to the casing port and the USB end into the computer. An LED light should come on and blink rapidly as your PC discovers the new media and accesses your old HDD.</p>
<p><img src="https://dl.dropboxusercontent.com/u/27995518/blogImg/portableHdd/20150313_205310.jpg" alt=""></p>
<h2 id="what-if-it-doesn39t-work_2">What if it doesn’t work? <a class="head_anchor" href="#what-if-it-doesn39t-work_2">#</a>
</h2>
<p>The first time I plugged it in, the light remained a solid ON and the computer didn’t detect anything. If you face the same problem, don’t panic. Most probably, like me, you didn’t push the HDD all the way into the connector. So simply open it back up and make sure the connection is tight. Don’t be afraid to put a little force into it, as long as you don’t break anything.</p>
tag:syedmusaali.svbtle.com,2014:Post/mentor-program2014-12-22T13:30:35-08:002014-12-22T13:30:35-08:00Mentor Program<h1 id="a-little-about-me_1">A Little About Me <a class="head_anchor" href="#a-little-about-me_1">#</a>
</h1>
<p>Hi! I am FASTian Syed Musa Ali (09-Batch). You may or not may not have heard of me (if you have, I am flattered!). I graduated as a Bronze Medalist. I am also studying Actuarial Science formally and have completed 3.5/10 requirements for my Associateship. I am currently working as a Team Lead in Centegy Technologies (not my job title, but it is my role). We’re working on Enterprise Solutions for Takaful Insurance companies in the Middle East. It’s a product (not just a project) so one of the most important things we do is to write code with the aim that it should last. Also, it’s not just another CRUD application, it involves complex calculation engines to deal with all the business logic used by these companies. Yes, we wrote these engines from the ground up, and I was, and still am, an instrumental part of that.</p>
<p>I love programming, I love learning and I love teaching what I learn. There are certain things I learned after graduation, that I wish I had learned in University, so right now I want to give you guys that chance.</p>
<h1 id="what-i-am-offering_1">What I am Offering <a class="head_anchor" href="#what-i-am-offering_1">#</a>
</h1>
<p>As I mentioned, there a lot of things that we don’t learn in University, and I wish that some of these things, we did. For example, most of the code we write in our university life sucks because we write it to last till the professor’s deadline, or the project demo. Even if it’s written for fun, we simply aim for it to last till we have interest in it. We don’t write with long term considerations because we know we won’t be using it for a very long term. Similarly, very few of us write code in such a way that others can make sense of it. Heck, sometimes even we cant make sense of our own code after a few months. These are only some of the things that I want to fix.</p>
<p>So what I am offering is a chance to work with me for approximately 3 months during which I will try my best to teach you about the following:</p>
<ul>
<li>How to write code with long-term considerations</li>
<li>How to make our code flexible to future changes</li>
<li>Importance of User Experience (I promise not to make this like HCI)</li>
<li>Developer-Friendly Code</li>
<li>How Business considerations affect Technical decisions</li>
<li>The right way to work in a dev team (totally different from your uni experiences)</li>
</ul>
<p>This is a tentative list and feel free to suggest changes to it.</p>
<h1 id="the-program_1">The Program <a class="head_anchor" href="#the-program_1">#</a>
</h1>
<p>So I plan on making 2 teams of 3-4 students and work with them on a real world project. No, this isn’t me hiring you for a personal project. This is going to be YOUR project, and I would prefer projects big enough that you can extend them to your FYP. Heck, you might even be able to attempt your own Start-up on this project (don’t forget me when you are a big shot!). </p>
<p>I will be there coordinating with you on the keyboard level. We’ll be having discussions ranging from the idea itself, system architecture, the design, the modules, the very code itself.</p>
<p>I’ll be hosting weekly 4-hour sessions at my place every Sunday. The entire team will meet then and review what we did during the entire week and see where we need to go this week. Also we’ll try to get as much coding done together as possible. I must warn you though, that this MUST NOT be the only time you work on the project. I expect you to put in at least an hour every day. There is a limit to what I can make you do. The actual value you extract from this depends on your own dedicated efforts.</p>
<h1 id="what-i-expect-from-you_1">What I Expect From You <a class="head_anchor" href="#what-i-expect-from-you_1">#</a>
</h1>
<ul>
<li>That you give me your Sunday mornings (4 Hours: 10am to 2pm)</li>
<li>That you give me an hour each day. You may or not may not use this time talking to me. For the most part, you will use it to work on your project.</li>
<li>That you play nicely with others and pull your own weight. I really do not want any sleeping partners here.</li>
<li>That you keep an open mind and do not hesitate from learning new things to do new things.</li>
<li>That you treat everyone (including me) with the respect that you want everyone to show you.</li>
</ul>
<h1 id="things-i-am-looking-for-in-a-protege_1">Things I am Looking for in a Protege <a class="head_anchor" href="#things-i-am-looking-for-in-a-protege_1">#</a>
</h1><h2 id="which-batch_2">Which Batch? <a class="head_anchor" href="#which-batch_2">#</a>
</h2>
<p>I am primarily interested in the 3rd year students. They are old enough to understand complex concepts and young enough to NOT have their hands full of FYP and job applications. So obviously, I will not be considering final year students. As for younger batches, if you can prove that you are better than 95% of your senior batch, than you are most welcome!</p>
<h2 id="the-curious-case-of-gpa_2">The Curious Case of GPA <a class="head_anchor" href="#the-curious-case-of-gpa_2">#</a>
</h2>
<p>While one of my close friends, Asad Memon, is the living embodiment of the phrase “GPA Does Not Matter”, there is no denying that a good GPA means the following things:</p>
<ul>
<li>This person takes his work seriously</li>
<li>This person is at least smart enough to outsmart most of the exams</li>
<li>This person pays attention in class (ok, not always true. I slept in most of mine)</li>
<li>This person won’t abandon mid-way saying “I need to study!! My GPA can’t take any more hits!”</li>
</ul>
<p>So I will consider GPA as a metric for judgement, but I will also give you a chance to explain <em>why</em> your GPA is low. For example, in Asad’s case, his GPA mostly suffered due to his inability to pass calculus. That is of course, a forgivable sin. To be perfectly honest, there have been courses where I admit my GPA suffered because I did not take them seriously, or because I didn’t have my priorities straight at the time, or because the teacher disliked me. So feel free to give me an explanation. Then use the rest of your energy demonstrating why your low GPA does not matter, and why despite it, you are an exceptional person who I would be lucky to have.</p>
<h2 id="how-good-of-a-developer-do-you-need-to-be_2">How Good of a Developer Do You Need To Be? <a class="head_anchor" href="#how-good-of-a-developer-do-you-need-to-be_2">#</a>
</h2>
<p>Ok, quite bluntly, I can’t work with people who would struggle even with basic ITC questions. </p>
<blockquote>
<p>Quick Test: Print numbers 1 to 100, but instead of numbers divisible by 3, print “Fizz” ; instead of numbers divisible by 4, print “Buzz” and instead of numbers divisble by both 3 and 4, print “FizzBuzz”.</p>
</blockquote>
<p><strong>If you can’t do that under 5 minutes, this program isn’t for you.</strong></p>
<p>Beyond the basics, your prowess can be judged from a number of things:</p>
<ul>
<li>Your general problem solving ability</li>
<li>Your ability to express your ideas in code</li>
<li>The diversity of languages/platforms you have worked with</li>
<li>You command over a certain language/platform</li>
<li>Your knowledge and understanding of data structures and general programming concepts</li>
<li>Your past projects</li>
</ul>
<p>If you can safely say that you got more than half of those points right, then you are good enough. </p>
<h2 id="what-if-coding-isn39t-your-strength_2">What If Coding isn’t Your Strength? <a class="head_anchor" href="#what-if-coding-isn39t-your-strength_2">#</a>
</h2>
<p>You might feel that you are a good coder, but not an awesome one. Well this is going to be a team effort, so we need not have all the team members having the same skill set. So the question is, what can you bring to the table? if you have skills that others don’t then you can leverage these in your favor as well. For example:</p>
<ul>
<li>Your Mathematical Prowess</li>
<li>Your ability to come up with clean software designs</li>
<li>Your ability to understand and explain complex concepts</li>
<li>Your willingness and ability to document other people’s work</li>
<li>Your general leadership skills.</li>
</ul>
<p>In my FYP group, it is a fact that 90% of the code was written by my fingers. Another fact is that I couldn’t have passed FYP without my other two teammates. Their contributions were numerous and absolutely crucial to our success. So as long as you can contribute to the team meaningfully, there is room for you.</p>
<h2 id="special-consideration-for-girls_2">Special Consideration for Girls? <a class="head_anchor" href="#special-consideration-for-girls_2">#</a>
</h2>
<p>It recently came to my attention the current 3rd year batch is full of a lot of female talent. I considered making one of the teams strictly girls-only. Then i reconsidered, and decided that reserving seats for girls would be an insult to them. They are not in any way handicapped, so we need not treat them as such. They can compete with guys on an equal footing and kick butt! So it’s a free-for-all. Beat the guys you compete against, and welcome to the club!</p>
<h1 id="i-wish-this-all-were-free-but_1">I Wish this all were Free, But… <a class="head_anchor" href="#i-wish-this-all-were-free-but_1">#</a>
</h1>
<p>My original plan was to make this totally free, because my intentions were charitable, not business-like. Then my own mentor, and close friend, the world famous Tanzila Khan, convinced me that it’s in everyone’s best interest that there be a fee for this.</p>
<p>If I do this for free, I see it as a charity and whatever I would be doing, I would consider it good enough. After all, it’s for free! Similarly, you would be happy in anything you got. The whole price thing forces you to <em>demand</em> better service from me, and it forces me to <em>provide</em> better service. Furthermore, it forces both of us to take this thing seriously, and to stay committed to it. </p>
<p>So I have decided on a fee of <strong>Rs. 1000 per month</strong> per person. This is hardly anything considering you are most probably paying 4000 per month for a 3 credit hour course, or that I probably make much more than 1000 in a single working day. This is just to serve as an entry-barrier to find out those to whom this is worth at least 1000, who I know would take this seriously (or who aren’t serious but got cash to burn). </p>
<h1 id="where-do-i-sign-up_1">Where Do I Sign Up? <a class="head_anchor" href="#where-do-i-sign-up_1">#</a>
</h1>
<p><a href="http://goo.gl/forms/NUwlbXM9En">Click here to go to Registration Form</a></p>
<p><strong>Deadline: Friday, 26-Dec-2014</strong></p>
tag:syedmusaali.svbtle.com,2014:Post/introduction-to-game-ai2014-05-06T11:53:19-07:002014-05-06T11:53:19-07:00Introduction to Game AI<p>Ever since I was a kid, I have loved working on video games. Now, a game has many many parts to it, like:</p>
<ul>
<li>Story</li>
<li>Graphics</li>
<li>Music</li>
<li>Game Mechanics (including physics)</li>
<li>Game AI (both Friendly and Hostile)</li>
</ul>
<p>I am going to take some time and introduce you to one of my favorite parts: Game AI.</p>
<p>A single intelligent piece of the game (such as an enemy unit), can be considered an “AI Agent”. There really is no on definition of AI Agents, but here’s one that I like:</p>
<blockquote class="short">
<p>An intelligent agent is an entity that observes the environment and acts accordingly.</p>
</blockquote>
<p>So what an Agent does, can be broken down to three fundamental steps:</p>
<ul>
<li>Observe Environment (Input)</li>
<li>Come up with a response (process)</li>
<li>Act upon it (output)</li>
</ul>
<p>For example, an AI Tic-Tac-Toe player would observe the board, select a move, and then make its mark in the selected spot. </p>
<p>Now most of you might think that one only has to care about the process part when designing an agent, but that is actually not true. It is very important to know what an agent can observe from the environment and exactly what type of response an agent can give. So before you can start designing an agent you must take the following 4 things into consideration:</p>
<ul>
<li>Sensors
-Actuators</li>
<li>Environment</li>
<li>Performance</li>
</ul>
<h2 id="sensors_2">Sensors <a class="head_anchor" href="#sensors_2">#</a>
</h2>
<p>Before you can design an agent that responds to situations, you need to know how exactly can it perceive the situation? What things can it observe? Which variables can it know at any given time?</p>
<p>In some cases, you will have all the information available at any given time, for example a tic-tac-toe game. Sometimes you may only have partial information of the game state, like in a poker game. Obviously this will affect your agent’s design. </p>
<h2 id="actuators_2">Actuators <a class="head_anchor" href="#actuators_2">#</a>
</h2>
<p>You also need to know what kind of output is expected of your agent. Not only does this give you a direction to work towards, but it may also show your agent’s limitations. For example, in a tic tac toe game, you just need to output the location of your next mark, but in a top down tank game, you might not be allowed to simply tell where you want to go. You might have to output how many degrees you want to turn, whether you want to move forwards or backwards, do you want to shoot, etc.</p>
<h2 id="environment_2">Environment <a class="head_anchor" href="#environment_2">#</a>
</h2>
<p>A huge deciding factor for any Intelligent Agent is the Environment it will be operating in. This is basically the game you want to build the AI for. The AI will be design based on what kind of the game it is expected to play.</p>
<p>The environment can be of many types. Some factors that describe an environment are:</p>
<ul>
<li>Turn-based (Discrete) or Real-Time (Continuous)? </li>
<li>Fully observable (eg: tic tac toe) or Partially Observable (eg: poker) ?</li>
<li>Competitive or Co-operative w.r.t to other Agents (including the Player)</li>
</ul>
<h2 id="performance_2">Performance <a class="head_anchor" href="#performance_2">#</a>
</h2>
<p>This is perhaps the most important factor when designing an AI Agent. How will the agent’s performance be measured? Not only does this help you judge if it is working properly, but it also allows you to give feedback to Agent. Most AI techniques use Performance Measures to help the AI learn from its actions. For example if an agent performs an action and observes an increase in the performance score, it’ll learn to do that action more often. Similarly, if an action results in a decrease in the performance score, the Agent will seek to avoid this action in the future. </p>
<p>So these are all the things you need to consider before even STARTING to create your own intelligent agent. As to how we’re actually gonna do that, I’ll cover some other time! </p>
tag:syedmusaali.svbtle.com,2014:Post/a-little-interview-advice2014-04-29T13:14:27-07:002014-04-29T13:14:27-07:00A Little Interview Advice<p>People have been asking me this question recently:</p>
<blockquote class="short">
<p>I can answer all the technical questions in an interview, but how do I <em>market</em> myself?</p>
</blockquote>
<p>If you too have this question, then first of all, I’d like to commend you for realizing that <strong>marketing yourself</strong> is an important part of the interview. Secondly, I am clearly no expert on the topic, but I would like to share some of my the techniques that got me through my job hunting times</p>
<p>One thing you should realize is that <strong>interviews are not simply tests</strong>. They are not just about giving correct answers to the questions asked. What they <em>are</em> about is <strong>making an impression</strong>. This is because the truth of the matter is that, at the end of the day, we’re all humans. So simply put, <strong>interviewers hire candidates they like</strong>. Yes <em>one</em> way to make them like you is to give correct answers to their technical questions, but that is not the <em>only</em> way. Neither is that a guarantee that they will like you. Sometimes it takes more than that, depending on the competition. What you need to do is show them how you are different from other candidates. <strong>What do you have that the others don’t?</strong></p>
<p>The process of making an impression starts long before the actual interview. It begins with introspection. Before you can show someone else how special you are, you need to <strong>figure out what makes you special?</strong> This can be anything at all, ranging from your prowess at a certain technology, your experience dealing with clients, your knowledge of a certain domain (technological or otherwise), to even something as simple as being a good team player. You need to realize your specialty.</p>
<p>The next step, after identifying your <a href="http://www.entrepreneur.com/encyclopedia/unique-selling-proposition-usp"><em>Unique Selling Proposition</em></a> is to <em>project</em> it. Once you realize what message it is that you want to convey to your potential employers, it’s time to figure out how will you <strong>get the message across</strong>. The first thing you can do in this regard is to craft your CV around this message. This doesn’t mean to spam your CV with the words “I am a team player”. What it does mean is to state your message (or subtly hint to it) and then every other item you add to it, should reinforce that message. For example, if you say you like working on complex problems, then you reinforce that by mentioning what complex problems you have worked on before. If you say you like working with clients, you show how you have done so in the past, and what was achieved as a result of that interaction.</p>
<p>Before the interview itself, you need to <strong>make a list of things you want the <br>
interviewer to know about you</strong>. These will be your Silver Bullets. Then during the interview, you should be on the look out for opportunities to shoot these. As I said before, interviews aren’t tests, they are more like Ballroom Dancing. So you don’t necessarily have to resign to your partner’s control, you take charge and lead the dance in any direction you like. One of the best times to do this (and to shoot your bullets) is when they start off with the question, “Tell us about yourself”. This is the time to take out that gun and shoot as many bullets as you can. Then one of two things would happen. Either they will think “Impressive! Let’s see how good he is technically…” and switch to technical questions; or they will show interest in what you have to say and probe you for information, thus following your lead and letting you swing the interview in any direction you want. This, again, is a perfect opportunity. This is the time to tell them in detail exactly how you took the leadership of a group and made a difference; or what sort of challenges you faced with a client and how you dealt with them; or what fascinatingly complex projects you have worked on. Keep the discussion revolving around things you want to talk about. Things you want them to think about you, to know about you. Things you are very comfortable in talking about.</p>
<p>Most probably, your interviewer will still skid towards that list of technical questions he’s been asking all the other candidates. But, the difference here is that now he already has a good impression of you in his mind, and it will most definitely affect his perception of your answers in the technical round. If an interviewer doesn’t like you, he will probe questions that he knows you have trouble with, trying to assert that his earlier impression was right and that you really are unfit for the job. If he <em>does</em> like you, he will naturally try to assert that you are good for the job and would assume you know the answer even when you demonstrate very fundamental knowledge of it. He usually wouldn’t even mind when you say that you don’t have much experience with a certain domain, and would thus skip that section and ask other questions that you do claim knowledge of.</p>
<p>So in conclusion, your interview should be about making an impression, and for this you need to first realize what exactly is the impression that you want to make? Once you realize that, it’s all about reinforcing that impression in as many ways as you can. I hope this advice works out for you, as well as it worked out for me. </p>
<p>Thank you for your time.</p>
tag:syedmusaali.svbtle.com,2014:Post/the-great-start-up-plan2014-04-24T11:10:40-07:002014-04-24T11:10:40-07:00The Great Start Up Plan<p>Everyone dreams of starting their own company. Many many people try and a huge number of them fail pretty badly. Starting one’s own company is no child’s play. It has a ton of risks associated with it and it can be sometimes difficult to rise back up after a failure. So it is best to plan for it instead of just jumping right in. Sure, side businesses are small risks and these experiments can be done anytime, but when you <em>truly</em> want to create your own proper company, I suggest you follow this general plan:</p>
<h1 id="phase-1-join-a-big-company_1">Phase 1: Join a Big Company <a class="head_anchor" href="#phase-1-join-a-big-company_1">#</a>
</h1>
<p>This is important on many levels. Firstly, this is a sort of safety net. An insurance of sorts. Right after graduation, you have a certain boost due to your <em>prestigious</em> University and this lets you relatively easily gain employment at bigger companies. The next time you go job hunting, Your <em>boost</em> will depend on your past employers. Think about it, your next potential employer has two CV’s in front of him. One is coming from a well-respected company, and one is coming from a company no one he knows has ever heard of. Who do you think we would be inclined towards? So to <strong>safeguard your CV against future failures</strong>, this is a necessary step.</p>
<p>Secondly, when you are part of a big company, you are <strong>playing with the Big Boys</strong> now. This contributes to your skills and helps you <strong>take your abilities to the next level</strong>. Unless you actually spend time working alongside people who are much better skilled than you, your self-development will be stinted. So this experience teaches you a lot of things you didn’t know before, like how to write better software, how to manage teams better, how to handle large projects better, etc etc. And you can use all of these things when you choose to Start your own Company. Eyes on the prize, my man.</p>
<p>Lastly, <strong>Big companies pay Big</strong> and this will help you <strong>create a cash reserve</strong> for the time when you choose to be the risk-taking Entrepreneur. Trust me, the software business needs cash reserves. Loads of em. So unless you got VC’s lining up to throw money at you, this is a great way to prepare yourself for bootstrapping your own company. </p>
<h1 id="phase-2-join-a-small-company_1">Phase 2: Join a small Company <a class="head_anchor" href="#phase-2-join-a-small-company_1">#</a>
</h1>
<p>Now that you have acquired the necessary engineering skills, time to look at <strong>what it’s like to have your own start up</strong>. And what better way to see that by being part of a start up? So in this phase you seek out a small company that you like and join them in their adventure. </p>
<p>The major difference you will see here as compared to your previous company is that, in big companies, they have separate people to do different tasks. So everyone is focused on a smaller number of tasks and strives to perfect themselves at it. The down side of this is that you only get to be great at a handful of things, and you never realize what all those other tasks are that are so important to running a company. In small companies, <strong>everyone wears multiple hats</strong> and so you get a go at a lot of things. So you have a chance to <strong>diversify your skill set</strong>.</p>
<p>While in Phase 2, it would be best if you try to sink your teeth into as many things as you can. Go help the accounts guy with the expenses and the revenues. Go help the project manager find better ways to keep things running, and meeting deadlines. Go with the marketing/analysis guy to meet the client and learn how to understand requirements. You have a chance to do all these things because chances are, your new company might not have enough personnel to dedicate to all these tasks. And you take advantage of this. And in the words of the great A.Q. Khan:</p>
<blockquote class="short">
<p>Take notes of everything you see and do.</p>
</blockquote>
<p>(He did that when working at foreign power plants. How else do you think he <em>Built his own Nuclear Start up</em> ??)</p>
<h2 id="side-quest_2">Side Quest: <a class="head_anchor" href="#side-quest_2">#</a>
</h2>
<p>There may come a time when your boss runs out of ideas for products, or his current ideas might not be working out. This is the perfect time to pitch him that side project you have been working on, or that amazing idea that’s been nagging you at the back of your mind. If you succeed, you’re gonna get your idea built at someone else’s expense (and risk)!! It lets you test out your theory and you get paid to work on your own project (guaranteed payout: Salary!). So in certain sense you’d have your own Startup without actually having to go through the troubles of creating your own Startup! Heck if your boss is a nice guy and acknowledges that it was YOUR idea, he might not only make you the head of it, he might even give you a share in the profits!</p>
<h1 id="phase-3-start-your-own-company_1">Phase 3: Start your own Company <a class="head_anchor" href="#phase-3-start-your-own-company_1">#</a>
</h1>
<p>Armed will all the knowledge and cash reserves from the previous phases, it’s time for the young eagle to spread its wings and take flight!! As for how to actually do that, well there’s a plethora of literature written on it which you can read when you actually get to this point. Good luck! May the force be with you! (PS: if you are Muslim, Force = Allah mian)</p>
<h1 id="why-the-long-route_1">Why the long route? <a class="head_anchor" href="#why-the-long-route_1">#</a>
</h1>
<p>You might be wondering why take such a long route? Why go through all this trouble and not skip phases? Well a lot of people do that. A lot of people just jump to phase 3. Yes, some of them succeed, but <strong>most of them Fail</strong>.</p>
<p>Some people skip Phase 1, and join a startup right after graduation. They miss out on the amazing focused learning experience of the Big Company and also the safety net. And later in life, if they desire to join a big company, they face hurdles. Hurdles that do not exist at the time of their graduation. So why create problems for yourself? Why not use this opportunity to learn new things and increase your chances?</p>
<p>Some people skip Phase 2. They then suddenly realize there is so much to running a company than writing code. A LOT of <em>software houses</em> out there face this problem of creating products and then failing to cash in on them. Or having their companies collapse because they didn’t realize what needs to be done to keep it afloat. Yes they learn from their failures but why lose so much in the learning process when you can get <strong>paid</strong> to learn?</p>
<p>So I hope this was of help to you, and I look forward to seeing you do amazing things in the future!</p>