Zain Shah

just another blog

Follow me on Twitter @zan2434

Dec 19, 2014

Scratching Itches

Some tech startups that are ridiculously wealthy seem superficial; they reduce tedium and nuisance, not ailment and misfortune. They are solutions to the problems we didn’t even notice we had, not curing pains but scratching itches. They initially sound like bad business ideas. They make you wonder why someone so smart would work on something so trivial. Finding documents online instantly, quickly getting someone’s relationship status, and syncing files between your computers, are now critical to us but were initially mere conveniences. I've come to believe that to succeed extraordinarily with a purely software company in the same fashion, you should prefer thoroughly solving a popular, but minor inconvenience to making any headway on a more major problem.

I don’t think this is necessarily the best framework for founding a business, but it’s produced a few good successes and will probably continue to. These businesses rely on ads or being very inexpensive, so they need to have a ton of users. Thereby a model for their success comes down to a few things:

  • advertising works surprisingly well for just about anything
  • but only at high volume, so you should maximize your volume of users
  • therefore you should have a product which is undeniably superior, which is easier when your competition isn’t very good (in the realm of things people are actually working on intently, there are rarely breakthroughs. With competition, progress is iterative)
  • to avoid good competition, work on something competent people think is basically worthless, but you realize is at least worth using
  • this set can be described as a narrow region on a continuum between useless and useful, which we will henceforth describe as “convenient”

Television shows that even if the ads have nothing to do with the content, the awareness targeted towards a blurry demographic is worth millions. With software, targeting is much more powerful, and the ads can be tailored particularly to the software’s use case.

Now, when only number of users matters, it’s clear that to succeed extraordinarily you should at least initially avoid competition at all costs. A high sticker price inevitably attracts competition. Therefore it’s the relative insignificance but massive market size of the problems these companies solve which enables a clear monopoly. High sticker prices and significant problems attract and enable competition by selecting for pickier customers.

When what you’re doing matters, the stakes are high enough that competition can capitalize on the slightest differences. Therefore solving a problem people care about is counterproductive because it allows for more competition. When you’re merely a convenience, so long as you’re free or very cheap, people won’t even bother taking the time to look for alternatives.

Being able to legitimately offer something for little to nothing is quite an absurd notion. You may imagine that if this makes sense it’s because all business problems disappear when material costs disappear, and I’d say that’s at least partially correct. It sounds like a terrible business plan, but at the very large scale and low cost of acquisition permitted by software and the internet material costs are negligible and business just finds a way. Thanks to the advertising model, having a ton of people use your product frequently can guarantee success. Only user numbers matter because any money you do make is profit, and the only barrier to entry is the switching cost of your habits and pushing a few buttons.

This way tech companies don’t cost much to start (so long as you pick a nuisance no one is making billions from yet), and they actually become rather critical and make plenty of money by the time they’re mature. By the time any of this is obvious for a particular use case it’s already too late to compete.

People form habits with frequent use that are uncomfortable to break, so switching costs will increase automatically. A commonly cited quality multiplier required to surpass switching costs from habit is 10x. If there are network effects involved (and there usually are with anything involving communication over a non-standard protocol), that cost is an order of magnitude higher. If you need to be 10x better to get users, then your best shot is being 10x better at something people don’t think matters much.

Initially, although search wasn’t very important because of portals, switching to Google was a no-brainer. It was so much better than the status quo when you did want to search. They were the first ones who cared enough to work very hard on the inconvenient proliferation of web documents. They probably didn’t expect everyone in the world to use them, but they tried their best to make customer adoption easy. Their homepage was nothing more than a textbox and 2 buttons. Now that they’ve managed to make a business of what they do, poured that money into R&D, and are the origin of most internet traffic they are both critical to our livelihood and very difficult to be 10x better than.

The typical advice for startups is to make something people want, and to test that high demand with a minimum viable product. This is good advice that will make it harder to fail, but if you’re making software I argue it also makes it harder to succeed extraordinarily. Important problems with genuine high demand make room for competition, and being extraordinarily successful requires avoiding competition at all cost.

I still think solving big problems is something to aspire to, in a humanitarian sense, but strategically this approach is superior. Even if you want to solve big problems eventually, it’ll be much easier when you’re already rich and everyone knows about you.

This also explains the youth of these companies’ founders. Mature adults don’t spend their time mitigating minor inconveniences. Real problems are heavy burdens; solving them is a huge responsibility, and to a naive youngster without hardship, commitments, or dependents, mitigating inconvenience is more fun than anything else they could do with their time. It is this mark of maturity they do not possess, sympathy for true pain and suffering, that leaves them with only itches, and a very powerful new set of tools with which to scratch them.

This inconvenience filter may also apply well to the things that are possible to do well with software. Computers don’t find the same tasks easy that we do. We find long arithmetic difficult & tedious, though it is very easy for computers. At the same time understanding speech is an automatic process for us, but speech recognition software needs to run on enormous computing clusters to achieve even 70% accuracy. What simple filter would you apply to a set of tasks to determine which could be made automatic, if you didn’t know how to program? The tedious-ness filter was the best I could come up with.

Apr 17, 2014

Predictive (productive), not communicable, AI. Communicate through existing channels.

AI will be used for faster than human, better than communication. It will be used for intelligent despite no communication. People communicate out of necessity, and when you are working to reduce necessity of things, you work to reduce communication. So the future isn't a personal assistant to whom you say "Open the garage" it is one you raise when you need to open the garage and it presents a button that says "open the garage" automatically. The Google Now model will far supersede that of the understander of communication. We don't want something that can communicate with us, and AI as turing expected it will never exist of our intent, collectively. It would be fundamentally misguided.

Apr 17, 2014

A freedom machine

We all want freedom, the ability to do what we want. Happiness, power, and money are all just forms of it. What if I were to tell you there exists a spec for a freedom machine?

In this game we call life, all those who can reach the finish spot on the board win. Your start position is random, your finish position is random. You need to spend resources to move, and you are allocated random amounts of resources when the game begins. It's clear that he with the most freedom to move around the board wins, and resources are your units of freedom. There aren't many other rules.

How do you gain resources? gain freedom? You'll need to leverage what you have and trade with the other players. Help other players get more freedom as well, and you can demand some of it. Isolate a process you know of, inform other players of the process in exchange for part of their return. Get other players on your side to help you help others, and together you can earn more and more freedom.

As n of players on your side grows while you're repeating this isolated process, just ensure that the cost for each n+1 > n. Thereby, as n increases, the entire cooperative gains freedom faster, and can afford to amortize it over an ever greater n. Herein lies the positive feedback loop, and over a sufficiently large population the resources you gain asymptotically approaches demand.

This is a freedom machine, a company. It is a construct of a process, an idea, or a novel combination of the resources you already have that can produce greater freedom for others than its cost to them. You have some of it early on, but it's harder to produce when you're small and easier to produce when you have help. You give some to others in a trade for some of their freedoms. You ask others to help you and give them some of the freedom you earned in return.

/This freedom machine is a powerful, but simplified concept. The real world is wonderfully confounding. The resources are immense and complicated, there are endless combinations of them, and all the other players aren't exactly equal. Their quality isn't even directly comparable, and so we develop systems just for getting better ones, and convincing them to join one machine over another./

Apr 17, 2014

Why is college necessarily so transformative?

College is the best place to go when you want to learn what real friends are. If you were apparently well developed in high school, then you could have learned it then, but it's unlikely. This is because it is so unlikely that you were smart enough then to really evaluate this. This being the evaluation that those you are selecting are the best of all available to you. The highest expected value of companionship options you've chosen are those you chose to become friends with. You are thrown into a completely blank slate environment with no predispositions, and so you can expect your decisions to be made knowing you're doing the best you can, with as little from outside affecting your decision as possible. Those conjugates of this circumstance, the strangers of whom some are to become your closest companions, possess the same agency in their friend decisions.

Feb 25, 2014

Designing a startup accelerator for engineers

adapted (generalized) from a Facebook conversation about turning UPenn's engineering students into successful entrepreneurs.

let's turn engineering students into successful entrepreneurs.

As students they have: knowledge of how to build a product, or knowledge of how to build part of a product (smaller product). You don't want to teach them how to build the right product, they learn that through coming up with a product then validating. The problem with going from market to product rather than the other way around is that it's usually contrived with little motivation and maligned incentives. Anyway, you need to teach them how to validate a product, how to assess a market, how to sell it to customers, how to keep that momentum going and make the right decisions to continue to get more customers and build a better product. How do you teach these things without becoming a business school? You could foster this by finding people who, if they can nudge them in the right direction slightly, will already have product market fit and are bright/independent enough to figure these things out. These students aren't nearly independent enough for that; they'll need to be hand-held along this decision making process for far longer/harder than a few meetings over 8 weeks to start automatically thinking this way.

you can think about it for them or select those who already think this way

the latter won't improve a school's entrepreneurship numbers (those who can already think like entrepreneurs will do so regardless)

the former will

I guess the success of an accelerator is a function of its ability to teach this way of thinking, the ability of the students to learn it and the applicability of the learning to the startup. YC maximizes this by being very good at teaching, selecting for students who will learn it well, and selecting for startups that already have promise if directed well. to build a good accelerator you need to maximize this function. If you can't select for startups better or students better, then you have to maximize the ability to teach. Things start to get fuzzy here. I don't know how to teach better. There's an equilibrium between thinking for someone and letting them think for themselves, but the second part is on the students mostly, so it's then just people who think the right way but aren't too overpowering The only people who can certainly think the right way are successful founders; no one else has any 'validation'.

The second best thing here is to learn directly from those who verifiably think correctly, then teach exactly the way they do

So far a perfect accelerator is one in which you have a bunch of courteous successful startup founders who know how to make the right decisions for a startup but also know when to let founders make their own decisions and you have very bright, independent but impressionable startup founders, and very promising startups of theirs that will succeed if properly directed by them.

I feel like finding people who are the exact right fit for the accelerator will be challenging, since it can be tough to measure how good a person is at teaching without actually seeing them do it.

It comes down to: find people who can teach the right way of thinking, and who are strong enough teachers that they can teach fairly dependent founders (because they are student founders).

It is, however, very difficult to figure out how good someone is at teaching. I know of two factors that can be evaluated without watching them teach: intelligence, empathy.

Intelligence here is relative to a successful startup founder. Their intelligence will be the proportion of decisions they would make that are the same as a successful startup founder in the same position.

They should also use their empathy to figure out how much they should think for the founder vs. let the founder think for him/herself

How do you feel about seeking the types of mentors you described from YC—some that are supportive and some that generally provide constructive criticism?

there's an equilibrium that defines the perfect mentor. One that doesn't push their own thoughts on you too hard, but also thinks for you where it's helpful. The overly supportive mentors don't think for you too much; they let you think for yourself and give you positive nudges. The hyper-critical ones push their own thoughts on you too hard, but they're usually correct. The problem with their approach is just that by not letting you think for yourself you don't learn how to think for yourself the way they think for you. YC looks like it has people on both sides of the equilibrium no one I know who is perfectly in the middle maybe PG? I don't know how much their effectiveness suffers by approximating the perfect mentor through an average of extremes over just having a bunch of perfect mentors. It's definitely optimal to have a bunch of perfect mentors; and sub-optimal to have some super supportive and some super critical, but sub-optimal is the only feasible solution here.

Actually, it isn't sub-optimal, because when split amongst polar individuals the ratio of supportive:critical mentors can be dynamically constructed based on the independence:dependence of the students.

Encourage the students to get several opinions on every decision. These students are fairly dependent, so you want fewer encouraging, supportive people or at least need to encourage them to lean towards the more critical mentors.

That's all I have off of the top of my head. More to come.

Feb 25, 2014

Something worth avoiding

You’ve heard of it; it’s so ubiquitous that even its own insidy cannot occlude it entirely. It makes itself obvious in cases like being afraid to leap from a tall building or to cross a highway, but even in those cases we can be afraid to admit it. In these cases, although it’s too strong to avoid, it’s also obvious enough to clearly be the cause. Identifying it as the cause is very empowering. When it is apparent then even its great strength can be overcome by will.

You may ask, however, what happens when the fear is too weak to be obvious, yet strong enough to influence our behavior? It’s a dangerous circumstance for sure; how can we fix a problem when we don’t know its cause? We have a will to fight something within, but what exactly are we fighting? We really can’t fight it effectively, but the problems themselves are so significant that maybe just maybe if we can identify how fear manifests itself, how it hides itself so well, where it tends to crop up, and under whose guise it tends to appear, we can conclude this admittedly masterful masquerade.

I won’t address the obvious places fear crops up, because those patterns are both universally known and wholly inadequate to identify the real perpetrator. Instead, there are cases where only in retrospect and when you are sufficiently distant from the situation would you quietly admit to yourself that you were afraid. When you were afraid, not to jump off a building, but to try a little harder; the times you were afraid to discover that things weren’t as you expected them to be. You may recall being afraid to study for a test because despite telling yourself that you’d “do really well if you tried” you’d much rather not know. What if you really were just dumb? What if no matter how hard you tried you’d only do a little better? You convinced yourself that you would much rather maintain that uncertainty than actually try, and your throughput suffers accordingly.

Unfortunately, fear under this guise still seems completely reasonable in the moment. With a little personification: Fear says: “You’d be so heartbroken if you tried and failed! By leaving it uncertain you completely avoid that misfortune” But beware; fear is polar. In fear you view the world through a darker lens. A lens by which the downside always far outweighs the upside. It makes sense that it would; fear manifested as a behavior to protect you. Usually we have insufficient information to make accurate predictions about deadly situations, so anywhere there is even the slightest probability of mortality the expected value is completely disregarded and mortality is assumed. Those decisions of yester-millenia were almost always life or death, and death was such a huge downside evolutionarily that it was far better to just always take the safer route. When survival of a species is at stake, better safe than sorry is the way to go.

On the other hand, the world is now a highly complex system and the same feeling of fear has applied itself to non-mortal situations. That huge risk-aversion prevents you from making big decisions; instead you take the default route wherever necessary.

In aggregate survival scenarios risk-aversion is the way to go, but independently, if you can make calculated decisions, you should. This is where fear comes in. As a population, fear helps us, but as individuals -in non-mortal situations- it hurts us.

Fear can still be overcome, but it must be overcome intentionally. It must be identified and systematically eliminated. Acknowledging its presence and addressing it as your adversary is the first step. The road from there is tough but straightforward.

Also, keep in mind that fear isn’t always wrong. Far from it, fear’s actually a remarkably accurate quick judgment. A lightning fast pattern matching process formed by centuries of evolution and years of your own experience isn’t something to laugh at. It’d be dangerous to just automatically counteract it without reason, but it should always be questioned. If you have time to make a real decision, then it’s to your advantage to do a much more thorough risk analysis. You’ll find that fear hyper-inflates the disadvantages in these analyses, so quantify whatever you can. How much money could you lose? Fear says all of it! but upon a closer look you discover reality to be far more forgiving. Question fear like a poorly behaved child questions authority, because that’s exactly what you’re trying to do.

Fear is an internal authority, opaque and unyielding; in times of crisis it’s invaluable, but other times it pays to ask “Why?”

Sep 17, 2013

How I learned to Code

I’ve been getting this question a lot recently, in various forms: how’d you learn to code? how should I learn to code? any good programming books you suggest? It’s hard for me to answer these questions because I learned in a rather non-traditional way. I can’t guarantee to any of these eagerly aspiring programmers that my way is the best way to learn, but I do know it worked out very well thus far for me, so I can only hope that by publishing it it will help others.

First off, I’m a 19 year old sophomore neuroscience student. (notably not CS, etc.) 12 months ago, my experience with programming was limited to a CS course in high school. By 1 month ago I had joined a renowned computational neuroscience lab, had my side projects featured in TechCrunch, received a full time engineering job offer from Amazon, internship offers from Google, Apple, eBay, Yahoo, etc. in addition to a handful of startups, and had been invited and flown out to hackathons and tech events across the country. Now I’m founding my own tech startup. This is how it happened:

Method: This you should be able to glean from reading the story, but here’s the distilled method. I learned by doing small project after project that I was very passionate about slightly outside of my skill-set; with each iteration I grew slightly more knowledgeable in the domain, but also had enough prior information to proceed without giving up, knowing I was close enough to succeed if only I learned a little on my own.

It’s a little hard to choose projects that fit this exact description, but you have to select projects at a certain point along the continuum. You’ll know when you’ve found a project that fits this description. You’ll be so excited you begin work immediately. Working on it right away means that you know enough to get started, great.

My immediate advice if you’d like to learn to code is to come up with what you want to build. You’re not learning the science of computation; if you are I urge you to pursue that interest academically. You’re here to learn how to build software, so I urge you to learn by doing just that, building software.

Again, this needs to adhere to all the rules I specified above, so first you should lay out what your skills and interests are. Then compile a list of ideas and their requisite skills. (you’ll even learn a bit just looking up what you’ll need to know to build these ideas; if you need help feel free to email me) Your candidate first projects are the intersection of the skills you have and what you want to build.

I realize I asked you to lay out your skills, and you may be here because you don’t have any technical skills yet. If that’s your case, you’re fine and this will still work for you; the building blocks here are very simple, and the whole method is very self directed. If you have absolutely no technical background initially, and have no particular direction you’d like to go (i.e. mobile vs web vs desktop, etc.) I recommend you start with building your own personal webpage in HTML; everyone is passionate about themselves. I won’t link you directly to a tutorial, but use the search engine of your choice to explore the internet’s vast learning resources on any particular topic. (like this). I highly recommend tutorials you’ve found on your own, because it constitutes learning how to learn.

With sufficient motivation, I believe you can build anything (what I love most about programming), but pick something small, something you know everything or almost everything to complete first. In the interest of continued learning, I’d much rather you finish building something small and useless than give up building something big for your first project. Once that is done, and you’ve established a comfort zone, learn how to step out of it and come up with more ambitious projects than your first. Don’t stick with the list you came up with first. Constantly re-evaluate your current skill-set and watch as your candidate ideas become more significant and ambitious.

With the finalized list of candidate ideas, rank them by how interesting they are to you, and simply choose the one that’s most interesting, that you’d like to see finished most. All of these should be (with some variance) accomplishable with your current skills, so don’t worry about small variations and instead go with what you’re most interested in. In my experience the limiting factor to success (of a simple project or life in general) is not difficulty but passion.

Once you have your idea, take that initial research on what skills you’ll need to build it and do the research again, more thoroughly this time. Modularize your project, break it down into discrete steps and necessary skills. Use queries like “how to make x” and look up every word you don’t know in the results, then do the same for those results. Find components of your project that could be independent from the main project, and figure out how to build those or see if someone else already has (it’s likely someone has, and it’s open source). Don’t be afraid to build on the work of others; Sir Isaac Newton famously noted “If I have seen further it is by standing on the shoulders of giants.”

If it’s hard for you to determine how exactly to build your project from simply searching the internet, consult the most technical person you know. Asking what you need to know to build something is actually a pretty easy question to ask of someone with such knowledge, as opposed to asking them to help you build it or build it themselves. If they don’t oblige or you don’t know anyone technical, I will. Get in touch with me and I’ll be glad to get you going.

Clearly, this approach requires some self-motivation, but it takes advantage of your existing passions, so it shouldn’t be too difficult. You need to be able to excite yourself over an idea; fortunately I’ve never met anyone without such a capacity. Also, I don’t think this method applies exclusively to coding, but I have no evidence to that end so… y.m.m.v.

Further, and I make this an aside to the main method because it isn’t integral to simply learning to code but it is necessary for doing well on all those interviews you’ll get and developing quality engineering skills, grab a copy of “Cracking the Coding Interview” (not affiliated with me at all) and look up everything you don’t know how to solve. Don’t stop at figuring out the solution to the problems; read around the locality of information available (consult the oracle) and you’ll be able to ace any technical interview, and in general approach problems you encounter that have already been solved with existing highly optimized solutions instead of reinventing the wheel.

Here’s my story (not all of it, just how I learned to program):

I’ll start with an event in the summer after sophomore year in high school because it clearly demonstrates the method I outlined above. I’d just finished an introductory (very introductory) computer science elective course in which we developed some simple terminal applications and learned the basics of the programming language, Java. I was helping my brother prepare for a spelling bee by reciting words from a list and asking him to spell them, verifying their correctness afterwards. This was one of the most frustratingly tedious things I’d ever done. At one point I broke down and exclaimed how tedious it was and that I felt like a machine, in fact I know a machine could do this just as well. I told my brother how a simple speech synthesis engine could read out the words and string comparison could easily verify the accuracy of his spelling. He asked why I didn’t make something that did that then? To which I responded that I don’t know how and he remarked that I never actually build anything I have ideas for. This upset me very much, and although it was 6 in the evening I left him mid-study-session to lock myself in my room and figure out how to build what I’d described. I knew Java, so at first I looked into TextToSpeech synthesis engines in Java, but most had complicated implementations and were of very poor quality, until I came across the idea to build an Android app. I learned that Android apps were developed in Java (I knew Java!) and that the Android SDK included a very simple API for TTS. 15 hours later, sleepless, I’d learned Android development and built SpellCoach for my brother to study for his spelling bee. My mother suggested I put it on the Android Market to save someone else the same suffering which motivated me to build it; and although I haven’t touched it since it was an incredible learning experience and exemplifies the accelerative powers of the method I distilled above.

Fast forward several years, in April 2012 I applied to a competitive medical neuroscience research fellowship that I’d been almost guaranteed admission to, but at the last minute they decided not to accept me because they realized I was a freshman and they wanted only upperclassmen. This was in late April, so I freaked out a bit. I didn’t want to waste my summer, so I scoured the web for every summer program, research fellowship, etc. available, but to no avail. My mom suggested I convince my uncle to hire me for his pharma-tech company in Philly. It was by far the best thing on my plate, so I spent the first half of my summer there. I began knowing introductory Java, I finished two months later knowing C#, the Sharepoint SDK, .NET, ASP .NET, AJAX, and Javascript. I’d call that a productive 2 months.

The next few months I devoted to working at an early stage recruiting startup. In developing the web app I learned Ruby on Rails, Twitter Bootstrap, and even some design skills. It really taught me the value of deftness and versatility. I realized how introspective startups need to be, but this is getting away from the point of learning to program.

I got back to school, ready to stop programming and return to my scholarly grind, but that’s not what happened. I couldn’t stop programming; I spent all my free time doing it. Some may wonder how I found the time with schoolwork; I was taking a full coarse load, doing research and working for a startup in Pittsburgh, but when you love something enough, you make time. First month back to school I went to a hackathon, PennApps Fall 2012, with a good friend from high school. That was the seed to my addiction.

At that hackathon my friend and I along with a newfound acquaintance built an intelligent collaborative note taking web application called Notable. I wasn’t very competent at the time; I basically just worked on twilio integration and some small things here and there, but even in that I learned a ton. I loved the idea enough to dedicate 48 hours straight to learning whatever I needed to build it. We loved the project, but we definitely didn’t expect to win anything with it; much to our surprise, we did and all received job offers from a huge e-commerce startup on the spot as well. 10Gen gave us “Best Hack for Students” and I had all the validation my now seeded addiction needed to grow.

About 2 weeks later, my friend suggested we go to HackNY. I loved the last one; it was honestly the most fun weekend of my life to that date, so I was gung ho about going to another. We got there excited to build something, anything, but we had absolutely no idea what in particular we were going to build. We wandered around, a kid from Michigan we met in the elevator suggested just mashing APIs together, but that didn’t excite me. Then we met some kids with a very ambitious idea; a popular Firefox extension, Tilt, enabled developers to view webpages in 3d. They wanted to emulate that technology in some sort of game. I immediately thought it was far too ambitious, dismissed it as impossible, wished them good luck, and walked away. 10 minutes later, an implementation had passively fermented in the back of my mind. We returned to the ambitious kids and told them we’d like to help them give it a shot; 24 hours later, DOM claimed 1st place.

After this my friend from high school mentioned his plans to pursue a tech internship for the summer, and I suddenly realized that I might be able to do the same if I tried hard enough. I immediately applied online to every tech company I could think of, expecting that with volume I may be able to increase my chances of getting a single tech internship.

One month later I went to a tech career fair in NYC. I marched in confidently, and handed my resume to a recruiter at the first company I saw, Spotify. He had read only 1 line of the resume when he put it away saying “Oh, you’re a sophomore? I’m sorry but we’re only looking for upperclassmen and graduates. Please come back next year!”. I marched right back out of the career fair, down the street to the nearest Kinko’s and edited the year off my resume. I wanted at least the slightest chance to impress them before my age came across. Upon returning to the fair I had great conversations for several minutes with each of the recruiters before they had even bothered to ask about what year I was in school. “by the way? what year are you or have you graduated yet?” “I’m actually a sophomore” “oh, no matter, you seem plenty qualified” was generally what transpired for the remainder of the night.

I went to a few more hackathons, won a few more prizes, building things like Deja Vu, a Facebook app that builds a 3d panorama with a time slider from a Facebook event’s photos to virtually recreate the event, and Bestaurant, an intelligent restaurant recommendation iOS app. As you can see I did not let my skills stagnate; I continued to think of ambitious app ideas and step out of my comfort zone to acquire new skills.

Meanwhile I’d received one interview in December for an engineering internship at a startup in NYC. I immediately consulted the internet to help me prepare for a technical interview. I read/memorized TopCoder’s Algorithm Tutorials page, more blog posts than I can count, and “Cracking the Coding Interview”. Immediately prior I was a nervous wreck, contemplating forgoing the interview for fear of failing alone. It was my first phone interview and I certainly didn’t expect to do well. 40 minutes later I’d completed the interview and complained to my roommates about how I forgot to use a hashmap until reminded and should have drank water before the interview because my voice was coarse and possibly incomprehensible. I was very pessimistic. A week later I had another interview and then got an internship offer. I was ecstatic. I thought it was the best I had and didn’t expect any more interviews, but waited to sign the offer just in case.

In January, much to my surprise I had several more phone interviews for both small startups and large tech companies like Amazon.I completely engrossed myself in hackathons, went to 5 hackathons in 5 consecutive weekends. Went to the Foursquare hackathon in NYC where we won with a realtime interactive check-in jukebox called Jamsesh, went to the University Hacker Olympics in SF where we built the self explanatory iOS and Android app called SnapRoulette, went to PennApps Spring 2013 where we won several prizes for our multi-device screen stitching app called Mosaic, went to TartanHacks where we built a webcam techno piano using computer vision called Frequency, and went to MHacks where we built a 3d interface for controlling a computer using stereopsis between mobile devices called Wand. I was knee deep, sinking further and further into a newfound love for programming, and I loved every moment.

By February I’d done more technical interviews in 2 weeks than any sane person could, mostly because I’d sent out a deluge of applications months prior expecting very little response. All of my interviews had been going well, I’d received several offers and soon companies like Google, Amazon and Yahoo were flying me out for interviews. Amazon flying me out had been particularly fishy, because after consulting friends who had interned there I’d found that none of them had onsite interviews and were instead offered internships with just phone interviews. Regardless I flew out to Seattle and took the day long interview, surprised by the difficulty of some of the questions relative to other internship interviews including Google but still treating it like every interview I had until then. A few days later I received a call congratulating me on my full time job offer from Amazon. I immediately realized what had happened and explained to the HR manager that despite telling them my student status they must have mistook my resume’s omitted graduation year for having already graduated, but she was excited rather than upset by this. She congratulated me on doing so well on a full time technical interview despite my inexperience and offered me both a full time job and internship.

I continued to travel, attending SXSW Interactive as a member of InteractATX, flying out to the west coast occasionally for interviews and going to hackathons. My friend and I won HackPSU with Hologram, an iOS app that takes 3d photos by analyzing photos taken under different lighting conditions with the phone’s camera.

Time seemed to fly and before I knew it I’d received almost 2 dozen internship offers from large tech companies and startups, a full time job offer from Amazon, and coverage in TechCrunch for Hologram and Mosaic. Now I’m forgoing all of the internship and job opportunities I’d been pursuing to build something of my own through co-founding a tech startup. It will be incredibly difficult, but my experiences so far make me think nothing is impossible.


It’s been 3 months since I wrote this. I was afraid to post it publicly then and still am, but I’ve been sending it privately to everyone who asks “I want to learn how to code. How did you learn so quickly?” Since I initially wrote this I turned 20, Mosaic won an Apple Design Award at WWDC alongside Letterpress, Evernote, Yahoo! Weather, etc. and was subsequently featured on the App Store.

I also joined the startup accelerator Y Combinator with my aforementioned startup (Watchsend),and just finished. We’re almost done raising our seed round of angel funding and I’m very excited for what’s to come.

I’ll never forget how critical hackathons were for my development. I have a special sore spot in my heart for them, and despite working full time on Watchsend, I take the time to go to, and now help organize, college hackathons like PennApps, MHacks, and HackMIT to give more students the opportunities that changed my life.

Aug 19, 2013


Startups aren’t typical. All successful startups are anomalous in retrospect. There is a very strange set of circumstances, circumstances that have been controlled to attempt to engineer startups as of late, that cause what would otherwise be a normal company to grow abnormally quickly. These circumstances haven’t all been isolated, and I can’t yet tell you from first-hand experience what they are, but I can tell you that these circumstances are as atypical as circumstances in which a company is incubated come. There are the obvious ones, like an idea with the potential to grow quickly, something with an obviously large market potential and low or already addressed barriers to growth, but there are other circumstances. Circumstances that cause the founders to accelerate the growth of the company where it would have otherwise stabilized at SMB level and been replicated into a business model rather than one singular company. I’ll write them out as I realize them (I can only hope that I realize them through personal experience with Watchsend) but after three months I’ve already isolated one.

That one is immersion. There are decisions that are only rational from an insider’s perspective, and those decisions are the kind that drive a startup to cancer-like accelerated growth. It’s interesting that this only happens if you have the ability to immerse yourself in the startup. Every interaction outside of the startup breaks the immersion, elucidates your accomplishment and makes your problems seem less significant. Your self esteem will skyrocket, but your productivity will plummet. The outsiders’ perspective will rub off, they envision you high up on a perch, with a few more footholds to the peak, but only if they were standing on the perch would they notice the minutiae critical to your climb, that every foothold is precarious and every inch of ascension could be the difference between life and death. So that’s at least one lesson learned; don’t lose the immersion, your insiders’ perspective is critical, and be wary of advice from the outside. No matter how intelligent the advisor, unless you are deluded into believing you’ve communicated absolutely all the information you have in the decision, they are unlikely to be so much more intelligent that they’d make a better decision than you would. That may actually be part of another characteristic of its own. These incredible decisions need to be made, and they can either be made on your own or via the advice of an advisor. An advisor could only provide this information if the founders were sufficiently good at communicating their situation, and a better decision would only be made by the founders if they were sufficiently intelligent. That sufficient intelligence is actually a function of the ratio of their intelligence to their ability to communicate to an intelligent advisor. So, the better they are at communicating, the less intelligent they need to be, and the worse they are at communicating, the more intelligent they ought to be. If they are 25% brighter than another set of founders but 50% less communicative, they have a lower chance of success than the other team. The connection here? The more intelligent you are, the more immersed you need to be, because you are that much better equipped to make the kinds of decisions that will jetset your company. How does one determine this ratio in a set of founders, this FQ? What is the magic number threshold considering all other factors constant? I don’t know. It may be something that can only be evaluated en masse with a population study of successful startup founders, but what I do know is that this FQ exists, and subjectively, all successful startup founders I know have a high one. It appears it’s easy to correct for a low FQ, too. Just communicate more, reduce your immersion until it matches your FQ, but no lower. To make the right decisions here you need to be as immersed as possible while still being intelligent yet intentionally risk inclined.

Jun 29, 2013

Day 30

Startups are hard. I am in a state of constant terror, uncertainty, insecurity, and low self esteem. At times I realize how terrifying my current position is, and I spend a few minutes mulling over all my accomplishments in an attempt to justify where I am now. All the greatest entrepreneurs and all the worst were once in this exact position. Their ability to make the right decisions, roll with the punches, to be confident amidst complete uncertainty (and good fortune) put them where they are from where I am. Rather than feel accomplished about where I am I only feel terror at how far I could fall and how much further I have to climb. It’s incredible how far in this direction a startup can throw you, especially when you immerse yourself in it. I began the summer having been lifted high atop a perch by continuous accolades. My self esteem skyrocketed with job offers, prize winnings, praise from all my friends and family, and finally acceptance to a notable startup accelerator. It seemed like life was continuously improving, was becoming ever more exciting, and I was enjoying every minute of it. Then, all of a sudden, I realized what a startup is really like. Startups have none of this; there are accolades, but they don’t have the sheen they did when it wasn’t your primary occupation. Suddenly, there is no satisfaction, nothing is good enough, and you never stop worrying about the next step. After my app won an award I took little time to enjoy the occassion; I instead was struck with worry that the servers wouldn’t be able to handle the traffic. Startups make you mature, control your emotions and think 10x less of yourself while being 100x more productive. It’s interesting that this only happens if you have the ability to immerse yourself in the startup. Every interaction outside of the startup breaks the immersion, elucidates your accomplishment and makes your problems seem less significant. Your self esteem will skyrocket, but your productivity will plummet. The outsiders’ perspective will rub off, they envision you high up on a perch, with a few more footholds to the peak, but only if they were standing on the perch would they notice the minutiae critical to your climb, that every foothold is precarious and every inch of ascension could be the difference between life and death. So that’s at least one lesson learned; don’t lose the immersion, your insiders’ perspective is critical, and be wary of advice from the outside. No matter how intelligent the advisor, unless you are deluded into believing you’ve communicated absolutely all the information you have in the decision, they are unlikely to be so much more intelligent that they’d make a better decision than you would. Frame their decisions respective to the situation they were in, understand the reasoning behind their decision in that situation, and determine whether, and to what extent, it reasonably applies to yours. Every decision is mission critical, and I take solace in the disagreements between myself and my cofounder. The more we discuss and the more we disagree, so long as we are both reasonable, communicative and emotionally transparent, the less likely we are to make a biased, incorrect decision.

Apr 15, 2013

Having a home

This weekend I traveled home from school for 1 day. After traveling the country, sleeping very little and a miserable Pittsburgh winter, it was a much needed break; one I rationalized despite impending finals and travel costs because I'd noticed something. No matter my state, my plans moving forward, my experiences prior, and even the duration of my stay, visiting home puts a new spring in my step. It drives me forward, gives me confidence in everything I do, knowing that no matter what happens, no matter how badly I screw up, there is somewhere on this wonderful planet I can call home; it's a place I can always return to, knowing there will be food at the table, a family that loves me, and a roof over my head. And when I think about how much confidence home gives me, how secure and grounded I feel in this chaotic world, amidst atrocious acts of irrational violence and strife, I can only imagine how awful being homeless is. It is truly rock bottom, to have nowhere to hide from the noise of the world and nowhere to take shelter when the going gets too rough. I push myself as hard as I do in everything I do because I know I can come home, but how can someone who's homeless possibly have that drive without that security? I've read accounts of homeless people having more confidence in everything they do because they've hit rock bottom and know they can go no lower, but I don't think the misery and insecurity are worth it; if anything, they have a lack of complacency. They have no reason to stay where they are, and will do anything in their power to change it. This can be powerful, but without self-esteem having nowhere to go but up is miserable rather than empowering. Maybe the security of having a home and of the lack thereof are similar, but they are sentimental polar opposites. I am incredibly impressed by the drive and ambition of those who pull themselves from homelessness with a fearlessness only they can muster, but most in their situation feel a misery I can only imagine, a misery from which I want to help them escape. The resources to provide them actual homes may not be available easily, but what is feasible is giving them each the opportunity for the security afforded by having a home. If they are to escape they need the sentimental security of knowing there is somewhere they will be cared for, fed and sheltered no matter their circumstances. This isn't a new idea, charitable homes for the less fortunate have existed forever (a testament to the sincerity of mankind), but at least for me I only now realize that there is so much value in a place for the homeless to get these things with absolutely no effort. There is little solace in knowing that with sufficient effort you may be able to feed yourself and escape from a dangerous situation; the security of a home, even if not entirely true, is its permanence. If there were any doubt in my mind that I may not have a home to return to, or that it would take incredible time and effort to secure one, it would manifest in my demeanor. I wouldn't spring forward with such intensity into a risky endeavour if I knew that I may starve if I fail, that I may not have somewhere to go when it's over, that if I fail I will have to work day and night for years to afford the same comfortability I now enjoy. I hear people speak of the homeless as lazy, that they don't work as hard as they possibly can to escape, but the emotional aspects of homelessness appear to be vastly underexaggerated. I hear "I won't give charity to anyone in health. He has 2 arms and 2 legs, he can work", but I suddenly understand the emotional hardship. They are at an emotional disadvantage, in such misery and insecurity that it affects everything they do, and for most only the charity of others will afford them the ability to escape.