Neil's Blog2024-03-29T11:50:23+00:00https://neil.gg/Neil Guptahey@neil.ggThe Quest for Interoperability2023-12-23T00:00:00+00:00https://neil.gg/blog/interoperability
<p class="meta">23 Dec 2023 - Chicago</p>
<p>The blue bubble vs green bubble debate hit a new point recently when <a href="https://www.beeper.com/">Beeper</a> released an Android client for iMessage after a high schooler reverse engineered the protocol and sold the code to them.</p>
<p>While I’m bearish on Beeper as a company<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>, reverse engineering iMessage and releasing a polished Android client is a big deal and impressive work. However, to nobody’s surprise, Apple fixed the security hole that allowed it and broke Beeper’s client within a couple days.</p>
<p>In response, Erik Migicovsky (Beeper’s founder) <a href="https://techcrunch.com/2023/12/08/apple-cuts-off-beeper-minis-access-after-launch-of-service-that-brought-imessage-to-android/">has been arguing</a> that not supporting Beeper actually reduces iMessage security.</p>
<blockquote>
<p>“I would be very interested to hear why they think that making security worse for iPhone users makes sense,” he said.</p>
</blockquote>
<p>Of course, this <a href="https://techcrunch.com/2023/12/18/u-s-lawmakers-call-for-doj-to-investigate-apple-for-blocking-beepers-imessage-app/">triggered regulatory attention</a> on whether Apple should be mandated to support Beeper.</p>
<blockquote>
<p>Apple’s move to cut off Beeper, the app that brought iMessage to Android users, already caught the attention of U.S. Senator Elizabeth Warren, who called out the tech giant for anticompetitive behavior. Now, a bipartisan group of U.S. lawmakers is asking the U.S. Department of Justice to investigate Apple’s “potential anticompetitive treatment of the Beeper Mini messaging application,” noting that “interoperability and interconnections have long been key drivers of competition and consumer choice in communications services.”</p>
</blockquote>
<p>Since then, lots of bytes have been spent debating the merits of opening iMessage to Android users. Beeper’s stance seems to be that they are doing Apple a favor by building an Android client since Apple has been unable to do so, such that not supporting said third party client is anti-competitive.</p>
<p>Let’s be clear, this whole debate is asinine. Erik must know he’s in the wrong, but is playing a game to make his startup viable via regulation. Suggesting that we should force any company to support third party clients to their service is an obviously bad idea if you care about security. Just because Beeper (probably) isn’t doing something shady with user data doesn’t mean Apple must be required to trust them.</p>
<p>What if I make a third party client that actively records my users’ iMessages and sells them to Facebook? Should Apple be required to support my app too? If not, are they expected to audit and vouch for every third party client? If yes, how is Apple supposed to make any claims about the security of iMessage if they have no control over the client my recipient might be using?</p>
<p>The whole interoperable API argument comes from the same place as “encryption where the good guys have keys,” a political pipe dream that anybody with technical experience can tell you is impossible. Yet somehow demands for interoperability seem to be much more popular.</p>
<p>The E2E in “E2E encryption” stands for end-to-end, which inherently requires trusting both ends. Otherwise you might as well not have encryption. Said another way, arguing for interoperable API’s is equivalent to arguing for encryption where only the “good guys” will have the keys. Of course only these hypothetical good guys will make clients for your interoperable API, right?</p>
<p>Note that whether or not companies should be required to support third party clients is a different debate than whether or not Apple should be required to support Android, even if the end result happens to be similar in this case. I think most people defending Beeper are interested in the latter and are willing to burn down encryption to get it via the former. As a user, sure I’d love for my Android friends to use iMessage too. But this is not the way.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup></p>
<p>If Beeper’s goal is to finally destroy encryption via regulation, then this is a smart strategy. If not, I really hope somebody talks some sense into Erik or they run out of VC funding soon, and Erik can go back to advising other startup founders on what not to do.</p>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>Admittedly, I have my own stories of Erik Migicovsky and I happen to work on a community chat platform so I might be a little biased, but chat platforms compete by supporting different features and user experiences. Discord is not the same product as Slack which is not the same product as iMessage. Trying to treat each platform as a commodity backend for transferring bits by unifying the experience means you have to cater to the lowest common denominator, which by definition means the UX must be worse (either for Beeper’s user and/or for the other parties). It’s certainly a fun technical challenge and niche product category. It might even be a viable bootstrapped indie product, but trying to make it a VC funded startup by <a href="https://www.ycombinator.com/companies/beeper">promising a “multi-billion dollar chat app”</a> is a recipe for disaster for many reasons. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>To be clear, I don’t think we should regulate that Apple has to support Android either. If I develop a new OS, would every company be required to build a client for their service for my new OS too? But at least I understand the merits of that debate a little more. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
The Definitive Guide to Business Models2023-08-28T00:00:00+00:00https://neil.gg/blog/definitive-guide-to-business-models
<p class="meta">28 Aug 2023 - Chicago</p>
<p>Founders often struggle to pick the right business model for their product. Your business model is the fundamental engine that defines your business and goals. After people issues, I would bet choosing the wrong model for your strategy is the second largest cause of product failures. There are only a few possible options, so let’s discuss<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup> them in detail from worst to best if your goal is to build a sustainable business.</p>
<h2 id="nothing">Nothing</h2>
<p>Let’s start with the ever popular free business model… Giving a product away for free is really the absence of a business plan. You are trading sustainability for rapid growth, and either kicking the monetization problem down the road or monetizing your users in some other way. This is like trying to start a campfire with rocket fuel. Sure, you’ll accomplish the stated goal but probably not get the results you were hoping.</p>
<p>Free is often necessary for social networks that need to overcome the network effects hurdle and can’t extract value from solo users. Unfortunately these networks very rarely succeed at sustainably monetizing later, so their only options are acquisition or failure (raising lots of VC money at high valuations is not success).</p>
<p><img src="/post_files/hubris.jpg" alt="Interview vs Job" /></p>
<p class="caption"><a href="https://jorts.horse/@glencoe/110959805748522849">You are not Facebook.</a></p>
<p>If you’re debating whether a free model makes sense for you, re-frame the question as whether your business would still make sense if you paid people to use your product, because that is what you’re doing. Many founders delude themselves with complex plans of monetizing after they hit certain milestones, but this is like <a href="https://blog.eladgil.com/p/startups-miracles">betting on multiple miracles</a> at once. While giving away products for free is a rapid (albeit expensive) path to growth, remember that the time it takes your startup to reach peak popularity is your half life. Sometimes a slow burn is actually what you need.</p>
<h2 id="sell-attention">Sell attention</h2>
<p>This is when you monetize your users’ attention via ads. It’s usually the natural follow-up to free models. There is nothing wrong with selling ads per se, but it requires your app having lots of engaged users first. If you’re picking the model for a new product, you are probably falling for the multiple miracles fallacy (lots of people will use your app, and <em>then</em> lots of advertisers will be interested in your user base). Plus, nobody likes ads, so your incentives are no longer aligned with users either, and these products always fall victim to <a href="https://pluralistic.net/2023/01/21/potemkin-ai/#hey-guys">enshittification</a> eventually.</p>
<blockquote>
<p>Here is how platforms die: first, they are good to their users; then they abuse their users to make things better for their business customers; finally, they abuse those business customers to claw back all the value for themselves. Then, they die.</p>
</blockquote>
<p>Avoid this model!</p>
<h2 id="sell-privacy">Sell privacy</h2>
<p>The other way to monetize free products without ads is to directly sell user data to someone else. For example, <a href="https://www.edisonmail.com/">Edison Mail</a> does this by building a free email app and selling market insights to their actual customers. While this approach is even more likely to rely on multiple miracles, it can be a workable model for certain types of problems.</p>
<h2 id="sell-consumables">Sell consumables</h2>
<p>Consumables are ongoing purchases that get spent and then need to be purchased again for continued use. This could be razor blades like Harry’s, coffee pods like Keurig, or printer ink like HP. Enterprise support plans and extended warranties also fall in this category. These models can be successful if the consumable itself provides value to users, or abusive if the consumable is forced upon users to justify the company’s business model. This model is also the most susceptible to competitive pressure since users can switch whenever the consumable runs out.</p>
<h2 id="facilitate-transactions">Facilitate transactions</h2>
<p>If you own a marketplace, you can facilitate transactions between users where you take a cut of the value created. Stripe, Airbnb, Uber and others do this to great effect. This <em>feels</em> free to users because they are only paying when they make money, and perfectly aligns your interests with users’ interests. This is actually the most preferable model if it works for your business, but it is usually limited to marketplace startups.</p>
<h2 id="rent">Rent</h2>
<p>When you charge users a subscription to access your product, you are renting the product to them. It’s the most sustainable model for the developer, but also most frustrating for users. However, certain products require a subscription model and should lean into that. Users are ok subscribing if they understand why. For example, <a href="https://apps.apple.com/us/app/flighty-live-flight-tracker/id1358823008">Flighty</a> provides high quality flight data that costs them money, thereby incurring an ongoing cost the more I use Flighty.</p>
<h2 id="sell-directly">Sell directly</h2>
<p>This is the simplest and oldest business model. You charge users upfront for value and live and die by the quality of your product. The vast majority of products are bought upfront and you can keep using it for as long as it lasts. This model works well for software too, if you charge for major version updates. Charge your users for v1 as you work on the next big thing. When you release v2 next year, it’s totally fair to expect users to upgrade if they want the new features. Those who don’t can keep using their purchased version. Everyone is happy. This works best if your product does not have ongoing costs, like servers or expensive API integrations.</p>
<p>For example, I’ve paid for multiple major <a href="https://apps.apple.com/us/app/reeder-5/id1529445840">Reeder</a> versions (currently on v5) when new features are added, but also know I can keep using Reeder 5 for as long as I want since it has no server component and I don’t expect significant updates to this version. Unfortunately, <a href="https://apps.apple.com/us/app/bear-markdown-notes/id1016366447">Bear</a> chose the wrong model for their business. They are charging a subscription by locking Apple’s built-in features like iCloud syncing behind a paywall. There is no ongoing cost for Bear developers, other than future development. While I pay for Bear anyway, this does leave a bad taste in my mouth. If I ever stop paying, I will lose access to features I’ve already paid for for no reason. For their product, it would be far better if they charge me upfront for Bear 2 and when they are ready to release Bear 3, charge me again!</p>
<p>As long as you’re not trying to <a href="https://en.wikipedia.org/wiki/Rent-seeking">rent-seek</a>, selling your product should bring roughly equivalent revenue to renting it. If you don’t think you’ll be able to release major updates fast enough to match subscription revenue and don’t have any other ongoing cost, then you probably shouldn’t be charging a subscription either because users are going to expect rapid updates for their subscription.</p>
<p>In other words, <strong>if you can, choose the direct sale model.</strong> Unfortunately founders are often reluctant because it feels too simple. Well, I’m here to remind you that telemetry only gets you so far. The best way to know if you’ve made something people want is when they hand over cash for it.</p>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>We’re talking about products only. Human services, like consulting, are not included. Also, pricing is a tangential topic to model. First you have to pick the right model, and then you choose the right price with that model for your specific product. Pricing is out of scope for this post, but you probably should <a href="https://www.kalzumeus.com/2012/09/21/ramit-sethi-and-patrick-mckenzie-on-why-your-customers-would-be-happier-if-you-charged-more/">charge more</a>. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
The New Age of Product Design2023-08-18T00:00:00+00:00https://neil.gg/blog/new-age-of-product-design
<p class="meta">18 Aug 2023 - Chicago</p>
<p>The 2010’s were dominated by people trying to make large-scale platform apps. Primarily inspired by the success of Facebook and similar platforms, this was a zero-interest rate phenomenon. We’re now going to see the pendulum swing back towards sustainable indie development – small teams making high quality apps solving niche problems with a simple business model.</p>
<p>Some iOS apps that have been in the news cycle recently:</p>
<h3 id="flighty">Flighty</h3>
<p><a href="https://apps.apple.com/app/apple-store/id1358823008">Flighty</a> is an exquisitely designed flight tracker. It doesn’t sync your boarding pass, track your airline points, manage hotel reservations, or anything else. It <em>only</em> tracks your flights, executes that goal perfectly, and charges you directly for the experience.</p>
<h3 id="bear">Bear</h3>
<p><a href="https://apps.apple.com/it/app/bear-markdown-notes/id1016366447?l=en">Bear</a> is a nicer notes app. It arguably doesn’t do anything the built-in Apple Notes app can’t do, and in fact it does a lot less (no collaborative features, for example). But the things it does do just feel <em>nicer</em>. The typography is nicer, the tagging is nicer, the search is nicer. And for this nicer experience, Bear charges you a subscription directly.</p>
<h3 id="callsheet">Callsheet</h3>
<p><a href="https://apps.apple.com/us/app/callsheet-find-cast-crew/id1672356376">Callsheet</a> lets you find information about the shows and movies you’re watching. It’s a nicer designed and <em>very fast</em> alternative to IMDB, and if it improves your life, you can subscribe.</p>
<h3 id="catchup">Catchup</h3>
<p><a href="https://apps.apple.com/us/app/catchup-stay-in-touch/id6450726946">Catchup</a> is a very simple app to remember who you need to, uh, catch up with. That’s it. Everything it does is on the tin. Want to use it? Great, guess what? You can pay $8 directly to the developer!</p>
<h2 id="ok-i-get-it-whats-your-point">Ok I get it, what’s your point?</h2>
<p>Startups can’t grow with free money and hope to figure out monetization later anymore. That means we are going to keep seeing more apps that charge users directly and upfront for value provided. Sure, this will eventually lead to a consumer backlash against all the recurring subscriptions but ultimately this means we’ll all only use apps that actually improve our lives and resonate with us, rather than pages and pages of free apps that are mining our data or abusing our attention in misguided attempts towards hyper growth.</p>
<p>However, in a world where users pay for your apps directly, you have to make higher quality apps that people <em>love</em>, not just tolerate. A fundamental rule of design is that you can’t make something that everyone loves, so you need to carefully pick your target market and design the perfect experience for that group.</p>
<p>How do you pick a niche? Well first we need to take a detour and talk about how people accomplish their goals.</p>
<p>In psychology, it’s believed there are 3 dimensions of the brain: cognitive (how you think), affective (how you feel), and conative (how you work) that all blend together to determine what we’ll do and how. By picking a particular problem space, you’re already filtering down to people who have the same problem (cognitive) and, equally important, <em>care</em> to solve it (affective). However, we rarely talk about <em>how</em> those people solve that problem (conative) as a market niche.</p>
<p>The Kolbe framework describes 4 conative styles that we all posses at varying degrees: <strong>Fact finder</strong> (do you prefer to research and collect as much data as possible when solving a problem?), <strong>follow-through</strong> (do you prefer to build a structure around the problem and execute it systematically?), <strong>quickstart</strong> (do you prefer to brainstorm new solutions?), and <strong>implementer</strong> (do you prefer to tinker and try things?). Please excuse the names, this framework is from the 80’s, but it still holds up surprisingly well. Fortunately these styles can actually be quantitatively measured and analyzed with a simple test<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>, which lets us know exactly which style(s) drives us the most. If your actions are conatively aligned, you will be much happier. If not, you’re going to burn a lot of willpower and energy trying to force yourself to work in an <a href="/blog/authenticity-at-work/">inauthentic way</a>.</p>
<p>These conative styles fundamentally measure how we accomplish goals and instinctively behave when solving problems. This is important because your product will only appeal to 1-2 of these styles at most (the worst case scenario is it appeals to none because you tried to design for everyone). Most likely, certain people will love your solution and others won’t get it. This is to be expected.</p>
<p>From the list of new apps I mentioned above, if you found yourself laughing at any of them as silly or unnecessary, you probably aren’t the target conative and/or cognitive group. For example, Flighty is designed for high fact finders who love to travel and want to know everything about their flights. If that’s not you, this feels redundant over what your calendar already tells you. Callsheet is also designed for high fact finders who want to know everything about a movie or show. Again, this is redundant over what your TV probably already tells you too if you don’t care about all the details.</p>
<p>On the other hand, Catchup is built for high quickstart, low follow-through combos. It’s useful for people who want to talk but are terrible at remembering to reach out to people consistently enough to maintain a relationship. If that’s not you, you will never pay for an app that reminds you to text someone. I know people who laughed when it launched, but my high quickstart, low follow-through friend immediately saw the value.</p>
<p>I used to wonder why people loved apps like <a href="https://www.notion.so/">Notion</a> and <a href="https://www.airtable.com/">AirTable</a> so much. Well it’s because these appeal to the high follow-throughs among us who love to organize and structure their thoughts. I much prefer Bear’s minimalist approach. And that’s fine! I’m Bear’s ideal target market, but not Notion’s, even though they solve similar cognitive problems.</p>
<h2 id="how-can-i-use-this-to-build-a-beloved-app-too">How can I use this to build a beloved app too?</h2>
<p>You’ve probably heard the startup adage “solve a problem you have.” This addresses the cognitive angle (focus on what you know instead of imagining a problem), but I’ll add “solve a problem you have <em>how you wish it could be solved</em>.” In other words, build for how you naturally want to solve that problem (aka your conative profile), not how you imagine others would solve it, because you understand your own instincts the best. Trust me, it’s nearly impossible to imagine how people with different conative instincts will approach the same problem, let alone make a successful product that resonates with their approach.</p>
<p>Whenever you think about your product’s target user, also ask what is your product’s target conative profile?</p>
<p>Keep in mind that most societies are optimized for high follow-through, low quickstart combos, so if that’s not you, it may feel like your solution won’t have a large audience. Fortunately, studies show that each of the 4 conative traits follow a normal (Gaussian) distribution, even if every culture socializes us to behave in its preferred way on the surface. That means that if you solve a big problem in the way that you wish it could be done, it will almost certainly resonate with a lot of other people too.</p>
<p>This also tells us that user research is most effective when you can filter your participant group or contextualize your results based on both cognitive and conative profiles. Just like you wouldn’t ask for feedback on a flight tracking app from someone who never flies, don’t rely too heavily on feedback for your high fact finder app from someone who doesn’t instinctively crave more data. Otherwise you’ll get lots of confusing results and no clear direction. You might’ve heard stories about visionary founders who ignored the user research and went with their gut despite what the data said… well they were actually just building for themselves.</p>
<p>In a world where you can’t rely on products to grow just because they are free, we’ll see more products that (consciously or unconsciously) build for very specific types of people, both cognitively and conatively. This is going to be an excellent time to enjoy highly specialized and quality products that feel bespoke, especially compared to the output of the last decade.</p>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>If you’re curious about your own Kolbe scores, you can take the Kolbe-A test <a href="https://secure.kolbe.com/k2/show_takeIndex/indexType_A">here</a>. Unfortunately Kolbe the company is much harder to praise than Kolbe the framework. Be warned, the website is frustratingly bad and the test does cost $55 to get your results, but I do think it’s worth it despite its flaws. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Authenticity at Work2023-07-31T00:00:00+00:00https://neil.gg/blog/authenticity-at-work
<p class="meta">31 Jul 2023 - Chicago</p>
<p>We often talk about being authentic at work. But what does that even mean? Why do these discussions always turn into group therapy sessions without an actionable outcome? I think it’s because we don’t have the vocabulary to truly talk about the problem.</p>
<p>To make progress, we first need to understand that there are 3 types of authenticity: cognitive, affective, and conative.</p>
<h2 id="cognitive-authenticity">Cognitive Authenticity</h2>
<blockquote>
<p>Cognition deals with what we <em>know</em> and prefer to work on (our skills).</p>
</blockquote>
<p>At work, we are obviously expected to bring our cognitive self, as this is what we’re explicitly interviewed and hired for. Ideally, you are hired to work on things you know how to do or have the expertise to learn quickly. However, if you try to do something completely outside of your skillset and you don’t have the resources or capacity to learn it quickly, your performance will obviously suffer. Similarly, if you are way overqualified for a job and bored, your performance will also suffer. In both cases, you are not allowed to be authentic to your cognitive self.</p>
<p>Fortunately, a reasonable lack of cognitive authenticity is usually the easiest to fix by either learning the new skill necessary for the job or switching roles to match your existing skills. Companies often fail here when they are unable to adjust their hiring process for the actual role they need, usually ending up with lots of overqualified and bored people, or conversely, hire too quickly and let their hiring bar fall.</p>
<p><img src="/post_files/interviews.jpg" alt="Interview vs Job" /></p>
<h2 id="affective-authenticity">Affective Authenticity</h2>
<blockquote>
<p>Affectivity deals with how we <em>feel</em> at work (our emotions), whether that’s personal (what’s happening at home?) or professional (do you disagree with the company’s mission?)</p>
</blockquote>
<p>Most discussions about authenticity focus on allowing us to bring our affective side to work by asking us to be vulnerable. This is important for sure and we should strive to create safe environments at work that allow people to share how they are feeling.</p>
<p>Why? Because when people trust their team to protect them when they are down, they will also put in the effort and go the extra mile for their team when necessary.</p>
<p>Unfortunately, this is trickier to identify, since most of us are socialized to hide our feelings (especially at work), so you may not know that someone is being emotionally inauthentic when they are smiling and acting positive even if they might be suffering internally. Take the time to get to know people and create space for them to open up. This may sound like a waste of energy at first when there’s work to be done, but will pay dividends in the future.</p>
<h2 id="conative-authenticity">Conative Authenticity</h2>
<blockquote>
<p>Conation deals with how we <em>do</em> the work (our process), including our preferred work styles and natural instincts when solving problems.</p>
</blockquote>
<p>This is the least discussed and understood, but in my opinion, the most interesting and impactful one. We should all be focused on how we can be conatively authentic at work because it has the potential to 10x our productivity and happiness. It is also the most likely source of inauthenticity at work, directly causing untold losses.</p>
<p>Every person has a different conative profile. For example, do you prefer to create structure around how you’re going to solve a problem first, or do you find structure limiting? Do you prefer to absorb any available data to understand the whole picture as the first step, or do you prefer to dive-in and figure it out as you go? These are all valid work styles with different pros and cons, but when your team’s culture or manager’s style doesn’t match your’s, you will burn a lot of willpower to try to fit in and be exhausted, and you won’t even understand why.</p>
<p>If you hate structure but are forced to work in a highly structured environment, you are not going to be productive. Likewise, if you are not interested in researching all of the data, being asked to read all the client briefs instead of summaries will deplete your energy. If your brain is constantly thinking of new approaches to things, maintaining old legacy software will take more energy than for someone who naturally prefers maintaining consistency in their life. If we don’t understand our own and each other’s instinctive styles, we cannot efficiently assign the right tasks to the right people, thus wasting everyone’s energy. The best teams have a diversity of conative profiles and recognize their differences as strengths so they can lean on each other’s pros and mask each other’s cons, but understanding each other’s styles and allowing people to be conatively authentic is the first step to harnessing that extra superpower.</p>
<p>Unfortunately this is not an easy problem, hence why it is the least discussed and understood dimension. The <a href="https://secure.kolbe.com/k2/show_takeIndex/indexType_A">Kolbe A index</a> is a good starting point for understanding your conative profile, but it’s still not great… more thoughts on this later!</p>
<p>We need authenticity in all 3 dimensions to be truly authentic to ourselves. A failure to be authentic in any of the dimensions for too long will eventually lead to either burn-out or bore-out, and plenty of lost productivity in the meantime. This is an important problem worth solving, but let’s get our vocabulary right first. Without an understanding of what authenticity even is, how can we possibly hope to even discuss it appropriately?</p>
The Paradox of European Privacy Laws2023-01-23T00:00:00+00:00https://neil.gg/blog/paradox-of-eu-privacy-laws
<p class="meta">23 Jan 2023 - San Mateo</p>
<p>The EU is at it again with sweeping new privacy laws called the Digital Services Act (DSA) that will take effect next year. Their goals are admirable, but their execution is questionable. And like when GDPR rolled out, there’s a lot of open questions.</p>
<p>For example, DSA requires that companies publish their Monthly Active User (MAU) counts for their EU users publicly. The reasoning is the EU wants to have a stricter set of rules for companies with more than 45 million MAU. Seems reasonable so far. However, in order to know your European MAU, you need to know which of your users are in the EU. Sure, Facebook and Google know where their users are, but most companies don’t actually have a need to track their users’ locations. You could estimate it from the user’s IP address, but that still requires going out of your way to seek that personal info, and then, most importantly, <em>storing</em> that data for the user. But wait a minute, storing unnecessary personal data is illegal thanks to other EU privacy regulations.</p>
<p>So which law should you follow? 🤷♂️</p>
<p>Similarly, let’s say Alice reports Bob to your service. German law requires that if Alice is based in Germany, we must notify Bob that a German user has reported them. Now continent-level granularity isn’t good enough, we need to know each user’s country. In the US, California has its own set of privacy laws, so we actually need state-level. Eventually we might need exact location data to adhere to all the laws in a user’s jurisdiction.</p>
<p>This is just a couple examples, there are dozens of contradictory regulations being introduced and nobody knows how they will be enforced. Will we be forced to reduce user privacy to comply with unnecessary laws? Maybe!</p>
<p>It’s clear the EU is writing these laws with Facebook and Google specifically in mind, without consideration for how it might impact other more responsible companies. And this is unfortunate because user privacy does need to be protected, but the current approach might just do the opposite.</p>
The Mathematics of FOMO2023-01-13T00:00:00+00:00https://neil.gg/blog/what-is-fomo
<p class="meta">13 Jan 2023 - Chicago</p>
<p>Have you ever felt a twinge of anxiety when scrolling through social media, seeing all the fun events and experiences your friends are having without you? That’s FOMO, or Fear of Missing Out. But what <em>exactly</em> is FOMO, and why do we feel it?</p>
<p>A couple months ago, I was traveling through Germany with my favorite people. One night, my brother-in-law was feeling FOMO for having to work in his hotel room while the rest of us went out, leading one of my closest friends to confess that she had never felt FOMO before and didn’t understand the feeling. Why would you fear missing something?</p>
<p>The rest of us were flabbergasted and eyed her with deep suspicion before throwing example after example at her of when we had felt FOMO. Luckily, she was a theoretical physicist, so she diligently catalogued our examples and created a new model…</p>
<p>Here’s what we know:</p>
<ol>
<li>FOMO requires 2 simultaneous timelines: your current one and an alternative one you could be enjoying.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup></li>
<li>You feel more FOMO if there is a larger gap between the fun you’re having now and the fun you could have been having. Intuitively, you won’t feel FOMO if what you’re doing now is just as fun as the alternative.</li>
<li>You will feel less FOMO if the alternative option was impossible to do or required too much activation energy.</li>
</ol>
<p>Putting these together<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup>, we concluded that</p>
<p><img src="/post_files/fomo.png" alt="FOMO equation" style="width: 273px;max-width:100%;margin: 20px auto;" /></p>
<p>where <em>P<sub>theoretical</sub></em> is how much pleasure or fun you expect from the alternative activity, <em>P<sub>actual</sub></em> is how much fun you’re having now, <em>E<sub>required</sub></em> is how much energy you would need to do the alternative activity, and <em>E<sub>available</sub></em> is how much energy you have available now.</p>
<p>In other words, FOMO is proportional to the difference in pleasure divided by the difference in energy required.</p>
<h2 id="difference-in-pleasure">Difference in Pleasure</h2>
<p>If you’re missing the best party in the world (however you define that) because you have to do chores, <em>P<sub>theoretical</sub></em> is way larger than <em>P<sub>actual</sub></em> and there’s going to be a lot of FOMO. On the other hand, if while doing chores, you find a winning lottery ticket under your couch, your FOMO for the party might evaporate.</p>
<p>FOMO increases as the delta between theoretical and actual pleasure increases. If it’s ever negative, there’s no FOMO because that means you’re already on the more optimal path.</p>
<h2 id="difference-in-energy">Difference in Energy</h2>
<p>Similarly, you’re going to feel more FOMO if you missed out because you forgot to reply to a friend’s text. The activation energy needed to achieve the missed opportunity was so low. However, if you needed to collect the root of a Quiver Tree, soil from Mordor, and a witch’s toenail first, you’re going feel a lot less FOMO because it was highly unlikely you could have made it anyway. You’re not “missing out” because it was never yours to begin with.</p>
<p>FOMO increases as the delta between required and available energy <em>decreases</em>. If it’s ever negative, there’s no FOMO because that means you would have already chosen the more optimal path.</p>
<p>Note that “energy” is an all-encompassing term for you and your environment’s kinetic and potential energies, not just your internal energy levels. It doesn’t matter how much cocaine you do, if you need soil from Mordor, <em>E<sub>required</sub></em> will always be astronomically greater than <em>E<sub>available</sub></em>. More realistically, finances are a common external blocker. If you don’t have enough money to do something, the activation energy required would include the energy and time needed to first make enough money to overcome that blocker. If you only needed $10 more, that’s going to create more FOMO than if you needed to make $1 million first. This is why you don’t feel FOMO for missing your favorite celebrity’s party even when you’re in the same town.</p>
<h2 id="division-by-zero">Division by Zero?</h2>
<p>You may have noticed by now that this model breaks if <em>E<sub>required</sub></em> is equal to <em>E<sub>available</sub></em>. That’s because FOMO only applies if <em>E<sub>required</sub></em> > <em>E<sub>available</sub></em> and <em>P<sub>theoretical</sub></em> > <em>P<sub>actual</sub></em>. In all other scenarios, you would have chosen the more pleasurable decision already so there can’t be any FOMO by definition. Or visually,</p>
<p><a href="/post_files/fomo2.png" title="Click to enlarge"><img src="/post_files/fomo2.png" alt="Full FOMO equation" style="width: 739px;max-width:100%;margin: 20px auto;" /></a></p>
<h2 id="now-what">Now What?</h2>
<p>Next time somebody asks if you’re feeling FOMO, you can calculate it! Interestingly, ever since I’ve started thinking of FOMO in these terms, the feeling has entirely disappeared. Now I can directly identify how there was too much energy differential or not enough pleasure differential and preemptively halt the anxiety-inducing mental process.</p>
<p>I’m fascinated by this idea of describing a mental process with an equation. What other emotions can we define with mathematics? If this is interesting to you, <a href="https://steadyhq.com/en/damariskroeber/about">subscribe to my friend’s newsletter</a> where she writes about more insights like these!</p>
<!-- LaTeX code:
<script
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
type="text/javascript">
</script>
$$FOMO \sim \frac{P_{theoretical} - P_{actual}}{E_{required} - E_{available}}$$
$$FOMO \sim
\begin{cases}
\frac{P_{theoretical} - P_{actual}}{E_{required} - E_{available}} & \text{if } E_{required} \gt E_{available}, P_{theoretical} \gt P_{actual}\\
0 & \text{otherwise}
\end{cases}$$
-->
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>This differs from regret, which deals with something in the past, but that’s a topic for another post. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>This took 4 hours and over 3 pages of notes… <a href="/post_files/fomo_notes.jpeg" title="Click to enlarge"><img src="/post_files/fomo_notes.jpeg" alt="Our notes" style="width: 480px;max-width:100%;margin: 20px auto;" /></a> I can only assume the other restaurant patrons were feeling some FOMO watching us go 😉 <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Building an iCal Subscription2020-09-03T00:00:00+00:00https://neil.gg/blog/building-an-ical-subscription
<p class="meta">03 Sep 2020 - Chicago</p>
<p>I recently wanted to sync events between <a href="https://guilded.gg">Guilded</a> and my personal calendar. The simplest solution is to generate an <a href="https://en.wikipedia.org/wiki/ICalendar">iCalendar</a> file that is served from a personal endpoint for each user. When they subscribe, their calendar app basically acts like an RSS reader and periodically checks the endpoint for the latest list of events.</p>
<p>There are plenty of libraries in your chosen language to generate the <code class="language-plaintext highlighter-rouge">.ics</code> file, and the spec is simple enough that you could even generate it by hand. Here’s a sample with a single event:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
PRODID:Guilded
METHOD:PUBLISH
X-WR-CALNAME:Guilded
X-PUBLISHED-TTL:PT1H
BEGIN:VEVENT
UID:8fd1dd04-0243-419f-8b0e-186af1375e38-event-209@guilded.gg
SUMMARY:My Fun Event
DTSTAMP:20200903T063216Z
DTSTART:20200826T070000Z
DTEND:20200826T080000Z
DESCRIPTION:yoooo\n\nhttps://neil.gg
URL:https://guilded.gg/teams/...
LOCATION:Monkey Island
STATUS:CONFIRMED
CREATED:20200822T113900Z
END:VEVENT
END:VCALENDAR
</code></pre></div></div>
<p>In a nutshell, you can add as many <code class="language-plaintext highlighter-rouge">VEVENT</code> blocks as you need to show more events. The only catch is that this file needs to show <em>all</em> events that you want in the user’s calendar. Unlike an RSS reader, most calendar apps won’t keep a cache of old events around. That means over time, this file can grow very large. I recommend limiting it to a sensible range (i.e., events from 1 month ago to 1 year from now), depending on your use case.</p>
<p>There are also some little things you need to know to actually make this calendar work with the variety of calendar services that I couldn’t find documented anywhere. After a lot of investigating (and trial and error), here’s some tips and tricks to help you build your ICS endpoint faster.</p>
<h2 id="content-headers">Content Headers</h2>
<p>Make sure you’re serving your calendar file with the right headers. In particular, they should look like</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Content-Type: text/calendar; charset=utf-8
Content-Disposition: attachment; filename="calendar.ics"
</code></pre></div></div>
<p>This is pretty straightforward, but easy to miss.</p>
<h2 id="accept-header"><code class="language-plaintext highlighter-rouge">Accept</code> Header</h2>
<p>Your server needs to respond to <code class="language-plaintext highlighter-rouge">Accept: text/calendar</code> request headers from the client. It looks like iOS is the only one that actually sends the header, but if the request gets rejected, it shows an unhelpful “Unable to verify account information” error. Since a rejected <code class="language-plaintext highlighter-rouge">Accept</code> header returns a <code class="language-plaintext highlighter-rouge">406 Not Acceptable</code> response, it’s easy to miss if you don’t normally log 4xx errors.</p>
<h2 id="url-length">URL Length</h2>
<p>This one was frustrating to discover, but Google Calendar has a max url length of 256 characters. This isn’t documented anywhere and trying to use a longer URL doesn’t show any error, the UI just silently fails. In my case, the user token was going over that limit, so I had to change my hashing algorithm to create a shorter token.</p>
<h2 id="query-params">Query Params</h2>
<p>As far as I can tell, query params do work with most calendar apps, but I’d still recommend avoiding them if possible. For example, I changed the calendar path from <code class="language-plaintext highlighter-rouge">https://guilded.gg/users/me/calendar.ics?token=blabla</code> to <code class="language-plaintext highlighter-rouge">https://guilded.gg/users/blabla/calendar.ics</code> to ensure that we don’t hit issues with some obscure calendar app. It also helps cut down the url length as a bonus.</p>
<h2 id="testing">Testing</h2>
<p>It turns out the Apple Calendar on macOS is the most forgiving and works exactly like your browser. It’ll happily sync any valid ICS file without any of the setup above. That means you definitely want to test your endpoint with other apps directly, especially iOS, Google Calendar, and Outlook. I recommend using something like <a href="https://ngrok.com">ngrok</a> to quickly test your local endpoint. As a bonus, it includes a detailed dashboard at <code class="language-plaintext highlighter-rouge">http://localhost:4040</code> for viewing request headers and replaying requests to make debugging <em>much</em> easier. This is how I resolved the 406 error above!</p>
<p><img src="/post_files/ngrok.png" alt="ngrok" /></p>
DIY Video Streaming2020-07-20T00:00:00+00:00https://neil.gg/blog/diy-video-streaming
<p class="meta">20 Jul 2020 - Chicago</p>
<p>While building <a href="https://hiome.com">Hiome</a>, I needed to show a demo video of the product in action. Like most people, I initially tried embedding a YouTube video, but there were too many trade-offs (particularly privacy concerns and the inability to turn off related videos at the end, which would whisk people away from Hiome). In general, I lean towards minimalist setups and wanted to just host the video myself in a native video player. Simple enough.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><video controls width="100%" preload="auto" poster="/images/poster.jpg">
<source src="/media/video.mp4" type="video/mp4">
Sorry, your browser doesn't support embedded videos.
</video>
</code></pre></div></div>
<p><strong>Not so fast.</strong> Even if the video file is hosted on a blazing fast CDN, your users are still going to have to wait for the video to buffer when they hit play and if they skip around in the video. That’s because their browser will download the entire file from the beginning when they hit play.</p>
<p>One of the key benefits of a video hosting website like YouTube is that it provides adaptive streaming of the video. In simplified terms, that means the video is split up into lots of small chunks that the browser can download as needed. Usually, the first chunk is downloaded on page load and the rest are streamed as the video plays. If the user skips to a different part of the video, the browser can immediately download the relevant chunk. It makes everything feel <em>much</em> faster. The protocol to make all this happen is called <a href="https://en.wikipedia.org/wiki/HTTP_Live_Streaming">HLS</a>.</p>
<p>Luckily, setting up an HLS stream is much easier thank it looks. In fact, AWS provides the tools to convert your video into the necessary format in a couple clicks!</p>
<ol>
<li>Upload your 4k video to an S3 bucket</li>
<li>In <a href="https://aws.amazon.com/mediaconvert/">AWS MediaConvert</a>, click on <code class="language-plaintext highlighter-rouge">Job Templates</code>, choose <code class="language-plaintext highlighter-rouge">System Templates</code> in the dropdown, and create a job from <code class="language-plaintext highlighter-rouge">System-Ott_Hls_Ts_Avc_Aac</code>
<img src="/post_files/mediaconvert.png" alt="MediaConvert Dashboard" /></li>
<li>Set output to your S3 bucket and add your uploaded video as the input</li>
<li>Create an IAM role with access to your S3 bucket and MediaConvert</li>
<li>Start the job and wait for it to finish</li>
<li>Mark the newly created files as public in S3 and make sure there’s a Cloudfront distribution for the S3 bucket</li>
</ol>
<p>If you don’t want to host from S3, you can copy the necessary files out of your S3 bucket with the following CLI command:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>aws s3 cp s3://${NAME_OF_BUCKET}/ . --recursive --exclude "*" --include "${FILE_NAME_WITHOUT_EXTENSION}*" --exclude "*.mp4"
</code></pre></div></div>
<p>We’re almost there! Unfortunately, <a href="https://caniuse.com/#feat=http-live-streaming">browser support for HLS</a> is pretty terrible today… To workaround that, we’ll use the excellent <a href="https://github.com/video-dev/hls.js/">hls.js</a> polyfill to add support when needed.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>const video = document.getElementById('heroVid')
const src = '/hls/video.m3u8'
if (video.canPlayType('application/vnd.apple.mpegurl')) {
// native HLS support
video.src = src
} else if (Hls.isSupported()) {
// fallback to hls.js
const hls = new Hls();
hls.loadSource(src)
hls.attachMedia(video)
} else {
// fallback to downloading whole media file like a chump
video.src = '/video.mp4'
}
</code></pre></div></div>
<p>I made <a href="https://gist.github.com/neilgupta/2368403736ce1b81570632f5973b9e87">a simple React wrapper around the video element</a> to handle this logic, as well as standardize how poster images behave between browsers. You can see a demo of all of this at work at <a href="https://hiome.com">hiome.com</a></p>
<p>I hope this helps more people own their content and move away from defaulting to embedding YouTube players everywhere!</p>
My Dream Tool for Remote 1:1 Meetings2020-04-07T00:00:00+00:00https://neil.gg/blog/dream-tool-for-remote-meetings
<p class="meta">07 Apr 2020 - Chicago</p>
<p>As our collective remote work experience continues, it’s been interesting watching my girlfriend adapt her 1:1’s with her direct reports to work better remotely. She’s using a shared OneNote file to track agenda, notes, and action items in one place. It works well, but things get lost easily. As I listened to her work this morning, I quickly sketched my ideal tool for managing remote meetings…</p>
<p><a href="/post_files/1-1-meetings-ui.png"><img src="/post_files/1-1-meetings-ui.png" alt="My Sketch" /></a></p>
<h2 id="collaborative-agenda">Collaborative Agenda</h2>
<p>Of course, the shared notes in the center would be collaborative like Google Docs. Both people can add topics to the agenda beforehand and take notes during the meeting.</p>
<h2 id="recordings">Recordings</h2>
<p>Not pictured in my sketch, but the tool should also have the option to record audio during the meeting. The notes should sync with the audio, so you can go back and listen to what was being said when something was typed.</p>
<h2 id="action-items">Action Items</h2>
<p>Any line from your notes can be turned into an action item and assigned to either person, adding it to their action items list. An action item can be given a due date if you want. When an item is marked as completed, it is automatically added to the bottom of the next agenda so it can be reviewed. It’s also added to the next agenda if the due date passes without completion.</p>
<p>Action items persist between meetings until resolved, so they don’t get lost to the annals of time.</p>
<h2 id="integrations">Integrations</h2>
<p>The action items should integrate with your preferred todo app, so that you can keep using your existing workflow for managing your day and not have yet another project management tool. The goal is to facilitate remote collaboration without forcing you to change your behavior.</p>
<p>Also, you would be able to add agenda or action items via Slack, of course.</p>
<p>Does this tool already exist? I’d love to <a href="mailto:hey@neil.gg">know about it</a>!</p>
Keeping Your Culture While Remote2020-03-19T00:00:00+00:00https://neil.gg/blog/play-from-home
<p class="meta">19 Mar 2020 - Chicago</p>
<p>Welcome to 2020. We’re in a strange new world of social distancing and shelter-in-place. Millions of people are adjusting to this new reality and learning how to work from home under duress. Countless bytes have already been spilled on how to work effectively and maintain your health while staying home. However, one area I’m seeing a lot of people struggling is socializing remotely and maintaining their team’s culture. As someone who used to lead a fully remote team with people in 5 out of 6 US timezones, here are some things I learned.</p>
<h2 id="-pad-your-agendas">🗓 Pad Your Agendas</h2>
<p>This one is more general culture building advice that applies in all situations, but is especially important right now… relax on the meeting agenda. Spend the first 10-15 minutes of every call just chatting about how people are feeling, things to look forward to (<em>have you watched Hunters yet on Amazon Prime!?</em>), etc. There’s no water cooler to connect over and people won’t start video calls just to chat, so these 10 minutes are absolutely critical for your team. Incidentally, letting teams go on tangents and deviate from a strict agenda also creates higher psychological safety and <a href="https://www.nytimes.com/2016/02/28/magazine/what-google-learned-from-its-quest-to-build-the-perfect-team.html">higher performing teams</a>.</p>
<p>Slack or Basecamp is also helpful for facilitating this kind of chit chat, but if you’re not used to working remotely, this can feel awkward. Don’t expect too much activity at first, but you can encourage it by proactively sharing fun links throughout the day to set the mood.</p>
<p><img src="/post_files/games/jedi.jpg" alt="Working From Home Like a Jedi" /></p>
<h2 id="-collaborate">👩💻👨💻 Collaborate</h2>
<p>Along the same lines, it can be uncomfortable to ping your teammates on Slack when you’re not used to doing it, but don’t feel bad about it! I promise you’re not disrupting them any more than if you walked up to their desk. Ask to hop on calls more than you think is necessary. The biggest feedback I got from my team is that they wished we spent more time in video calls for more face time.</p>
<p><a href="https://slack.com">Slack</a>, <a href="https://zoom.us">Zoom</a>, <a href="https://basecamp.com">Basecamp</a>, and <a href="https://tandem.chat">Tandem</a> make it super easy to collaborate on work as if you’re in the same room. I like how Slack makes it possible for anyone to drop in on an active call, much like a water cooler. Basecamp is great for encouraging discussion without the stress of interrupting someone in real-time. I haven’t tried Tandem, but it looks like a promising way to recreate some of the spontaneous office vibe. The right tool for you will depend on your team’s culture and preferences.</p>
<h2 id="-play-games">🎲 Play Games!</h2>
<p>Lots of people have asked how to have fun remotely. Team building activities are obviously much easier when everyone is together, but you have options! There are several games that can be played over video chat. Most are free, some cost around $20. All of them are worth trying!</p>
<h3 id="jackbox-games">Jackbox Games</h3>
<p>If you’re looking for silly fun to get your mind off things, Jackbox is perfect. Each Jackbox game is actually a pack of 5-6 mini games designed for parties. One person buys the game and hosts by sharing their screen, and everybody else joins remotely from their phone via <a href="https://jackbox.tv">jackbox.tv</a>. Each game generally supports up to 8 people.</p>
<p>The games are easy to learn and play for everyone. Some of our favorites were Drawful (similar to pictionary, but everyone is drawing poorly on their phones), Quiplash (mad libs where everyone votes on the best answers), and Trivia Murder Party (a serial killer themed trivia game).</p>
<p>There are currently 6 different Jackbox party packs, each with different mini games. My personal favorite collection is Jackbox 3, but you should try them all if you can. You can buy the packs on Steam for around $25 - $30 each.</p>
<p><em>Tip:</em> If you’re hosting on macOS, you may also want to use <a href="https://rogueamoeba.com/soundsource/">SoundSource</a> to control audio levels from Zoom and Jackbox separately, but this is optional.</p>
<h3 id="keep-talking-and-nobody-explodes">Keep Talking and Nobody Explodes</h3>
<p>Defuse a bomb before it explodes! The catch is only one person can see the bomb. They have to describe what they’re seeing, while everyone else has to figure out how to defuse the bomb by reading the <a href="http://www.bombmanual.com">bomb manual</a> and guiding the person with the bomb.</p>
<p>If you’re looking for team building, this is the game you want. You will have to work together to divide and conquer all of the steps. Each bomb is usually made up of around 6 puzzles, and you only have a couple minutes to solve all of them.</p>
<p>Keep Talking and Nobody Explodes is available on Steam for $15, and it doesn’t involve any screen sharing!</p>
<h3 id="codenames">Codenames</h3>
<p>Codenames is a popular board game involving word puzzles. You split into 2 teams: red and blue. Each team chooses a spymaster. The board is made up of 25 random words. Some of the words belong to blue team, some to red, some are neutral, and one word is an assassin. The goal is for each team to find their words before the other team, but only the spymasters know the color of each word. However, they can only share one word clues, plus the number of words that clue applies to.</p>
<p><img src="/post_files/games/codenames.png" alt="Codenames" /></p>
<p class="caption">What the spymasters see. Everybody else sees the same grid without colors.</p>
<p>For example, I might say “medical 2” to get my team to guess “doctor” and “organ”, but have to make sure my team doesn’t also guess “well”. If either team guesses the assassin (“mail” in this case), they immediately lose. Otherwise, the first team to get all their words wins.</p>
<p>You can <a href="https://www.boardgamecapital.com/game_rules/codenames.pdf">read the full rules here</a> and <a href="https://www.horsepaste.com/">play an online version of the game here</a> for free. It supports 4 or more players (ideally around 6-8).</p>
<h3 id="spyfall">Spyfall</h3>
<p>In Spyfall, the team is assigned a location and each person is assigned a unique role. For example, you might all be in a school. Player 1 might be the principal, player 2 is a student, player 3 is a teacher, etc. The catch is nobody knows the other people’s roles and one person in the group is the spy… they have no idea where they are! The team’s goal is to figure out who the spy is, while the spy’s goal is to figure out what location we’re all in.</p>
<p>You have 8 minutes to ask each other questions that are specific enough for you to deduce whether the person answering it knows where they are, without being so specific that the location is given away to the spy.</p>
<p>You can <a href="https://gamerules.com/rules/spyfall/">read the full rules here</a> and <a href="https://spyfall.adrianocola.com">play an online version of the game here</a> for free. It supports 3-12 players.</p>
<h3 id="diplomacy">Diplomacy</h3>
<p>Diplomacy is a war simulation game, similar to Risk, but without <em>any</em> luck involved. It can be played asynchronously (often over email) with 7 players. Each person is a different country from World War I Europe, and you must negotiate your way to victory by forming and breaking alliances.</p>
<p>I put this one on the list because I love playing it remotely, but do <strong>not</strong> use this as a team building activity. It can absolutely destroy relationships. In fact, the domain is <a href="https://www.backstabbr.com">backstabbr.com</a>, so that should tell you what you’re in store for.</p>
<p><img src="/post_files/games/backstabbr.jpg" alt="Diplomacy" /></p>
<p class="caption">The interface looks intimidating, but it's easy to learn!</p>
<p>You can <a href="https://www.backstabbr.com/how-to-play">read the full rules here</a> and <a href="https://www.backstabbr.com">play an online version of the game here</a> for free. It works best with exactly 7 players, but can technically be played with 3-7 people.</p>
<p>I’ll keep adding tips to this page as I think of more. If you’ve found other things that work, <a href="mailto:hey@neil.gg">let me know</a>! We’re in this together. Remote work can be hard if you aren’t pepared for it, and it’s extra hard when you have no choice, but I promise it can also be wonderful.</p>
<p>Stay safe and have fun!</p>
<p><strong>Edit 4/1/2020:</strong> Someone just shared <a href="https://netgames.io/games/">netgames.io</a> which has a great collection of board games and perfect interface for remote play. I wish I’d known about this one sooner. Currently they have One Night Ultimate Werewolf, Codenames, Secret Hitler, Spyfall, Love Letter, and Avalon. Secret Hitler and Love Letter are two of my favorite games overall, so I highly recommend them!</p>
<p><strong>Edit 4/7/2020:</strong> Netgames.io was struggling over the weekend to keep up with the traffic, so we tried <a href="https://secrethitler.io">secrethitler.io</a> instead for playing Secret Hitler. It works, but there is a learning curve to the user interface. You might need to play a game just to learn how to use it, which is unfortunate. We also played Avalon at <a href="https://www.proavalon.com">proavalon.com</a>, which also works well and has a similar learning curve.</p>
Visiting Iceland2017-09-25T00:00:00+00:00https://neil.gg/blog/iceland
<p class="meta">25 Sep 2017 - Chicago</p>
<p>I just spent an amazing week traveling through Iceland with my girlfriend. Before the trip, she did a lot of research and made a detailed itinerary for us. Since Iceland is on a lot of people’s lists, I’ve listed the locations/activities in descending order of “must do” and linked our chronological itinerary at the end.</p>
<p>First, there’s a lot to cover in Iceland. We didn’t want to feel rushed or spend most of our time driving, so we only focused on the southern coast of Iceland and the Golden Circle. Second, you can click on any of the photos below for the full-resolution version.<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup></p>
<p><strong><a href="http://www.katlageopark.com/geosites/nauthusagil/">Nauthúsagil Canyon</a></strong></p>
<p>This hidden gem, located near the popular <a href="https://en.wikipedia.org/wiki/Seljalandsfoss">Seljalandsfoss waterfall</a>, is literally off the beaten path and 100% worth visiting.<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> It’s a narrow canyon with a shallow creek, so you’ll probably get a little wet and there is some minor bouldering involved, but eventually you’ll reach an amazing waterfall in the back. There’s no excuse for missing this one!</p>
<p><a href="/post_files/iceland/IMG_0066.jpg" title="View larger image"><img src="/post_files/iceland/IMG_0066_thumbnail.jpeg" class="photograph img500" alt="Nauthúsagil" /></a></p>
<p class="caption">Discovering the hidden waterfall. As usual, it's even better in person.</p>
<p><strong><a href="http://www.katlatrack.is/">Katlatrack Tour</a></strong></p>
<p>Based on a colleague’s recommendation, we tried a Katlatrack tour in Vik. We were a little hesitant since this activity alone cost as much as our entire flight, but this ended up being the coolest thing we did and was absolutely worth it.</p>
<p>We went inside a glacier that surrounds Katla (Iceland’s largest volcano) and saw black ice that looked more like obsidian, due to volcanic ash embedding into the glacier over hundreds of years. If I go back to Iceland, I’d definitely try another one of their tours again. The price is the only reason it’s not #1 on this list.</p>
<p><a href="/post_files/iceland/IMG_3171.jpg" title="View larger image"><img src="/post_files/iceland/IMG_3171_thumbnail.jpeg" class="photograph img500" alt="Katlatrack" /></a></p>
<p class="caption">A looming glacier. Yes, that's all ice and this is not a black and white photo.</p>
<p><strong><a href="http://www.bluelagoon.com/">Blue Lagoon</a></strong></p>
<p>Blue Lagoon is the most famous geothermal spa, and you pretty much have to do it if you’re visiting Iceland.<sup id="fnref:3" role="doc-noteref"><a href="#fn:3" class="footnote" rel="footnote">3</a></sup> The water is a vibrant milky blue color, like I’ve never seen before, and incredibly warm. We reached there around 8am, just as it opened, and it felt like a private club. By the time we left around 11am, it felt more like a public pool, so I definitely recommend trying to get there at opening time. Also, the lagoon is <em>huge</em> so be sure to explore thoroughly when you get there to find all that it has to offer, including a cave, floating pillows, steam showers, facial masks, and a hot waterfall. The water does smell sulfuric (like rotten eggs) but it was not as strong as I expected.</p>
<p><a href="/post_files/iceland/IMG_2905.jpg" title="View larger image"><img src="/post_files/iceland/IMG_2905_thumbnail.jpeg" class="photograph img500" alt="Blue Lagoon" /></a></p>
<p class="caption">The milky blue color is from the silica, which is apparently great for your skin.</p>
<p><strong><a href="https://guidetoiceland.is/connect-with-locals/regina/iceland-s-diamond-beach">Diamond Beach</a></strong></p>
<p>Diamond Beach is a glacier lake that contains large chunks of floating blue ice. It gets its name because the ice look like diamonds on the beach. It is a breathtaking view and a must see. It’s next to <a href="https://en.wikipedia.org/wiki/Fjallsárlón">Fjallsarlon</a>, also known as the Ice Lagoon, which is similar and also worth stopping by.</p>
<p><a href="/post_files/iceland/IMG_3082.jpg" title="View larger image"><img src="/post_files/iceland/IMG_3082_thumbnail.jpeg" class="photograph" alt="Diamond Beach" /></a></p>
<p class="caption">Getting rich at Diamond Beach.</p>
<p><strong><a href="https://en.wikipedia.org/wiki/V%C3%ADk_%C3%AD_Mýrdal">Black Beach</a></strong></p>
<p>The Katla tour takes place in Vik, so there’s no reason not to stop by the Black Beach while you’re there, which is apparently ranked as one of the ten most beautiful beaches in the world. The sand is pure black due to volcanic ash. Noticing a trend?</p>
<p><a href="/post_files/iceland/IMG_1516.jpg" title="View larger image"><img src="/post_files/iceland/IMG_1516_thumbnail.jpeg" class="photograph img500" alt="Black Beach" /></a></p>
<p class="caption">Standing on the Black Beach.</p>
<p><strong><a href="https://en.wikipedia.org/wiki/%C3%9Eingvellir">Þingvellir National Park</a></strong></p>
<p>We went in fall so all of the plants were bright orange and absolutely gorgeous. Unfortunately, it was cold and raining the whole time we were there so we didn’t get to explore much, but I would have loved to hike here more.</p>
<p><a href="/post_files/iceland/IMG_3364.jpg" title="View larger image"><img src="/post_files/iceland/IMG_3364_thumbnail.jpeg" class="photograph img500" alt="Þingvellir National Park" /></a></p>
<p class="caption">The famous ridges and canyons of this park.</p>
<p><strong>Great Auk Memorial, Reykjanes</strong></p>
<p>If you’re going to either Blue Lagoon or Reykjavík from Keflayvik Airport, I definitely recommend taking the coastal scenic route to get your first taste of Iceland. It takes about an hour instead of 20 minutes on the direct route, but you’re on vacation! It also gives you the chance to stop by the Great Auk Memorial on your way into the country.</p>
<p>The <a href="https://en.wikipedia.org/wiki/Great_auk">Great Auks</a> were a species of flightless birds that lived in Iceland a couple centuries ago but are now extinct. The memorial (just a cliff with some pretty rocks) is a great spot to take some pictures to kick off your trip.</p>
<p><a href="/post_files/iceland/IMG_1214.jpg" title="View larger image"><img src="/post_files/iceland/IMG_1214_thumbnail.jpeg" class="photograph img500" alt="Great Auk Memorial" /></a></p>
<p class="caption">The lighthouse at the Great Auk Memorial during sunrise.</p>
<p><strong>Random Stops</strong></p>
<p>As you’re driving along the Ring Road<sup id="fnref:4" role="doc-noteref"><a href="#fn:4" class="footnote" rel="footnote">4</a></sup>, you’ll see <a href="https://www.icloud.com/sharedalbum/#B0i5ON9t38rPkO;F19A881E-501A-41BA-9940-AF82F70C0A24">lots</a> of <a href="https://www.icloud.com/sharedalbum/#B0i5ON9t38rPkO;B2472E6D-6D1F-4F5B-85FD-31435ABA1F67">gorgeous</a> <a href="https://www.icloud.com/sharedalbum/#B0i5ON9t38rPkO;19E2372A-5D37-4595-9F75-BCE9D85CDBE3">views</a> just on the side of the road. Don’t forget to liberally stop and take pictures because it’s a lot of fun to randomly pull over and explore. I guarantee no matter where you stop, it will be picturesque and you never know what you’ll find.</p>
<p><a href="/post_files/iceland/IMG_1317.jpg" title="View larger image"><img src="/post_files/iceland/IMG_1317_thumbnail.jpeg" class="photograph img500" alt="A little waterfall" /></a></p>
<p class="caption">Finding a little waterfall on the side of the road.</p>
<p><a href="/post_files/iceland/IMG_0325.jpg" title="View larger image"><img src="/post_files/iceland/IMG_0325_thumbnail.jpeg" class="photograph img500" alt="Girl vs sheep" /></a></p>
<p class="caption">Girlfriend versus sheep, but the mountain may have won.</p>
<p><strong><a href="https://en.wikipedia.org/wiki/Strokkur">Strokkur & Geysir Geysers</a></strong></p>
<p>This is a popular tourist attraction, and it was weird adjusting to so many people after spending so long in the relatively empty southern coastal area. It’s a fun sight but if you can’t fit it into your schedule, you’re not missing much.</p>
<p><a href="/post_files/iceland/IMG_1613.jpg" title="View larger image"><img src="/post_files/iceland/IMG_1613_thumbnail.jpeg" class="photograph" alt="Geysers" /></a></p>
<p class="caption">The field of geysers looks like a war zone.</p>
<p><strong><a href="https://en.wikipedia.org/wiki/Gullfoss">Gullfoss Waterfall</a></strong></p>
<p>This place was packed with tourists, and I think we had seen enough waterfalls by this point that it just didn’t excite us much. However, the weather was also gloomy and we were exhausted, so that may have also factored into our lack of enthusiasm. If there’s anything you skip from our itinerary, I’d make it this.</p>
<p><a href="/post_files/iceland/IMG_0006.jpg" title="View larger image"><img src="/post_files/iceland/IMG_0006_thumbnail.jpeg" class="photograph img500" alt="Gullfoss" /></a></p>
<p class="caption">Yet another waterfall...</p>
<p><strong><a href="https://en.wikipedia.org/wiki/Reykjav%C3%ADk">Reykjavík</a></strong></p>
<p>There’s no way you won’t see Reykjavik, but I’m glad we saved it for last because I appreciated the city much more after having spent 6 days in nature. We visited the <a href="https://en.wikipedia.org/wiki/Reykjav%C3%ADk_Museum_of_Photography">museum of photography</a>, the <a href="https://en.wikipedia.org/wiki/Reykjavik_Art_Museum">art museum</a>, <a href="https://en.wikipedia.org/wiki/Hallgr%C3%ADmskirkja">Hallgrímskirkja church</a><sup id="fnref:5" role="doc-noteref"><a href="#fn:5" class="footnote" rel="footnote">5</a></sup>, and the <a href="https://en.wikipedia.org/wiki/Icelandic_Phallological_Museum">phallological museum</a>, which was as weird as it sounds. Other than the church, none of these were must-sees, but all were fun. I would definitely skip the photography museum, and try to schedule my trip to see a show at <a href="https://en.harpa.is/">Harpa</a> next time.</p>
<p><a href="/post_files/iceland/IMG_1668.jpg" title="View larger image"><img src="/post_files/iceland/IMG_1668_thumbnail.jpeg" class="photograph img500" alt="Hallgrímskirkja" /></a></p>
<p class="caption">The architecture of Hallgrímskirkja is very unique.</p>
<p><strong>Itinerary</strong></p>
<p>If you want to use our ready-made itinerary, here are the <a href="/post_files/iceland/iceland_itinerary.pdf">PDF</a> and <a href="/post_files/iceland/iceland.pptx">PowerPoint</a> versions to get you started. They include directions to our AirBnB rentals, so you’ll want to make at least some edits.</p>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>You can also view <a href="https://www.icloud.com/sharedalbum/#B0i5ON9t38rPkO">a larger album with many more photos</a>. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>When driving east on the Ring Road, you’ll see a large puffin statue in a parking lot to your left. Turn here, and you’ll see Seljalandsfoss around the corner, which is a great spot on its own. Keep going 10km past it, on a rough gravel road, and you’ll eventually see a small sign for Nauthúsagil on your right. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:3" role="doc-endnote">
<p>Make sure you book tickets in advance, because it will sell out. I think the “Standard” tier is good enough, just remember to bring your own towel. <a href="#fnref:3" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:4" role="doc-endnote">
<p>Whenever you pass through a town, go to a grocery store to make your own food. We did pasta and sandwiches, which were fast and easy to make. Restaurants in Iceland are ridiculously expensive (like $50/burger), spend that money towards the activities instead. <a href="#fnref:4" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:5" role="doc-endnote">
<p>You can’t miss the church with its striking architecture in the middle of the city. There’s also free parking here and everything is walking distance from it. <a href="#fnref:5" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
The Decentralized Web is Coming2016-10-16T00:00:00+00:00https://neil.gg/blog/decentralized-web-coming
<p class="meta">16 Oct 2016 - Chicago</p>
<p>There’s been a lot of talk recently about making a decentralized web that is more secure and resistant to government control. Here’s why I think this is the perfect timing for this shift in thinking.</p>
<h1 id="privacy">Privacy</h1>
<p>Everybody is much more aware of privacy and <a href="/2016/10/14/facebook-privacy/">data control</a> issues these days. We’ve witnessed what governments, even in “free” countries like the US, are capable of. We are generating more data than ever and are at the precipice of creating an avalanche of private data: biometrics, health sensors, location, habits, smart home control, etc. Apple has repeatedly been differentiating themselves from the competition with a focus on privacy that continues to highlight this problem in the public eye.</p>
<p>This means, socially, we are ready for this change and will be more welcoming of it than before.</p>
<h1 id="technology">Technology</h1>
<p>Obviously you’d expect a tectonic shift like this would require significant technological breakthroughs. Three really important ones have already happened.</p>
<p>While bitcoin as a currency may be a failed experiment (though I won’t count it out yet), the blockchain is going to be crucial moving forward by allowing us to keep a validated ledger of anything on the network. Docker is also going to be central to making apps easy to install on any hardware across the network. Finally, the proliferation of wired gigabit speeds and mobile LTE networks means we can support increased bi-directional network traffic from personal devices, rather than just centralized hosts pushing data down to the client.</p>
<p>One thing we still need is a protocol for allowing any host to install any containerized application. I imagine this would be similar to the <a href="https://developer.salesforce.com/blogs/developer-relations/2014/08/heroku-button-anyone-can-deploy-your-app.html">“Deploy to Heroku” button</a> but standardized so it could work with any service provider or OS that supports it.</p>
<h1 id="user-experience">User Experience</h1>
<p>We used to train kids how to install and run apps like Microsoft Office or Adobe Photoshop in school.</p>
<p>But technology is eating the world. Programming knowledge is being baked into core curriculums just like biology or even computer <em>usage</em> was before. Combined with easier deploy mechanisms, this means more and more people will be comfortable installing decentralized apps on their own systems or host of choice.</p>
<p>It also means we could treat and monetize web apps like traditional desktop software again if we want. However, I expect we will see entirely new monetization mechanisms that I can’t even imagine now.</p>
<h1 id="concerns">Concerns</h1>
<p>Some people have <a href="https://tierion.com/blog/who-pays-for-the-decentralized-web/">raised questions about the viability of a decentralized web</a> because nobody is really talking about the economics. I think that is by design. While it’s a perfectly valid question to raise, it’s counterproductive right now.</p>
<p>Much like the internet itself, this new architecture will be ushered in by hackers looking to disrupt the status quo of walled gardens and data warehouses, not corporations. So immediate monetization is not a top concern. Like I said above, we can’t even imagine what the economics will look like, just like Tim Berners-Lee couldn’t have imagined the current web 30 years ago. If we stop to worry about fitting the decentralized web into our current economic models, we will trap ourselves in a box.</p>
The Man Who Stood Up To Facebook2016-10-14T00:00:00+00:00https://neil.gg/blog/facebook-privacy
<p class="meta">14 Oct 2016 - Chicago</p>
<p>Fascinating read from <a href="http://www.npr.org/sections/alltechconsidered/2016/10/13/497820170/the-man-who-stood-up-to-facebook">NPR</a>:</p>
<blockquote>
<p>“Nobody up until that point had ever had, I think, the courage to publicly say to users that they don’t control their data,” he says, “and honestly Facebook didn’t have the courage to say that.”</p>
</blockquote>
<p>This is something that has been on my mind a lot as I’ve started diving deeper into machine learning. We generate a tremendous amount of data everyday and that will only continue to increase as we keep adding more sensors and smart home devices around us. But we don’t control <em>any</em> of that data. That’s a big problem.</p>
Taking Inventory of Docker's Black Box2016-08-28T00:00:00+00:00https://neil.gg/blog/docker
<p class="meta">28 Aug 2016 - Chicago</p>
<p>If you’re not actively using Docker, it’s pretty difficult to figure out the difference between all the tools in the docker ecosystem. When I first started using docker last year, it all felt like a black box. I could get everything running, but if something broke, I had no idea where to look. So to help anybody who’s just getting started, here’s a brief breakdown of the different components that are used in a successful docker project.</p>
<p>First, docker is an ecosystem of tools for containerizing your application so that it can be repeatedly installed and run in a consistent environment, even on different machines.</p>
<p>Currently, running Docker for Linux in a VM is more performant than running native Docker on Mac, so let’s get started with a VM to run Linux.</p>
<h2 id="vmware--virtualbox">VMware / VirtualBox</h2>
<p>The virtual machine runs a virtualized Linux OS host for docker. I recommend VMware for the best performance, but the latest Virtualbox has caught up a lot and it’s free. Docker recently released native <a href="https://docs.docker.com/docker-for-mac/">Docker for Mac</a> and <a href="https://docs.docker.com/docker-for-windows/">Windows</a>, but I don’t recommend using it yet because the performance is abysmal. Once it is ready for prime time use though, the VM requirement will go away.</p>
<p>In the meantime, we need some way to manage our new virtual machine. It wouldn’t be very repeatable if we had to manually install and configure a whole new OS every time. That brings us to…</p>
<h2 id="docker-machine--dinghy">Docker Machine / Dinghy</h2>
<blockquote>
<p>Machine is a tool that lets you install Docker Engine on virtual hosts, and manage the hosts.</p>
</blockquote>
<p>One level up from the virtual machine is <a href="https://docs.docker.com/machine/">docker machine</a>, which is a tool for creating your virtual machine and installing docker engine on it. However, if you’re on a Mac, I recommend using <a href="https://github.com/codekitchen/dinghy">Dinghy</a> instead, which is a third party wrapper around docker-machine. It behaves in almost the same way, but adds some key services, such as mounting your home directory as a shared NFS volume so that your VM can access your code on your local machine and DNS mapping <code class="language-plaintext highlighter-rouge">http://*.docker</code> to your docker host’s IP address. Dinghy makes development with Docker <em>significantly</em> more pleasant. It will also no longer be necessary once we can use native docker on Mac.</p>
<h2 id="docker-engine">Docker Engine</h2>
<blockquote>
<p>Engine [is a] lightweight and powerful open source containerization technology combined with a work flow for building and containerizing your applications.</p>
</blockquote>
<p>Next is <a href="https://docs.docker.com/engine/">docker engine</a>, which is the core of docker. It lets you define and run an app container with a build script, known as a Dockerfile. When you build your docker image, it will run your Dockerfile so that your app always has the same environment, no matter what.</p>
<h2 id="docker-compose">Docker Compose</h2>
<blockquote>
<p>Compose is a tool for defining and running multi-container Docker applications.</p>
</blockquote>
<p>The next level up is <a href="https://docs.docker.com/compose/">docker compose</a>, which allows you to define and manage multiple containers for a single app. This is extremely useful when working with a service-oriented architecture or many independent dependencies. For example, when developing locally, you might have a docker image for your database, your main app, your supporting service, your redis cache, and your fake_s3 server. You can link these images together with Compose, so that when you run one of the services, anything else it needs also boots up or you can boot up the whole system with one easy command. This is the tool you will be interacting with most of the time.</p>
<p>There are <a href="https://www.docker.com/technologies/overview">other tools</a> in the Docker ecosystem but these are the core ones you need to get started locally.</p>
<p>In practice, once you’ve installed all of the above tools you can run <code class="language-plaintext highlighter-rouge">dinghy create</code> to setup your VM, <code class="language-plaintext highlighter-rouge">dinghy up</code> to boot it up, and then once you’ve written your Dockerfiles, <code class="language-plaintext highlighter-rouge">docker-compose build</code> and <code class="language-plaintext highlighter-rouge">docker-compose up</code> to run your app. To run commands within your VM, you’ll want to prefix everything with <code class="language-plaintext highlighter-rouge">docker-compose run --rm [service name]</code> (i.e. <code class="language-plaintext highlighter-rouge">docker-compose run --rm web bundle install</code>).</p>
<p>Hopefully that helps get you rolling with Docker!</p>
The Stages of Software Engineering2016-05-14T00:00:00+00:00https://neil.gg/blog/stages-of-software-engineering
<p class="meta">14 May 2016 - Chicago</p>
<p>If you’ve ever spent time around small children, you know that they can be very egocentric. They only talk in first person and everything revolves around them. It’s not their fault, they don’t yet have the experience to contemplate the world from any other perspective than their own. As they grow older, their scope of the world expands and they’re able to consider close family and friends. Then, they think about their community, their city, their country, and finally their place in the world. In psychology, this is known as Piaget’s stages of cognitive development.</p>
<p>In software engineering, there are similar stages of skill development that can tell us where a person is in their career based on how they think.</p>
<h1 id="stage-0-the-non-developer">Stage 0: The Non-Developer</h1>
<p>You don’t write code, but you want to. You’re taking classes or teaching yourself, but you can’t write a functioning todo list on your own yet.</p>
<h1 id="stage-1-junior-developer">Stage 1: Junior Developer</h1>
<p>You made it! You’re a developer!</p>
<p>When you’re a junior developer, you’re focused on making your own code work. Most likely, you’re still learning the ropes and are happy just to get a function that executes correctly. Your code is pretty sloppy and hard to maintain, but it gets the job done. For example, it probably looks like one large procedural function.</p>
<p>There is no design step, you just dive into the code.</p>
<h1 id="stage-2-software-engineer">Stage 2: Software Engineer</h1>
<p>In stage 2, your focus expands from your own code to your team’s code. You realize you’re part of a larger team, and you want to write well-written code that’s considerate of the rest of your team. This means you’re writing smaller, re-useable methods, commenting your code, and following style guidelines so that your coworkers can reason about and benefit from your code too.</p>
<p>Your design step involves understanding the surrounding code so you can fit in and play nice.</p>
<h1 id="stage-3-senior-engineer">Stage 3: Senior Engineer</h1>
<p>Now that you’ve mastered helping your team write quality code, your focus expands to your organization. Just as you realized you were one member on a team, now you realize you’re one of many teams in a company. You notice how each team is repeatedly solving the same problem, and you want to write code that’s considerate of the rest of your organization. This might present itself in a few ways. First, you’re writing re-usable libraries or services that can benefit more than just your team. Second, you’re writing thorough documentation of code, APIs, processes, and decisions, so others can apply your team’s work. The mark of a senior engineer is that you make work for people around you easier and more enjoyable.</p>
<p>Your design step involves understanding the actual problem and how it can be solved with minimal complexity.</p>
<h1 id="stage-4-the-architect">Stage 4: The Architect</h1>
<p>By stage 4, you’re outputting high quality, re-useable, well documented code that your entire organization is benefitting from. What’s next? Finding your place in the world. How do you make the world a better place?</p>
<p><img src="https://heineventures.com/wp-content/uploads/2015/01/make-world-better-place-silicon-valley.gif" alt="We're making the world a better place... through scalable fault-tolerant distributed databases with ACID transactions." /></p>
<p class="caption">No, not like that.</p>
<p>Beyond solving meaningful problems and open-sourcing and maintaining code to help the whole community, you spend your time mentoring other developers. You go from being a “10x developer” to 100x by helping 10 other developers become 10x developers.</p>
<p>These stages of engineering are marked by an expanding focus from self all the way to the world, kind of like circles in a tree trunk<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>. However, just because you’ve reached a certain stage doesn’t mean you never write code from an earlier stage. For example, a senior engineer might still write hairy procedural functions for a hack. What matters is how you approach the design step and what your priorities are.</p>
<p>So, what stage of engineering are you at?</p>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>This paradigm of expanding circles of focus can be used to measure much more than child and engineer development too. For example, <a href="http://waitbutwhy.com/2014/10/religion-for-the-nonreligious.html">this interesting (but very long) article</a> discusses self-awareness and spirituality in a similar fashion. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Your Bloat Sucks2016-03-30T00:00:00+00:00https://neil.gg/blog/your-bloat-sucks
<p class="meta">30 Mar 2016 - Chicago</p>
<p>Everybody knows page load speeds are important. The faster your page loads, the better your user experience. Google spends millions to shave milliseconds off their load time. Yet in practice, most sites are still terrible at optimizing for load times, instead opting to load megabytes of JavaScript libraries, custom fonts, images, and ads.</p>
<p>As a developer who tries to be conscious of page size bloat, I’m still guilty of shipping pages that are over 1mb in size. It’s easy to forget how painful slow load times are when I have gigabit internet at home.</p>
<p>However, I spent last week in India, where I was stuck on an inhumane 2G cellular connection. Suddenly, I found myself very appreciative of small pages. For example, Hacker News loaded in under 30 seconds, while most other sites took much longer and usually resulted in me giving up. I spent a lot of time staring at a little blue bar on a blank white page valiantly try to make it to the other side, chanting “<a href="https://youtube.com/watch?v=Yx9xO98kcBU">I think I can, I think I can</a>,” but never quite make it.</p>
<p>As a result, I read a lot of HN comments to get the gist of an article rather than reading the linked article itself. I had to really weigh whether clicking a link was worth the time. It turns out sites like the NY Times were on the losing end of that decision every time.</p>
<p>Why is it generally acceptable to treat fast page loads as a nice-to-have perk? We forget that a small page size is about more than bragging rights and SEO optimization. By and large, “small page size” isn’t exciting, so engineering teams are incentivized to prioritize other features. We also don’t want to be guilty of premature optimization.</p>
<p>However, much of the world experiences the web like I did last week. That means your page size has a real impact on whether entire audiences will even bother trying to use it.</p>
<p>So ask yourself, do you really need those fancy fonts or that extra JS library? Push back on your designers or your over-eager developers. Question every dependency that’s pulled in. Need to add a chart? You probably don’t need all of d3 to make it.</p>
<p>Fuck your bloat.</p>
Politics in the 21st Century2016-02-24T00:00:00+00:00https://neil.gg/blog/divisive-politics
<p class="meta">24 Feb 2016 - Chicago</p>
<p>From <a href="http://www.the-american-interest.com/2016/02/17/the-seven-habits-of-highly-depolarizing-people/">The Seven Habits of Highly Depolarizing People</a> (paywall):</p>
<blockquote>
<p>I didn’t vote for him but he’s my President, and I hope he does a good job.<br />
<em>– <a href="http://www.qotd.org/search/single.html?qid=39193">John Wayne</a> (b. 1907) on the election of John F. Kennedy in 1960</em></p>
</blockquote>
<blockquote>
<p>I hope he fails.<br />
<em>– <a href="http://www.rushlimbaugh.com/daily/2009/01/16/limbaugh_i_hope_obama_fails">Rush Limbaugh</a> (b. 1951) on the election of Barack Obama in 2008</em></p>
</blockquote>
<p>What went wrong with politics this century, summed up in 2 quotes…</p>
Big banks brace for oil loans to implode2016-01-19T00:00:00+00:00https://neil.gg/blog/that-snotty-child
<p class="meta">19 Jan 2016 - Chicago</p>
<p>From <strong><a href="http://money.cnn.com/2016/01/18/investing/oil-crash-wall-street-banks-jpmorgan">Big banks brace for oil loans to implode</a></strong></p>
<blockquote>
<p>Firms on Wall Street helped bankroll America’s energy boom, financing very expensive drilling projects that ended up flooding the world with oil.</p>
</blockquote>
<blockquote>
<p>For instance, Wells Fargo (WFC) is sitting on more than $17 billion in loans to the oil and gas sector. The bank is setting aside $1.2 billion in reserves to cover losses because of the “continued deterioration within the energy sector.”</p>
</blockquote>
<p>This is like watching a kid repeatedly run into your patio door. It might be forgivable at first but eventually you have to do something about it. You might try putting warning signs on the glass and rules to tell the kid to pay attention, but what do you do when that also fails?</p>
The Apple Watch 4G2015-07-05T00:00:00+00:00https://neil.gg/blog/apple-watch-4g
<p class="meta">05 Jul 2015 - Chicago</p>
<p>This thing on my wrist needs its own LTE connection.</p>
<p>Sometimes I open links on the screen in my pocket, sometimes I reply to messages from the aluminum brick on my desk, sometimes I FaceTime with the large slate of glass on my coffee table, and sometimes I answer calls directly from my wrist. In all cases though, I am wearing a watch on my wrist and am carrying a large hotspot (my phone) in my pocket. By combining the hotspot with the watch, I can choose to carry a slate of glass in my pocket or not, but it’s not required. All devices in my world then become equal vectors for communication, with my watch as the intelligent switchboard. It does not care how or where I respond to a message, it simply alerts me about incoming messages.</p>
<p>Luckily, Apple has perfectly positioned itself to make this vision a reality with its hardware and software.</p>
<h1 id="watchos-2">WatchOS 2</h1>
<p>WatchOS 2, which releases in a few months, adds native apps to the Watch and enables them to access the wifi network directly, meaning the Watch will already be independent of the iPhone when on wifi soon. It will only require tethering to the iPhone for a cellular connection. Of course, adding a SIM card to a watch is ridiculous…</p>
<h1 id="apple-sim">Apple SIM</h1>
<p>The iPad Air 2 and iPad mini 3 include the <a href="http://www.theverge.com/2014/10/16/6988695/apples-ipad-air-2-lets-you-pick-from-multiple-wireless-carriers-with-one-SIM">Apple SIM card</a>, a built-in SIM card the replaces the need for carrier-specific cards. Instead, all carrier selection is done via software. This is crucial for an eventual Apple Watch that includes cellular functionality because a removeable SIM card in a watch is not feasible. However, a software-only SIM card means we can choose a carrier when we power up our new Watch and break our shackle to the tethered iPhone.</p>
<h1 id="continuity">Continuity</h1>
<p><a href="https://www.apple.com/ios/whats-new/continuity/">Continuity</a> means my phone calls and SMS messages are no longer tied to my cell phone. All my devices receive my calls and texts, so I don’t care which device I’m using. With iOS 9, <a href="http://9to5mac.com/2015/06/10/t-mobile-ios-9-cellular-continuity-iphone-ipad-mac/">my phone doesn’t even have to be nearby</a> for phone calls to be shared across devices.</p>
<h1 id="handoff">Handoff</h1>
<p>Technically a sub-feature of Continuity, Handoff enables the Watch to act as a switchboard. Everything can come through the Watch, but any of my devices can seamlessly pick up the task, meaning I can jump from device to device without any thought.</p>
<h1 id="icloud">iCloud</h1>
<p>As Apple continues to subvert the local filesystem and move everything into its iCloud containers, all of my devices gain consistent access to my data, so that once again, I never have to worry about which device I’m picking up, other than that it has the best input interface for my current task. All my music, photos, documents, passwords, browser tabs, contacts, notes, mail, etc are all available everywhere, completely agnostic of device, with no action on my part.</p>
<p>Apple’s cash cow is the iPhone, but they have never been afraid to disrupt their own products with something new before somebody else does, and that’s what they’re positioning the Watch to do. It will shift from being an accessory to being the center of the ecosystem, relegating the iPhone into being just another device with a processor and a screen (maybe it’ll even eventually be rebranded to the iPad Nano).</p>
<p>Given that almost all of the pieces are already in place for this transition to occur, the biggest barrier for Apple is achieving a critical mass of users, such that asking users to pay another monthly fee for another cellular device won’t be laughed at. With that in mind, I believe that we’ll see a cellular Apple Watch that replaces the iPhone as the center of our lives within the next 2-3 product generations.</p>
Content Blockers in iOS 92015-06-11T00:00:00+00:00https://neil.gg/blog/content-blockers-in-ios-9
<p class="meta">11 Jun 2015 - Chicago</p>
<p>Yesterday, news broke that Apple is introducing content blocker extensions to Safari in iOS 9. Here’s how <a href="https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html#//apple_ref/doc/uid/TP40014305-CH9-SW9">Apple’s developer documentation</a> puts the new change, coming in iOS 9:</p>
<blockquote>
<p>The new Safari release brings Content Blocking Safari Extensions to iOS. Content Blocking gives your extensions a fast and efficient way to block cookies, images, resources, pop-ups, and other content.</p>
</blockquote>
<p><a href="http://www.niemanlab.org/2015/06/a-blow-for-mobile-advertising-the-next-version-of-safari-will-let-users-block-ads-on-iphones-and-ipads/">Everybody</a> <a href="http://9to5mac.com/2015/06/10/block-ads-ios-9-safari-iphone/">saw</a> the obvious use case, proudly announcing “Adblocking is coming to iOS 9.”</p>
<p>However, I think even more interesting than ad blocking is the ability to selectively enable features on websites based on apps you have installed. Imagine a website that has an “Install our app” script that normally runs when you view it on mobile, but that script gets blocked by their own app when it’s installed on your device.</p>
<p>With a bit of creativity, you can do even cooler things than that once you think about content blockers like this.</p>
Copywriting 1012014-10-02T00:00:00+00:00https://neil.gg/blog/copywriting-101
<p class="meta">02 Oct 2014 - Chicago</p>
<p>This is Yelp’s default message when sending a friend invitation.</p>
<p><a href="/post_files/yelp_friend_email.png"><img src="/post_files/yelp_friend_email.png" alt="Yelp Friend Notification" /></a></p>
<p>It feels awkward and forced. Friends don’t share “insights on local businesses,” they recommend restaurants to each other. They don’t share “mobile check-ins,” they tell each other what they’re doing.</p>
<p>And while we’re here, why include my last initial when addressing me? And why is the button asking me to “view” the friend request? I will either want to accept the request or do nothing, so let’s make that the call the action.</p>
<p>Here’s a revised version of what the friend notification email should look like:</p>
<p><a href="/post_files/yelp_friend_email_revised.png"><img src="/post_files/yelp_friend_email_revised.png" alt="Revised Yelp Friend Notification" /></a></p>
<p>This copy immediately makes it clear the benefits of accepting the friend request in words that matter to me, not to Yelp’s investors. It also has a friendlier feel and makes me want to click the call to action.</p>
<p>Copywriting is a very <a href="https://gettingreal.37signals.com/ch08_Wordsmiths.php">important</a> and difficult aspect of any user interface, but even more so in email notifications where you’re competing with their other emails for attention. Good copy can make or break a product. Some might argue that it’s the <em>most</em> important aspect of your app because it defines the tone and mindset that users will approach your product and communicate about it.</p>
<p>Make sure your copy was written for your users, not your pitch deck.</p>
Making the Lowly Alarm Clock Smarter2014-05-24T00:00:00+00:00https://neil.gg/blog/a-smarter-alarm-clock
<p class="meta">24 May 2014 - Chicago</p>
<p>Every night before I go to bed, I have to think about 3 things:</p>
<ol>
<li>What time is my first event tomorrow?</li>
<li>What time do I have to wake up to make it to that event?</li>
<li>Who will sit on the Iron Throne next?</li>
</ol>
<p>Like most people, I use my smartphone’s alarm clock app as my daily alarm. That smartphone also has my calendar and location data. It knows where I have to be tomorrow morning and how long it will take me to get there. Yet it makes me do all the work to figure out when’s the latest I can sleep in. Why doesn’t my phone automatically set an alarm for one hour before I have to leave to make sure I don’t miss my event? Got an event at 9am that’s 30 minutes away? My phone should wake me up at 7:30 automatically.</p>
<p>That would save me from setting an alarm every night, but what about turning it off? If my first event is at 1pm, the alarm would be set for around noon. Most likely, I’ll already be awake by then so there’s no need for the alarm. My phone should be smart enough to figure that out too. If I’ve used my phone for more than 10 minutes, then I’m awake and the automatic alarm can be turned off.</p>
<p>Going even further, it would be nice if my phone beeped when I should go to bed to get my recommended 8 hours of sleep.</p>
<p>These simple changes can make it possible to never have to worry about managing my alarm again. Combining existing data with creative heuristics to reduce our cognitive load is the promise of smartphones, and it’s time the alarm clock app got with the program.</p>
Scripting Your Gmail Filters2014-05-08T00:00:00+00:00https://neil.gg/blog/gmail-scripting
<p class="meta">08 May 2014 - San Jose</p>
<p>I love Gmail Filters for setting up rules to automatically sort my email. However, I prefer using Apple’s Mail app on both my desktop and phone, which means I’m not able to take full advantage of Labels. In particular, there’s no way for me to receive a push notification for an email unless it goes in my inbox. For a long time, I’ve wanted a way to create time or action-based rules that allow me to send emails to my inbox and then automatically archive them at a later point. Unfortunately, rules are only evaluated when an email is received, so Gmail does not support time-based rules by default.</p>
<p>Today, I discovered <a href="https://script.google.com">Google Apps Scripts</a>, an official tool for scripting Google apps. I immediately wrote 6 lines of Javascript to automatically archive my Airbrake notification emails after I read them:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// Auto-archive airbrake messages
function airbrake() {
var threads = GmailApp.search('label:inbox label:airbrake is:read');
for (var i = 0; i < threads.length; i++) {
threads[i].moveToArchive();
}
};
</code></pre></div></div>
<p>By itself, this script isn’t very useful. However, Google Scripts also supports adding time-driven triggers to your scripts. For example, I set my airbrake function to run every 10 minutes. Now, whenever there’s an error, I’ll get an email from Airbrake. Roughly 10 minutes after I mark it as read, the email will automatically archive itself.</p>
<p>Setting it up is easy. Just go to <a href="https://script.google.com">https://script.google.com</a> and write your Javascript functions. <code class="language-plaintext highlighter-rouge">GmailApp.search</code> supports anything that Gmail’s search bar supports, which is quite a bit. You can read more of the available functions and API’s in the <a href="https://developers.google.com/apps-script/reference/gmail/">official documentation</a>.</p>
<p><img src="/post_files/google_scripts.png" alt="Google Scipts UI" /></p>
<p>Once you’ve written your function, click the “current project’s triggers” button (circled in red) to add your time-driven triggers. It’ll ask you to authorize access to your Gmail account when you hit save. Once you grant access, you’re all set! You can test your functions via the run menu.</p>
<p><img src="/post_files/google_scripts_triggers.png" alt="Google Scipts Triggers" /></p>
Sensors Everywhere2014-04-26T00:00:00+00:00https://neil.gg/blog/sensors-everywhere
<p class="meta">26 Apr 2014 - Chicago</p>
<p>Today, I came across the <a href="http://www.lumobodytech.com">Lumo Lift</a>, a fitness tracker and posture sensor available for preorder. It looks like a neat little device, and assuming it works, the posture tracking/correction system is a very cool and useful feature. However, two things stood out to me.</p>
<h1 id="yet-another-sensor">Yet Another Sensor</h1>
<p>The Lumo Lift is designed to be worn near your clavicle or shoulders. It tracks posture, steps taken, and calories burned. I also have a <a href="http://vitrine.withings.com/withings-pulse.html">Withings Pulse</a> in my pocket that tracks steps taken, distance traveled, calories burned, altitude climbed, heart rate, oxygen saturation, and sleep patterns. My iPhone can also track most of the same variables thanks to a multitude of clever apps. Google and Samsung (and presumably Apple) are working hard to place additional sensors on us. Soon, we will be wearing sensors on our feet, waist, wrist, chest, neck, and eyes. All of this data will feed back to our smartphones, which will then push the data to the cloud for analysis. Every minute variable of our lifestyles will be trackable. Longitudinal research studies will cost pennies to conduct. The possibilities are both fascinating and scary at the same time.</p>
<p>Given that we will be loaded with sensors to the hilt and bordering on cyborg territory, it would be nice for these various sensors to be really good at what they do, rather than trying to do everything. For example, a pedometer in my shoe is going to be far more accurate at tracking my steps than the Lumo Lift. More importantly, I already have multiple sensors for tracking my steps taken. I don’t want to pay $80 for another. I would, however, pay $30 for a posture tracker.</p>
<h1 id="gender-bias">Gender Bias</h1>
<p>A lot of wearable tech companies (or most tech companies in general) are very biased towards men. The <a href="https://getpebble.com/steel">Pebble Steel</a> and <a href="https://moto360.motorola.com">Moto 360</a> watches were both clearly designed for men. While the <a href="http://www.samsung.com/us/mobile/wearable-tech/SM-V7000ZKAXAR">Galaxy Gear</a> wasn’t really designed for anybody, it definitely leans more towards a masculine style. The ads, which suggest a Galaxy Gear will help you pick up women, confirm this. That’s why it’s noteworthy that the Lift is specifically designed to work for both men and women. It even has a bunch of optional jewelry attachments to help it fit into any attire. As wearable tech gets closer to jewelry than portable computers, it will be interesting to see how more companies tackle the gender problem.</p>
<p>I’ve been burned too many times by hardware “preorders” that I don’t plan on investing in Lumo right now, but I look forward to checking them out after the Lift has launched.</p>
Gamifying Gogo's Customer Acquisition2014-03-01T00:00:00+00:00https://neil.gg/blog/gamifying-gogo
<p class="meta">01 Mar 2014 - Chicago</p>
<p>Last weekend, I attended a <a href="http://gogoair.com">Gogo</a> hackathon organized by <a href="http://monkeybars.cc">Monkeybars</a>. Most of my time was spent playing <a href="http://www.amazon.com/Hasbro-JUN118204-Risk-Legacy/dp/B005J146MI">board games</a>, watching movies, and just hanging out, and I did not intend to actually compete in the hackathon. But then I saw the following screenshot of Gogo’s in-flight portal on a Delta flight.</p>
<p><a href="/post_files/gogo/delta.jpg"><img src="/post_files/gogo/delta_thumb.jpg" alt="Delta In-flight Portal" /></a></p>
<p>To put it lightly, this portal sucks. There’s no significant call-to-action. The large “buttons” for in-flight entertainment, eBay, and others look more like obnoxious ads that might as well say “Find single ladies in your area.” It’s not immediately clear what else I should do once reaching this page, and even if I manage to focus on the boring blue boxes, read the small text, and purchase a wifi pass, I leave that page and have no more connection to Gogo after that.</p>
<p>I ended up working with a friend to see if we could improve Gogo’s customer experience by gamifying the user onboarding flow. We spent the next couple hours interviewing Gogo executives to fully understand their business problems and goals. One interesting fact was that Gogo has more users than it can handle already and is not worried about attracting new users. Instead, their problem lies in getting people to interact with the brand more and build brand loyalty. In particular, business users tend to be price insensitive and will use Gogo no matter what. Casual consumers, on the other hand, do not interact with Gogo at all. How can Gogo engage casual consumers while still catering to their primary business clients?</p>
<p>With this in mind, we whiteboarded a user flow diagram, and decided to quickly mockup one possible flow.</p>
<p><strong>The Redesign</strong></p>
<p><a href="/post_files/gogo/landing.jpg"><img src="/post_files/gogo/landing_thumb.jpg" alt="Landing Page" /></a></p>
<p>This is the first page users will see when they connect their device to Gogo’s wifi. The <a href="http://500px.com/photo/42745396">background image</a> evokes thoughts of speed, which will then be associated with Gogo’s brand and their wifi. The large red button makes it immediately clear what they should do next<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>.</p>
<p>Scrolling down, users will see a list of services that Gogo and Delta offer without requiring a wifi pass, presented in a familiar app screen format. On an airplane, users are a captive audience that can afford to spend time exploring, so an inviting list of new apps will be more tantalizing than large, obnoxious ads.</p>
<p>Alright, now we’re ready to try something new.</p>
<p><strong>The Gamification</strong></p>
<p><a href="/post_files/gogo/wifi.jpg"><img src="/post_files/gogo/wifi_thumb.jpg" alt="Free Wifi" /></a></p>
<p>Once tapping the try wifi now button, the user is awarded five free minutes of wifi. The goal here is to give users a taste of Gogo’s product, as well as to gamify the purchase process. Users have three choices:</p>
<ol>
<li><em>Use their free five minutes right away</em>. This option is de-emphasized with a small link at the bottom.</li>
<li><em>Purchase more minutes or unlimited passes</em>. This option will be used by business travelers who are price insensitive or customers who already know what they want.</li>
<li><em>Play games to try to win more minutes</em>.</li>
</ol>
<p>Let’s look behind door #3.</p>
<p><a href="/post_files/gogo/games.jpg"><img src="/post_files/gogo/games_thumb.jpg" alt="Choose a Game" /></a></p>
<p>What do you do when you get five free minutes? You gamble it away of course!</p>
<p>We chose 3 basic and well-known casino games, ranging from high to low strategy. For poker, users would be able to play with other passengers on the same flight, adding a social element to the game without taxing the limited bandwidth. The goal here is to keep users engaged with the Gogo brand, while also driving them to purchase more minutes to keep playing once gambling psychology kicks in.</p>
<p><a href="/post_files/gogo/slots.jpg"><img src="/post_files/gogo/slots_thumb.jpg" alt="Playing Slots" /></a></p>
<p>In this slots example, each spin costs the user 20 seconds of wifi time to play. There are two possible outcomes: either the user gets lucky and wins minutes, or the user goes broke eventually and must buy more minutes to keep playing. This whole time, the user has continued to see and engage with Gogo’s brand.</p>
<p>From Gogo’s perspective, this strategy costs very little, but it provides an opportunity to hook customers with games or to give them a taste of internet access in the sky. It will be very tempting to purchase a wifi pass once you’re already chatting with friends on Facebook, or in the middle of a heated poker round. More importantly, if you know that you’ll get 5 minutes of wifi just for connecting your device to the network, you’re also more likely to see Gogo’s other services, like their in-flight movies, than if you never bother to even connect your device. From the cusomer’s perspective, Gogo becomes a more friendly brand, rather than the company that charges too much for wifi.</p>
<p>There are of course still gaps and issues that need to be worked out, but for a few hours of work, I think this is an interesting take on the Gogo onboarding flow. The audience seemed to agree because we won the Peer Choice award<sup id="fnref:2" role="doc-noteref"><a href="#fn:2" class="footnote" rel="footnote">2</a></sup> at the hackathon.</p>
<p><strong>The Pitch</strong></p>
<p>And here’s our final pitch!</p>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/MnnDDnuUQSU" title="Team Not-Coding-For-Once" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
<div class="footnotes" role="doc-endnotes">
<ol>
<li id="fn:1" role="doc-endnote">
<p>This button would be customized based on Gogo’s business goals per flight. For example, on busy flights where the wifi usage is already maxed out, this CTA could encourage users to check out Gogo’s movie library or games instead. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>Peer Choice was determined by votes from other participants. We also received honorary mention by the judges, who liked our presentation (which had more screenshots than shown here) but could not pick us for first place because we didn’t actually code anything. <a href="#fnref:2" class="reversefootnote" role="doc-backlink">↩</a></p>
</li>
</ol>
</div>
Thoughts on YouTube's DMCA Takedown Process2012-12-22T00:00:00+00:00https://neil.gg/blog/achievement-unlocked
<p class="meta">22 Dec 2012 - San Jose</p>
<p>I received my first copyright infringement take down notice today!</p>
<p>From who? <a href="http://en.wikipedia.org/wiki/Sky_Italia">Sky Italia</a>, a News Corp. company.</p>
<p>For what? A “<a href="http://www.youtube.com/watch?v=OkX0lY_MoOE">How to post to a forum on Moodle</a>” tutorial I posted on YouTube in 2007 for a Google Summer of Code task. That means it was requested by Moodle, and sponsored by Google. It consisted of a screencast of Moodle and my voice over.</p>
<p>I woke up to the following email this morning:</p>
<p><a href="/post_files/youtube.jpg"><img src="/post_files/youtube_thumb.jpg" alt="YouTube take down notice" /></a></p>
<p>No appeals process, no “reply to let us know that this accusation is about as legitimate as <a href="http://techcrunch.com/2012/12/21/facebook-poke-vs-snapchat-what-is-the-difference/">Facebook’s Poke app is original</a>.”</p>
<p>The video is blocked, and apparently my account has been penalized. I am assuming they are referring to their “three strikes” policy, where if I get 2 more such bogus claims against me, my account and all uploaded videos will be deleted.</p>
<p>Now in this particular case, I don’t actually care. I haven’t used my YouTube account in years and don’t even know the password anymore. I probably wouldn’t have even noticed, had they not emailed me. The only reason I had left the content on YouTube was to have a historical record of them for nostalgic purposes.</p>
<p>However, I suspect this kind of behavior happens a lot. I remember last year’s debacle with <a href="http://news.cnet.com/8301-27080_3-57344570-245/mystery-surrounds-universals-takedown-of-megaupload-youtube-video/">Universal Media taking down Megaupload’s promo video</a> using the same flawed DMCA process. What’s more frustrating here though is that this was a purely educational video that has helped at least a handful of people over the years. I believe Moodle was even linking to it from their support site at one point.</p>
<p>This may be a relatively rare problem right now, but if it is not nipped in the bud, it could grow into a major headache for YouTube. Why would I upload my original creative content if there’s a chance my video will just get blocked by some large company with too many lawyers? This is similar to the problem Twitter developers face today. Why should they develop for the Twitter ecosystem if Twitter might just cut them off any day?</p>
<p>The ball’s in your court YouTube. Don’t drop it.</p>
<p><strong>Update:</strong> Out of curiosity, I decided to log in and try to appeal the claim, at which point I got this error:</p>
<p><img src="/post_files/youtube_error.png" alt="YouTube Error" /></p>
<p>There doesn’t seem to be much else I can do anymore to resolve this issue. YouTube really needs an actual appeals process.</p>
Dear Apple, DUNS is a scam, but you already know that.2012-12-03T00:00:00+00:00https://neil.gg/blog/apple-duns
<p class="meta">03 Dec 2012 - Chicago</p>
<blockquote>
<p><strong>What is a D-U-N-S Number?</strong></p>
<p>The D-U-N-S Number is a unique nine-digit number that identifies business entities on a location-specific basis. Assigned and maintained by Dun & Bradstreet (D&B), the D-U-N-S Number is widely used as a standard business identifier. To learn more, <a href="http://www.dnb.com/">visit dnb.com</a>.</p>
</blockquote>
<p>Apple recently switched to requiring a DUNS number to open a company developer account. Previously, they only required a company to upload their incorporation documents. Unfortunately, manually validating those documents themselves <a href="http://www.quora.com/iOS-Development/Why-does-Apple-require-a-duns-number-for-a-company-developer-account">became too much of a burden</a>, so they decided to rely on the same international database that the government uses to identify companies instead. Basically, it allows Apple to offload the manual labor of verifying companies to a third party at no cost.</p>
<p>As a startup, you probably don’t have a DUNS number, since they are primarily used when doing business with the government. A quick search will bring up plenty of complaints about the DUNS process, with most people wondering why Apple would partner with such a shady company. There is a lot of confusion and questions surrounding the process, primarily “how long does it take?” and “how much should it cost?”</p>
<p>The <a href="https://developer.apple.com/support/D-U-N-S/">standard process</a> for acquiring a DUNS number is to go to the D&B website, figure out how to navigate their site, fill out 10 pages of complicated, unnecessary information about your company, and then choose to wait 30 days for a free DUNS number or pay $50 to get it in 5 days. After you get your number, you have to <a href="http://www.quora.com/Apple-Developer/What-is-the-schedule-Apple-uses-to-refresh-DUNS-numbers-in-their-system">wait up to another 14 days</a> for <a href="http://apple-duns.weebly.com">Apple to sync their database</a> with DUNS, and then you can <em>finally</em> sign up account.</p>
<p>Do <strong>not</strong> do any of that.</p>
<p>I tried following the above process at first, and it is every bit as painful as it sounds. But with a little bit of exploration and luck, I found a better way to acquire a DUNS number and open my developer account within a week:</p>
<ol>
<li><a href="https://developer.apple.com/enroll/duns-lookup/">Use Apple’s DUNS lookup tool</a> to search for your business’ number, even if you know you don’t have one.</li>
<li>Once you do the lookup, there will be a link to submit a request for a DUNS number to D&B on your behalf. This will handle everything automatically, so you don’t have to touch D&B’s website.</li>
<li>Within 5 days, you will get a call from D&B, asking for more information. This is where you will answer a bunch of questions about your company over the phone.</li>
<li>Within 24 hours after this call, you will receive your DUNS number by email.</li>
</ol>
<p>If you need an account right away to test your app on an actual device, go ahead and purchase an individual account while you wait for this process to complete. Don’t worry, you won’t be paying twice. Once you have your DUNS number, ask Apple to convert your individual account into a corporate account. <a href="https://developer.apple.com/support/ios/account-management.html">From Apple</a>:</p>
<blockquote>
<p><strong>If I am enrolled as an individual, can I change to a company membership?</strong></p>
<p>Yes. To convert your iOS Developer Program membership from an individual to a company, please <a href="https://developer.apple.com/contact/submit.php">contact us</a>. You can make this change only if you are the founder/co-founder of the company. As part of the conversion process, you may be asked to submit business documents to verify your company’s identity.</p>
</blockquote>
<p>In your message, include your DUNS number and your company’s legal name. Apple will call you to confirm your request and walk you through the process, but it is relatively painless and quick. Once the transition is done, you should have a company developer account within a week without paying an extra dollar over the $100 Apple membership fee.</p>
<p>After a frustrating month of cursing at D&B, I was stunned at how easy it turned out to be after using the link on Apple’s site. That suggests to me that even Apple knows just how bad D&B is, but views them as a necessary evil.</p>
<p>While I understand Apple’s desire to partner with D&B, I hope that Apple will at least work to make the process less painful and confusing, so that posts like this one are no longer necessary. For starters, they could more visibly abstract everything so that they control the experience and simply pass the data to D&B for validation. The fastest way to do that would be to direct everybody through the steps I just outlined above, rather than telling developers to go directly to D&B first. Ideally, Apple would not even mention D&B, and just allow us to register through their website, while they take care of dealing with D&B on our behalf.</p>
<p><em>Note:</em> I actually had to fill out Apple’s DUNS lookup form twice. After the first time, I got an email from DUNS after 5 days telling me my verification failed. I called D&B to find out why, and after some phone tag, a representative told me they weren’t able to reach me for verification (I never got a call). He told me to just fill out the form again, which I did, and I got a call and number less than 5 days later.</p>
<p><strong>Update:</strong> Apparently, <a href="https://developer.apple.com/programs/ios/enterprise/">Enterprise developer accounts</a> ($300/year) have always required a DUNS number, so this is not uncharted territory for Apple. However, requiring it for regular company accounts is new, and that’s where the problem is. Most companies applying for an Enterprise account probably already had a DUNS number, or at least had the resources to acquire one quickly without Apple’s help. This is not true for the hundreds of startups making iOS apps that have never heard of a DUNS number before. (Thanks <a href="https://twitter.com/alanzeino/status/286384362872786944">@alanzeino</a> for the heads up.)</p>
<p><strong>Update (2019)</strong>: I just came back to this post to apply for a new DUNS number 6 years later, and looks like Apple followed my advice and updated their <a href="https://developer.apple.com/support/D-U-N-S/">DUNS info page</a> with the above steps! 🥳</p>
Just For Fun - Code From The Future2012-12-02T00:00:00+00:00https://neil.gg/blog/just-for-fun-code-from-the-future
<p class="meta">02 Dec 2012 - Chicago</p>
<p>Want to share code from the future? Just set your system clock to some future date and then do a git commit. When you push those commits to GitHub, they will appear to be from the future!</p>
<p><img src="/post_files/githubIn2Days.png" alt="GitHub screenshot" /></p>
<p>Since git uses your local system clock to keep track of commit times, GitHub simply trusts and reports those back, resulting in some potentially confusing histories. Ideally, GitHub would not allow future timestamps and any commits appearing to be from the future would just be capped to the server time at the time of push. But this isn’t really a big enough problem for GitHub to worry about…</p>
<p>I discovered this little bug while working on Tabule’s date parsing library, <a href="https://github.com/Tabule/Sherlock/">Sherlock</a>, which is why my system clock was set to 2 days in the future, and it amused me quite a bit.</p>
Your Startup Is Spam2012-10-14T00:00:00+00:00https://neil.gg/blog/your-startup-is-spam
<p class="meta">14 Oct 2012 - Chicago</p>
<p>If you’ve ever built something yourself or worked on a startup, you know that your product is like your baby. You are acutely aware of each flaw, but if somebody else insults it, it’s personal.</p>
<p>Last night, I met a student, and I told him he should use <a href="https://tabuleapp.com">Tabule</a> for his classes. Not knowing that I was the founder of Tabule, his immediate reaction was, “Oh, Tabule. That’s just spam.” First I was surprised to learn that he had even heard of it, let alone have such a visceral reaction, since we just launched about a month ago. He complained that his RA uses Tabule to post announcements and events for the floor, and he resented getting spammed by Tabule.</p>
<p>The problem was that it’s the RA’s job to constantly email their residents with announcements and information about upcoming campus events. Usually, people associate these emails with the RA and deal with them accordingly. But because Tabule was being used as an intermediary and all of the notification emails came from Tabule, he shifted the association to Tabule and blamed us for the spam.</p>
<p>I woke up this morning to an email from Google+ asking me if I am going to some public event in another state. My first thought was “Stop spamming me Google!” But then I realized one of my contacts had invited me to the event and I was incorrectly blaming Google+ for notifying me.</p>
<p>We have now changed all notification emails for Tabule to be from the person who triggered the notification, instead of everything coming from Tabule. Now when you see an email in your inbox, you think of the person who sent it, not Tabule. This actually helps us more seamlessly integrate Tabule into your existing workflow, since you are now more likely to just respond to the notification email as if it were a direct email and post back to Tabule.</p>
<p>Listen to every bit of feedback, even if it’s something extremely negative like “your app is spam.” You never know what will lead you to learn some new insight about your app and users.</p>
The Little Things2012-10-07T00:00:00+00:00https://neil.gg/blog/the-little-things-developer
<p class="meta">07 Oct 2012 - Chicago</p>
<p>Every developer has a list of tools and tweaks that they build up over time to increase their productivity. Here is a list of the little things I find useful to install everytime I set up a new machine. For reference, I am running Mac OS X 10.8 Mountain Lion, so many of these tools may be specific to that platform.</p>
<p><strong>QuickLook</strong></p>
<ul>
<li><a href="https://github.com/whomwah/qlstephen">View plaintext files without an extension in QuickLook</a></li>
<li><a href="https://github.com/Nyx0uf/qlImageSize">View image dimensions in QuickLook preview</a></li>
<li><a href="https://github.com/toland/qlmarkdown/">View Markdown files</a></li>
</ul>
<p><strong>Terminal Hacks</strong></p>
<p>See my <a href="https://github.com/neilgupta/dotfiles/blob/master/osx.sh">osx.sh</a> for a list of useful Terminal hacks.</p>
<p><strong>Keyboard Remapping</strong></p>
<p>See these articles to set up your own awesome keyboard mappings.</p>
<ul>
<li><a href="http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#pckeyboardhack">A Modern Space Cadet</a> - Uses KeyRemap4MacBook and PCKeyboarcHack to remap keys to be more useful.</li>
<li><a href="http://thume.ca/howto/2012/11/19/using-slate/">Using Slate</a> - Walks through how to set up Slate to efficiently manage windows on your Mac.</li>
</ul>
<p>See my <a href="https://github.com/neilgupta/dotfiles/blob/master/slate">.slate config file</a> and my <a href="https://github.com/neilgupta/dotfiles/blob/master/KeyRemap4MacBook/private.xml">KeyRemap4MacBook xml file</a> to see how I’m using these tools.</p>
<p>In addition, modify Application windows in System Preferences -> Keyboard -> Keyboard Shortcuts -> Mission Control to respond to <code class="language-plaintext highlighter-rouge">hyper+tab</code>.</p>
<p><strong>Sublime Text 2</strong></p>
<ul>
<li><a href="http://www.sublimetext.com/2">Install Sublime Text 2</a></li>
<li><a href="http://wbond.net/sublime_packages/package_control">Install Package Control</a></li>
<li>Install <code class="language-plaintext highlighter-rouge">LESS</code> via Package Control (<a href="https://github.com/danro/LESS-sublime">GitHub</a>)</li>
<li>Install <code class="language-plaintext highlighter-rouge">CoffeeScript</code> via Package Control (<a href="https://github.com/Xavura/CoffeeScript-Sublime-Plugin">GitHub</a>)</li>
<li>Install <code class="language-plaintext highlighter-rouge">jQuery</code> via Package Control (<a href="https://github.com/SublimeText/jQuery">GitHub</a>)</li>
<li>Install <code class="language-plaintext highlighter-rouge">Git</code> via Package Control (<a href="https://github.com/kemayo/sublime-text-2-git">GitHub</a>)</li>
<li>Install <code class="language-plaintext highlighter-rouge">Tag</code> via Package Control (<a href="https://github.com/SublimeText/Tag">GitHub</a>)</li>
</ul>
<p><strong>Other</strong></p>
<ul>
<li><a href="http://leonardo-m.livejournal.com/77079.html">Inconsolata-g monospaced font</a> - because the default system fonts suck for code. Be sure to change the default font in Terminal preferences to Inconsolata-g 12pt antialiased. In ST2, add the following line to preferences: <code class="language-plaintext highlighter-rouge">"font_face": "Inconsolata-g"</code></li>
<li><a href="http://blog.smalleycreative.com/tutorials/using-git-and-github-to-manage-your-dotfiles/">Setup dotfiles</a></li>
<li>Enable “New Terminal Tab at Folder” service from Keyboard Shortcuts System Preferences pane</li>
</ul>
<p><img src="https://pbs.twimg.com/media/A1AmLy6CUAElGq4.jpg:large" alt="System Preferences Screenshot" /></p>
Apple Fixed iMessages's Multiple Alert Problem2012-09-25T00:00:00+00:00https://neil.gg/blog/apple-fixed-imessage-multiple-alerts-problem
<p class="meta">25 Sep 2012 - Chicago</p>
<p>Anybody with multiple Apple devices that are synced to the same iCloud account has experienced the problem of being bombarded with iMessage alerts. Each message would cause all of your devices to light up and beep. This got so annoying that I finally turned off vibrations and sounds for texts on my phone.</p>
<p>There have been many suggested solutions from the community, almost all of which overcomplicated things by requiring some sort of configuration by the user or constantly keeping track of device location. Anything that makes you order your devices by <a href="http://www.idownloadblog.com/2012/04/13/imessage-alert-priority/">alert priority</a> is not really a solution because it defeats the point of iCloud, which is simplicity and convenience. Keeping track of your device locations or even your overall last used device to choose the one nearest you would drain battery and invade privacy, two of Apple’s biggest no nos.</p>
<p>Luckily, with iOS 6, Apple seems to have solved the problem in a rather intuitive way. You see an alert on the last device you replied to that person from first, and then your other devices will get the notification 2 seconds later.</p>
<p>In other words, if I’m out and about with my iPhone, texting Paul and Eric, their texts will come to my phone. Pretty straightforward.</p>
<p>When I come home, their texts will continue to come to my phone first and my other devices will alert me a couple seconds later, if I don’t look at the text on my phone in that time.</p>
<p>Since I’m sitting at my computer by now, I decide to reply to Eric from my computer. His next text goes straight to my computer and doesn’t cause my phone to buzz this time. But when Paul finally replies, it buzzes my phone.</p>
<p>I reply to Paul as well from my computer, and now my phone is entirely silent.</p>
<p>However, if I didn’t reply to Paul and he messaged me again, it would go to all of my devices at the same time.</p>
<p>I am not sure why the last device used is person-specific, as in why Paul continued to send to my phone until I replied to him even though Eric’s texts prioritized my computer.</p>
<p>Now I just wonder why Apple can’t use this same iOS 6 push notification syncing feature to automatically keep my other notifications in sync, like Facebook or <a href="http://twitter.com/neilgupta">Twitter</a>.</p>
Coding Like It's 19952012-07-11T00:00:00+00:00https://neil.gg/blog/coding-like-its-1995
<p class="meta">11 Jul 2012 - Chicago</p>
<p>I set out to design my first HTML email today, and put together a simple CSS design in under 15 minutes. Then I looked at other HTML email templates out of curiosity and noticed that every single one of them used tables for their layout, even Apple’s. Turns out that most email clients don’t accept the standard CSS that we’ve grown accustomed to in browsers, making even IE6 look good. The best email client out there is Apple’s Mail.app, which uses Webkit for all of its html rendering. Surprisingly, one of the worst is Gmail. Almost none of your basic CSS will work in Gmail. What this means is that designing even simple HTML emails can become an extremely painful ordeal if you’re not prepared.</p>
<p>How painful? Be ready to forget everything you know about good web design and start nesting tables inside of tables inside of tables. The most important things to remember:</p>
<ol>
<li>You cannot have a <code class="language-plaintext highlighter-rouge"><head></code> section. It will simply be ignored by Gmail. That means all your CSS will need to be inline. But better to just avoid using CSS as much as possible. It probably won’t work.</li>
<li>Brush up on all those depcrated HTML3 tags, like <code class="language-plaintext highlighter-rouge"><font></code> and <code class="language-plaintext highlighter-rouge"><center></code>. They are your friends in this cold lonely world you are entering.</li>
<li>The standard practice is to create a container table with 100% width, and then another table inside of that that is centered with content. There’s a reason for this, but that doesn’t make it feel any better.</li>
<li>Keep images to a minimum, most email clients won’t load them without the user’s permission.</li>
</ol>
<p>Still here? At this point, you’re probably reconsidering if HTML emails are even worth the trouble. The answer is no, no they are not. But if you’re still going to push forward, here are some useful resources I found to help understand the nightmare that is 20 different email clients that all have their own idiosyncrasies:</p>
<ul>
<li><a href="http://www.campaignmonitor.com/css/">Campaign Monitor’s Ultimate Guide to CSS in HTML Emails</a> - they have a very easy-to-read table of which CSS styles each popular email client supports. There are a lot of red X’s…</li>
<li><a href="http://css-tricks.com/using-css-in-html-emails-the-real-story/">Using CSS in HTML Emails: The Real Story</a> - quick tips and guidelines for writing HTML emails.</li>
<li><a href="http://net.tutsplus.com/tutorials/html-css-techniques/20-email-design-best-practices-and-resources-for-beginners/">20 Email Design Best Practices</a> - very good rundown of do’s and dont’s</li>
<li><a href="http://premailer.dialect.ca/">Premailer</a> - paste your HTML code and get a list of warnings that you should fix, very useful!</li>
<li><a href="http://litmus.com/email-testing">Litmus Email Testing</a> - Paste your HTML code and get screenshots of how it looks in every popular email client. This service has a 7 day free trial, but costs $50/month after that. If you are unfortunate enough to have to design lots of HTML emails, this will probably be worth every penny.</li>
</ul>
<p>I had no idea that the state of HTML emails is so pathetic. I still feel dirty from typing nested tables and inline CSS. Unfortunately, I don’t see this getting better anytime soon if the problem has persisted this long, since there is little incentive for email client developers to improve their CSS support at this point.</p>
From Graduation to a Press Conference with the Mayor in 2 Months2012-07-08T00:00:00+00:00https://neil.gg/blog/im-alive
<p class="meta">08 Jul 2012 - Chicago</p>
<p>I haven’t posted any updates in a long time, but I have set a personal goal to improve my blogging presence and keep this site updated. I’ll start off by giving a quick summary of where my life’s at now.</p>
<p>I graduated from the Illinois Institute of Technology with Bachelors in Computer Science and Psychology, a minor in Entrepreneurship, and a specialization in Artificial Intelligence two months ago. One month ago, I incorporated my startup, <a href="http://tabuleapp.com">Tabule</a>. One week ago, I did a <a href="http://www.suntimes.com/news/metro/13489965-418/mayor-intent-on-making-chicago-a-start-up-city.html">press conference</a> with Chicago Mayor Rahm Emanuel (embedded below), where I talked about my startup and why I chose Chicago over California. The gist of my reasoning was that Chicagoans are more eager to help each other because if any startup succeeds here, everybody in Chicago benefits. The fact that I was doing a press release with the Mayor already proved my point.</p>
<p>Today, I am working full-time with <a href="http://twitter.com/eric_trinh">my cofounder</a> to <a href="http://blog.tabuleapp.com/whats-changing-and-why">pivot Tabule</a> and build a new MVP. I look forward to seeing where this journey takes me and documenting it here.</p>
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Jhkxije28Qw?rel=0" frameborder="0" allowfullscreen="true"></iframe>
My Journey to Jekyll2012-01-01T00:00:00+00:00https://neil.gg/blog/my-journey-to-jekyll
<p class="meta">01 Jan 2012 - San Jose</p>
<p>I recently switched to generating this blog using <a href="http://jekyllrb.com/">Jekyll</a>, and hosting it on <a href="http://pages.github.com/">GitHub Pages</a>. Over the years, I’ve gone through many blogging platforms before arriving at my current choice. This is a quick overview of the platforms I’ve tried, and my thoughts on each one.</p>
<p><strong>Wordpress</strong></p>
<p>I used to host my own <a href="http://wordpress.org/">Wordpress</a> blog up until a few years ago. Back then, Wordpress was by far the best blogging solution around. It offered amazing expandability and customization potential, with an unparalleled plugin library and strong community. If you wish your blog could do something, somebody has probably already made a plugin for Wordpress to do it. Unfortunately, Wordpress’s high popularity also made it an attractive target for malicious hackers. New security vulnerabilities would be found on a regular basis, which meant you had to constantly keep your installation up-to-date. My site got hacked after I hadn’t updated my blog in several months and, as a result, failed to install the mandatory security updates.</p>
<p>Today, Wordpress just feels like overkill, and I can’t think of a single senario where it’s actually the best solution. Sure, it offers lots of features that you probably won’t find anywhere else, but chances are, you have no need for those features and the security vulnerabilities they bring. With each new feature it packs, its relative ease of use decreases, leaving it somewhere in the middle of being easy for a non-technical person to pick up and being satisfying for a hacker to customize. It’s kind of like driving an SUV when you want a sports car.</p>
<p><strong>Tumblr</strong></p>
<p>After my Wordpress installation got violated, I decided to give <a href="http://tumblr.com">Tumblr</a> a try. It was easy to get a blog up and running within a few minutes. The themes were beautiful and the community features were quite appealing. Unfortunately, this was back when they were having frequent downtimes, and soon after setting everything up, I lost access and quickly got frustrated.</p>
<p>Now that they seem to have solved their downtime problems, I would recommend Tumblr to any non-programmer looking to start a blog. It offers the best balance of features and ease-of-use, and it’s aesthetically appealing. The community sharing and follow features make it easy to build up a readership. It’s essentially the Twitter for blogs.</p>
<p><strong>Posterous</strong></p>
<p>Put off by Tumblr’s unrelability, I ended up switching to <a href="http://posterous.com">Posterous</a> for a while. When I switched, Posterous was basically a simplified Tumblr. Their most attractive feature was that I could just email my posts in from anywhere, formatted with Markdown. It didn’t have any obvious problems, so I thought I had finally found my ideal blogging platform. However, over time, I began to realize just how much I hated its control panel interface. It was slow, poorly organized, and required way too many clicks for common tasks. Posterous would also regularly garble my Markdown formatting, forcing me to log into the control panel and manually edit the posts. I just ended up blogging less and less.</p>
<p>Now, Posterous looks far more complicated than it needs to be, and I’m not even sure I understand the point of Posterous Spaces, their new group blogging focus. It used to be that you could just email post@posterous.com, and they would email you back with a link to your new blog that automatically got set up. Any future emails from that same email address would get posted to the same blog. That’s as simple as it gets. As far as I can tell, that setup process seems to be gone, or is at least completely hidden, which is a shame.</p>
<p><strong>Jekyll</strong></p>
<p>As I mentioned at the beginning of this post, I recently switched to Jekyll. So far, I am very happy with it. It’s simple, fast, and secure. My entire blog is just a git repositary that’s hosted on GitHub. In fact, <a href="https://github.com/neilgupta/neilgupta.github.com">you can view all the source files for this site!</a> I can write my posts in any text editor in Markdown format, and just push the changes to GitHub. Of course, this approach requires significant technical knowledge, a desire to hack away at code to get everything running, and experience with using git for source control management. It matched my requirements perfectly, but may not for others.</p>
<p>If you do want to try Jekyll (which I highly recommend to anybody who enjoys tinkering with code), the easiest way to get started is to fork an existing blog and customize it to fit your needs. You can use <a href="https://github.com/neilgupta/neilgupta.github.com">my blog</a> if you’d like, or one of the <a href="https://github.com/mojombo/jekyll/wiki/Sites">many others</a>. I used <a href="http://tom.preston-werner.com/">Tom Preston-Werner’s blog</a>, who is the creator of Jekyll. Another option that was recently emailed to me is <a href="http://jekyllbootstrap.com/">Jekyll-Bootstrap</a>, which aims to be “the quickest and most hassle-free way to get your new Jekyll powered website up and running.”</p>
<p>Jekyll is like a Tesla Roadster. It’s insanely fast and cool, but it does require a significant upfront investment. It’s barebones, but easy to customize, meaning it can be spruced up to be as beautiful as you want if you’re willing to get dirty and hack at it yourself.</p>
<p><strong>My Recommendations</strong></p>
<p>To recap, if you’re not a hacker, I’d recommend Tumblr. It offers the best balance of features and ease of use, and they seem to have solved their downtime problems. If, for some reason, you don’t like Tumblr, check out Posterous. If that still doesn’t suit your needs, <a href="http://wordpress.com">Wordpress.com</a> (the cloud-hosted version of Wordpress that gives you the power of Wordpress without the headache) would be my third recommendation.</p>
<p>If you are a hacker, definitely check out Jekyll.</p>
<p>I would not bother with self-hosted blogs unless you really have a need for that level of control, since the cloud-based or static options are so powerful these days. And most likely, if you do need that level of control, you’re probably better off investing a weekend and writing your own CMS.</p>
<p><strong>Bonus: OhLife</strong></p>
<p>I also recently discovered <a href="http://ohlife.com/">OhLife</a>, which is a great way to keep a private journal. It’ll send you an email at your chosen frequency (daily, weekly, etc) asking “How did your day go?” and you just reply with your journal entry. I’ve only been using it for a week so far, but it may be the first time I’ve kept a journal for even this long.</p>
<p><strong>Bonus #2: Calepin</strong></p>
<p>While writing this post, I came across <a href="http://calepin.co/">Calepin.co</a>, which looks to offer a simplified cloud-based blogging platform that’s a mix between Posterous and Jekyll. It lets you write your posts in any text editor and just save them to your <a href="http://dropbox.com">Dropbox</a> folder. Then you click on Publish on their site, and it scans your Dropbox and publishes the new posts for you. Since it uses Dropbox, that means you can write your post pretty much anywhere (your computer, your iPhone, your iPad). The only annoying part I can think of is that you have to go to the website to click Publish (although I suppose that’s not much different than pushing changes to GitHub). It also doesn’t offer any customization options at all, and does not yet support custom domains. It looks like an interesting solution for somebody that wants some of the benefits of Jekyll, but has no coding experience. I doubt I will ever give this a try myself, but I’ve decided to leave this summary here for others.</p>
How Apple Adopted the Kleenex Problem2011-12-16T00:00:00+00:00https://neil.gg/blog/how-apple-adopted-the-kleenex-problem
<p class="meta">16 Dec 2011 - San Jose</p>
<p>I just realized that some people think the Samsung Galaxy Tab is a type of iPad.</p>
<p>I heard the following conversation a few days ago:</p>
<blockquote>
<p>Person A: I just bought this new iPad.</p>
<p>Person B: Nice, is it a Galaxy Tab?</p>
<p>Person A: No, it’s an iPad.</p>
<p>Person B: Yes, but is it a Galaxy Tab?</p>
</blockquote>
<p>At first, I thought person B had simply misheard person A, but that didn’t explain the clarification. Then I read an article at <a href="http://smh.com.au/digital-life/tablets/apple-made-galaxy-tab-a-household-name-samsung-20111214-1ou9r.html">The Sydney Morning Herald</a>, interviewing Samsung Australia’s vice president of telecommunications, Tyler McGee, about the effect Apple’s lawsuits against Samsung have had in Australia:</p>
<blockquote>
<p>“At the end of the day the media awareness certainly made the Galaxy Tab 10.1 a household name compared to probably what it would’ve been based on the investment that we would’ve put into it from a marketing perspective.”</p>
</blockquote>
<p><a href="http://daringfireball.net/linked/2011/12/14/household-name">Gruber adds</a>:</p>
<blockquote>
<p>The overwhelming majority of the media coverage I’ve seen for the Galaxy Tab is related to Apple’s various lawsuits.</p>
</blockquote>
<p>The majority of people probably only hear about the Galaxy Tab when it’s paired with Apple’s name, which understandably leads to an association between the two companies.</p>
<p>It has been said that, “There is no tablet market, only an iPad market.” By that logic, it is reasonable to assume that most consumers now view ‘iPad’ as a general product category, rather than a specific product, much like Kleenex or Xerox. When a competing product is announced, it is now another type of iPad.</p>
<p>Kleenex invested a lot of time, money, and energy fighting the misappropriation of their brand name. The problem is that people assume all brands of tissues on the shelves are Kleenexes, diluting the Kleenex brand. If they are unable to prevent people from using their trademark generically, they risk becoming a <a href="http://en.wikipedia.org/wiki/Genericized_trademark">genericized trademark</a> and no longer being legally protected.</p>
<p align="center"><a href="/post_files/Kleenex_Do_Not_Erase_Ad.jpg"><img src="/post_files/Kleenex_Do_Not_Erase_Ad_Small.jpg" alt="Kleenex ad" /></a></p>
<blockquote>
<p>You may not realize it, but by using the name Kleenex® as a generic term for tissue, you risk erasing our coveted brand name that we’ve worked so hard for all these years. Kleenex® is a registered trademark and should <em>always</em> be followed by a ® and the words ‘Brand Tissue’. Just pretend it’s in permanent marker. (via <a href="http://www.stephenyoungdfw.com/blog/kleenex-brand-tissue-has-a-different-type-of-branding-problem">Stephen Young</a>)</p>
</blockquote>
<p>It’s a <a href="http://en.wikipedia.org/wiki/List_of_generic_and_genericized_trademarks">common problem</a> that <a href="http://blog.yellowdoggdesigns.com/branding-spotlight-when-a-brand-becomes-more-than-just-a-brand/">many large companies</a> face. Apple, for their part, has been extremely aggressive in protecting their trademarks, often suing for any use of the word “pod” or the iNoun naming scheme.</p>
<p>However, it seems Apple is on a path to generating a trademark problem for themselves with the iPad brand. Ironically, the iPhone brand hasn’t experienced this problem thanks to the “us-vs-them” mentality of the Verizon Droid ads. “Droid does” is a well-recognized slogan that implies there are differences between Android and iOS, separating the two products in consumers’ minds. With the iPad so strongly dominating the tablet market and few recognizable competitors (who’s heard of the Xoom outside of tech geeks?), that difference between competing products ceases to exist.</p>
<p>The question then becomes, did the lawsuits against Samsung do more harm than good for Apple? I believe the former will become increasingly apparent. They should have just let the Galaxy Tab release and fade into obscurity, rather than accidentally turning it into a household name that’s linked to Apple’s brand.</p>
Calculating Reading Time2011-06-04T00:00:00+00:00https://neil.gg/blog/calculating-reading-time
<p class="meta">04 Jun 2011 - San Jose</p>
<p>There’s a useful little shell command posted <a href="http://www.leancrew.com/all-this/2011/06/reading-time-in-textmate/">here</a> to calculate the reading time of a text selection based on the average reading speed.</p>
<p>Such a simple feature got me thinking about all the places this could be used, like RSS readers or Instapaper to let me filter my articles based on the amount of time I have.</p>
<p>The most useful place I’d love to see this implemented is in my email client, such that it warns me if I am sending an email that will take longer than 30 seconds to read. That would be a great way to finally encourage people to <a href="http://five.sentenc.es">send shorter emails</a>.</p>
<p><strong>Update:</strong> I threw together a quick Safari extension based on the above idea for Gmail. You can get it from <a href="https://github.com/neilgupta/Gmail-Message-Length-Checker">GitHub</a>.</p>
Passion Shows2011-05-20T00:00:00+00:00https://neil.gg/blog/passion-shows
<p class="meta">20 May 2011 - San Diego</p>
<p align="center"><img src="/post_files/passionshows.jpg" alt="" width="400" /></p>
<p>Found on a San Diego beach, the attention to detail in this sand castle is beyond ridiculous. The creator places each layer of sand one inch at a time to get that level of detail. He’s been building sand castles for nearly two decades. He started when his kids were toddlers, and just kept doing it even after his kids left for college and moved on. His passion shows. The beach was covered in similar castles that he had been building all day just for fun.</p>
Keep It Simple, Stupid2011-05-20T00:00:00+00:00https://neil.gg/blog/keep-it-simple-stupid
<p class="meta">20 May 2011 - San Jose</p>
<p>via <a href="http://blogs.forbes.com/carminegallo/2011/05/16/steve-jobs-get-rid-of-the-crappy-stuff/">blogs.forbes.com</a></p>
<blockquote>
<p>A designer knows he has achieved perfection not when there is nothing more to add, but when there is nothing left to take away.</p>
</blockquote>
<p>It really does take a lot of courage to cut down features and “get rid of the crap,” but if you can, you come to the following realization:</p>
<blockquote>
<p>People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully. <em>I’m actually as proud of the things we haven’t done as the things I have done.</em></p>
</blockquote>
Quote - Warriors and Scholars2011-05-10T00:00:00+00:00https://neil.gg/blog/quote-warriors-and-scholars
<p class="meta">10 May 2011 - San Jose</p>
<p>Aza Raskin, <a href="http://thenextweb.com/video/2011/05/10/apple-baby-aza-raskin-on-the-secrets-of-great-user-interface/">discussing user interface
design</a>:</p>
<blockquote>
<p><em>“The society that separates its warriors from its scholars, is a society that’s doomed to fail. Because if you do, then your idiots do your fighting, and your cowards do your thinking.”</em></p>
<p>The exact same thing is true of designers and engineers.</p>
</blockquote>
<p>Raskin quotes an ancient Greek philosopher to illustrate why designers
and engineers need to work together to design great products, rather
than simply tacking an interface on top of an engineering project.</p>
Ignoring Calls Elegantly2011-03-18T00:00:00+00:00https://neil.gg/blog/ignoring-calls-elegantly
<p class="meta">18 Mar 2011 - Chicago</p>
<p>I read <a href="http://minimalmac.com/post/3165411533/airplane-mode">a post last
month</a> about
phone etiquette in social events that encouraged people to switch to
airplane mode so that calls would be sent straight to voicemail while
you could keep using the social features of the phone for the
conversation. While this strategy makes sense for showing pictures
from my local photo library or taking notes, there is little else my
phone can do without a data connection. Often times I use my phone to
look up a fact to settle a debate between friends or grab a file from
Dropbox.</p>
<p>So how can we still encourage good phone etiquette without using airplane mode?</p>
<p>I was out for dinner last night, and my friend’s phone was on the
table. Half way through the night, it started ringing, and his first
instinct was to flip it over to make it stop. Obviously, it kept
ringing so he had to flip it back, forward the call, and then put the
phone back on the table face down.</p>
<p>Why couldn’t the phone just forward the call automatically as soon he
flipped it over? That’s a fairly universal gesture to signify that you
wish to ignore your phone. This simple interaction design would make
it far more acceptable to leave your phone on the table during a
meeting or social gathering, and quickly ignore calls that don’t need
your attention.</p>
<p>I’d love to see iOS 5 implement this functionality, since all of the
hardware needed (accelerometer and proximity sensor) is already
built-in to all of their devices.</p>
<p><strong>Update on 7/8/12:</strong> I recently learned that certain older Android phones already had this feature. I wonder why it never caught on.</p>
Ideas don't make you rich. The correct execution of ideas does.2011-03-13T00:00:00+00:00https://neil.gg/blog/ideas-dont-make-you-rich-the-correct-execution-of-ideas-does
<p class="meta">13 Mar 2011 - Chicago</p>
<p>via <a href="http://blogs.forbes.com/jeffbercovici/2011/03/11/excerpt-maxim-founder-felix-dennis-on-the-fallacy-of-big-ideas/">blogs.forbes.com</a></p>
<blockquote>
<p>Good ideas are like Nike sports shoes. They may facilitate success for an athlete who possesses them, but on their own they are nothing but an overpriced pair of sneakers. Sports shoes don’t win races. Athletes do.</p>
</blockquote>
<p>Bet on the jockey, not the horse.</p>
<p>My professor used to drill this saying into us in my Intro to Entrepreneurship class 2 years ago. I still use that quote most when giving advice to other students who have an idea but are hesitant to share it.</p>
<p>My freshmen year in college, I met two students who had just received VC funding, and they told me one tip that had helped them most: they shared their idea with anybody who would listen, because they never knew how somebody might be able to help them along.</p>
<p>If you truly have a good idea, somebody else is working on it too. You might as well talk about it and get all the help you can.</p>
Quote - Why Entrepreneurs Should Love Rap Music2011-02-13T00:00:00+00:00https://neil.gg/blog/quote-why-entrepreneurs-should-love-rap-music
<p class="meta">13 Feb 2011 - Chicago</p>
<p>via <a href="http://areallybadidea.com/why-entrepreneurs-should-love-rap-music">areallybadidea.com</a></p>
<blockquote>
<p>Rap music is music for entrepreneurs. Other genres write about love (rock, r&b), unattainable love (indie), nothing at all (electronic / dance), or redneck issues (country). But only rap music is almost maniacal in its focus on success, the acquisition of money and subsequent dispensation of it.</p>
</blockquote>
Google Search Results Statistics2011-01-30T00:00:00+00:00https://neil.gg/blog/google-search-results-statistics
<p class="meta">30 Jan 2011 - Chicago</p>
<p>via <a href="http://www.fastcompany.com/1721252/how-facebook-killed-spam">fastcompany.com</a></p>
<blockquote>
<p>(Indeed, search Google for “stop Farmville notifications,” and you’ll get over 50,000 results.)</p>
</blockquote>
<p>Why do people always insist on citing the number of Google search results as a measure for popularity?</p>
Pivotal Tracker Pricing Updates2011-01-28T00:00:00+00:00https://neil.gg/blog/pivotal-tracker-pricing-updates
<p class="meta">28 Jan 2011 - Chicago</p>
<p>I just received Pivotal Tracker’s email regarding updates to their pricing plans that were announced last week. While their previous announcement was totally understandable (a company needs to make money), it was a bit of a bummer to suddenly see such a great free tool cost money. Their new email, on the other hand, presents a new pricing structure that they have modified based on customer feedback. I am really impressed at how they listened to feedback and quickly adjusted accordingly. I always appreciate dealing with a company that actually cares about its users, and their email just strengthened my support of their product and convinced me to stick with them once the pricing plans take effect.</p>
Introducing Odorno Virtual Home Furnishing2011-01-28T00:00:00+00:00https://neil.gg/blog/introducing-odorno-virtual-home-furnishing
<p class="meta">28 Jan 2011 - Chicago</p>
<p><img src="/post_files/odorno/logo.jpg" alt="Odorno Logo" width="100%" /></p>
<p>Well, ok, not actually <em>introducing</em>, since Odorno isn’t a real product. It’s an early-stage business idea my partner-in-crime Muhammed Fazeel and I came up with our first year in college.</p>
<p>The idea was that the excitement of moving into a new home, apartment, or dorm was often muddled by the stress of having to shop for furniture. Usually, furniture shopping required taking detailed measurements of your home, then driving store to store, finding items that will fit in your space while also looking nice and matching, bringing the items all the way back home, and if it didn’t work out for whatever reason, taking it back to the store. Lather, rinse, repeat.</p>
<p>At the time, IKEA offered a free <a href="http://www.ikea.com/ms/en_US/rooms_ideas/splashplanners.html">virtual room planning software</a> to tackle this problem. We tried using it, and even with our engineering backgrounds, were completely at a loss. It required first creating a top-down 2D blueprint with manual dimensions of your rooms, which is not a trivial task. Another major problem was that the furniture catalog was limited to only IKEA’s products. After a lot of work, we finally got a render of what our room looked like according to IKEA’s software: apparently we had three chairs floating midair in the center of the room and a desk half way through the door. Yup, pretty accurate.</p>
<p>We wanted to simplify this process by using augmented reality to allow homeowners to easily create 3D panoramic models of each room that needed to be furnished. These models would be created from a simple automated tripod equipped with a camera and laser tape measure that could automatically create a 180° panorama of the room with the push of a button. The laser tape measure would calculate dimensions and perspective using a matrix imaging algorithm we came up with that was inspired by medical imaging techniques (at least in theory, we never got to test if our imaging method would actually work).</p>
<p>These models would then be uploaded to our online service, which would feature an extensive catalog of furniture from various manufacturers, already filtered to only show the ones that will fit in the user’s room. Users could easily drag-and-drop items into their room for an immediate visualization of how the room would look, even in different lighting conditions. The service would even feature an interior design community, where a professional designer could help you design your home for a small fee or an amateur designer could suggest designs to build his or her portfolio.</p>
<p><strong>Background</strong></p>
<p>We had submitted this idea to an entrepreneurship competition at Illinois Institute of Technology called the Idea Challenge. To our surprise, we won second place with a $100 prize and advanced to the Idea2Product MO-IL regional competition at Saint Louis University. As we prepared for the regionals, we talked to a handful of manufacturing companies in Chicago to see if they would consider listing their products in our catalog, and generally received a positive response (although this was probably because we were just students and they weren’t making an actual commitment). We also talked to a couple real estate firms to see if they would consider using our service to help their clients furnish new homes, and also received a generally positive response. We created hundreds of versions of our presentation, designed UI mockups, and wrote our first five-page product summary.</p>
<p><img src="/post_files/odorno/screenshot.jpg" alt="Odorno Screenshot" width="100%" /></p>
<p>After much stress and many sleepless nights, the day of the competition arrived. We nervously gave our presentation, and awaited the results. In the end, we won $250 but did not advance to the finals. Wondering how we could improve, we eagerly found our judge to receive feedback. We were shocked to hear a couple of racist and even sexist comments that I won’t detail here. Suffice it to say, we were quite angry, though, in hindsight, this incident is one of the most humorous experiences I’ve had as an entrepreneur, and was a definite learning moment for us.</p>
<p>As student entrepreneurs, we expect to receive our fair share of racism and ageism and other forms of discrimination. There will be ups and there will be downs, but that’s what makes the journey fun. The only thing that matters is how we deal with the downs, and we chose to keep pushing forward because the ups totally make it worth it. A few months later, we competed in Northwestern University’s Entrepreneurship Idol, where we reached the finals and lost due to a mistake on our part. We were just ecstatic to have successfully competed in such a high-level competition at such a relatively young age (I had just turned 19 a few weeks earlier), and we knew that we were going to make make something big together.</p>
<p>However, after much deliberation, we decided to shelve Odorno in favor of another idea we wanted to pursue for a few reasons:</p>
<ul>
<li>The housing market and overall economy was in the drain, leaving little room for a luxury service like our’s.</li>
<li>The technical expertise needed to build our hardware components was far beyond our skill level, meaning the product would be years away from a feasible launch. If it’s software or a web app, I can make it, but hardware is a different story.</li>
<li>Odorno’s success depended on building strong relationships with furniture manufacturers, an industry where we had zero experience.</li>
<li>Even if we had a working tripod and the furniture inventory, the capital needed to build the infrastructure for mass-producing those tripods as well as shipping them and the furniture would have been phenomenal.</li>
</ul>
<p>Having said that, I still think there is a future for Odorno.</p>
<p><strong>Going Forward</strong></p>
<p>We know that everything is moving towards augmented reality, and nowhere does this make more sense than in the home decor industry. Since shelving Odorno, we’ve seen various companies release concepts and even actual products that piece-by-piece come closer to our goals with Odorno. First, there was the <a href="http://www.slashgear.com/apple-tablet-video-leak-is-obviously-fake-but-we-still-want-it-1165828/">fake “Apple tablet” concept video</a> that showed how users would shop for furniture in the future. Then, UC Berkeley researchers showed off <a href="http://abclocal.go.com/kgo/story?section=news/drive_to_discover&id=7599245">a laser backpack that creates instant 3D models</a>, obviously a perfect fit for Odorno. There was also the <a href="http://www.crunchgear.com/2010/02/18/nooka-augmented-reality-accessorizer-not-real-but-it-should-be/">Nooka Augmented Reality Accessorizer</a> concept video, which showed a similar concept to Odorno applied to trying on watches from your home. And that’s just a small taste of the many companies working on solutions to this problem, but as far as I can tell, nobody has tried our approach. Of course, this may be because it is technically impossible right now, or simply because nobody has thought of it yet (hopefully the latter). Keep in mind that our idea is over three years old and was created long before the recent surge in augmented reality became popular, meaning there have probably been huge advances in the field that could be applied towards Odorno since we last researched it.</p>
<p>I’m finally releasing these documents and telling this story because in the past few weeks, we have decided to completely dedicate ourselves to our current project, Tabule. Just as it’s important to never give up on an idea you believe in, it’s also important to recognize when you are not capable of making an idea a success, at which point you should refocus on something that harnesses your strengths. That means that we will not be following up on Odorno, but I sincerely hope that somebody else will. I finally got a chance to write up this post, and hopefully somebody will stumble across it and find it inspirational. Given the large interest in this field and the size of the industry, somebody with the requisite know-how might just be able to turn this into a success where we couldn’t.</p>
<p>If somebody does find this idea interesting and wishes to take it up, feel free to email me at hey@neil.gg if you want to see our presentation slides or other details on the idea.</p>
<p><strong><a href="/post_files/odorno/summary.pdf">Read our product summary</a></strong>.</p>
How to Make Your Car's Navigation System Safer2011-01-28T00:00:00+00:00https://neil.gg/blog/how-to-make-your-cars-navigation-system-safer
<p class="meta">28 Jan 2011 - Chicago</p>
<p>Last night, I was watching The Colbert Report do a segment on Obama’s State of the Union address. During one part of the speech, Obama encouraged entrepreneurship as a cure to our current economic crisis, reminding us that America is responsible for putting cars in driveways and computers in offices. Colbert made a joke about how we then proceeded to put computers in cars, which put the cars in offices thanks to poor drivers distracted by their touchscreen navigation systems.</p>
<p>We hear stories all the time about people who drove their car into a ditch or into their garage door because they were looking at the screen instead of the road. Obviously, having a touch screen in the car is not good for safety. Some car manufacturers have tried to address this by preventing the screen from being used while the car is moving, but this is a huge annoyance for a passenger who should be allowed to freely use the screen.</p>
<p>In November, I competed in Lawrence Tech University’s Innovation Encounter, which is basically a product design competition where you are given a problem and you have three hours to design a solution and present it. In this particular competition, we were tasked with designing the best way to integrate an iPhone with the car.</p>
<p>My team and I decided to focus on improving the experience of using one’s phone in the car, rather than creating any new overt features. For example, it’s annoying to have to carry my keys everywhere when I already carry my phone, to have to plug my phone in every time I get in the car, and to switch between using my phone and using my car’s control system. We designed an elegant solution that would solve each of these problems.</p>
<p><strong>Lose the Keys</strong></p>
<p>Cars that start when the key is still in the driver’s pocket have become extremely popular lately. But why not make my smartphone the key itself? Assuming that our phones have NFC chips in them in the near future, replacing the physical key with a smartphone should be trivial.</p>
<p><strong>Juice Me Up</strong></p>
<p>Once I’m in the car, I don’t want to have to look for a USB cable and plug my phone in before I start driving. Usually, I just drop my phone in a cup holder and go. So why not inductively charge my phone through the cup holder? If inductive charging won’t work, why not at least make some sort of universal docking system for the cup holder that at least makes it easier to plug my phone in? Of course, these solutions would need to be waterproof so that it still functions as a cup holder.</p>
<p><strong>SmartHawk</strong></p>
<p>Finally, instead of switching back and forth between my phone’s interface and my car’s interface, why not just let my phone control my car and not require me to even fiddle with the car? The most common adjustments a driver makes when entering his car are to adjust the rear view mirror, fix the seat location, change the air conditioning temperature, input a location in the navigation system, and play some music. If we are using our phone as our key, then the car already knows which person is driving based on the phone that is in the driver’s seat, so it can automatically adjust the rear view mirror and seat location based on the user’s saved preferences. I’ve seen cars that support driver profiles, but none that automatically switch based on recognizing the driver’s phone. Usually, I adjust my car’s interior temperature when it is either extremely hot outside or extremely cold. That means that ideally, I want to set the temperature while I am still inside my house or office. I should be able to easily choose a temperature on my phone and push it to my car, which will enable the air conditioning so that the car is waiting for me at perfect temperature when I get there. While I’m setting the temperature, I want to be able to also push the directions I looked up on my phone’s built-in maps app to the car’s screen without fiddling with a second navigation system. Now, when I get into my car, everything is set up, the temperature is perfect, and the car already knows where I’m going. As soon as I enter the car, it should begin streaming my music from my phone via Bluetooth. We call this system SmartHawk.</p>
<p><img src="/post_files/smartHawk.png" alt="SmartHawk iPhone app" /></p>
<p>Now that’s the perfect in-car experience in my mind. Of course, we designed all of this in less than three hours, so some of these features may already exist and we just couldn’t find them or some of them may still be impossible for some reason I haven’t thought of yet. But from as far as I can tell, each of these features should be feasible, and the existing solutions seem to stop just one step short of such a seamless experience.</p>
<p><strong>Safety First</strong></p>
<p>But wait, what does this have to do with making the navigation system any safer? Well, for one, you no longer need to use the car’s screen because everything should be set up before you even get to the car. But just in case you are still tempted to do so, we designed a safety measure that we can’t figure out why nobody has implemented yet: we placed a proximity sensor on the left side of the in-car screen that would activate while the car is driving. If the driver tries to reach over to the screen, it will immediately shut off and prevent him from doing so thanks to the proximity sensor, but the passenger can still freely use the system from her side.</p>
<p>We ended up winning “Best Business Acumen” with a $500 cash prize, which is nice, but I’d like to see these features actually built into a car one day. Luckily, at the rate Ford Sync is improving, that may be sooner rather than later. When somebody does build this system, let me know and I’ll be the first in line to buy it.</p>
Core Compentency2011-01-28T00:00:00+00:00https://neil.gg/blog/core-competency
<p class="meta">28 Jan 2011 - Chicago</p>
<p>via <a href="http://wetzler.me/dropbox-syncplicity/">wetzler.me</a></p>
<blockquote>
<p>In the end, it really came down to one incredibly genius idea: Dropbox limited its feature set on purpose.</p>
</blockquote>
<p>Insightful post about why Dropbox beat out all the other competing backup solutions…</p>
<p>Keep it simple, stupid.</p>
<p>To be fair, most companies that complicate their feature set don’t do it because they enjoy writing more code and making complicated products. The reason focusing on your core competency is so difficult is that a simple product sounds boring on paper. It’s incredibly difficult to pitch to a VC or potential employee. Who wants to support a product that’s just going to sync one folder instead of your entire system? But it’s always the companies that manage to make it through that stage that succeed.</p>
<p>Personally, I prefer Apple’s approach with the iPhone: Make a dead simple and limited product, and then iteratively expand with what’s needed most.</p>
Site Redesign2011-01-27T00:00:00+00:00https://neil.gg/blog/site-redesign
<p class="meta">27 Jan 2011 - Chicago</p>
<p>Quick update: I’ve redesigned the Metamorphium site to give it more of
a focus on some of my photography, rather than a boring grey
background <a href="http://metamorphium.com/old">as before</a>. I’ve also decided
to just link to my Posterous blog itself rather than using the
Posterous API to show my blog within my own site without Posterous’s
branding. This was merely a decision of convenience, since I did not
want to deal with updating all of my code to use Posterous’s new API,
when I’d rather be working on Tabule.</p>
<p>There’s still a lot of changes that need to be made at the time of
this writing, and I will be rolling those out slowly over the coming
days. The biggest missing feature is still the complete lack of photo
gallery. I just haven’t had the time to build a nice gallery, so for
now, I’ve just dropped five or so pictures that caught my eye in my
Aperture library into the home page (click on the Metamorphium logo on
the homepage to randomly cycle through the pictures without
reloading).</p>
<p>More changes to come. Stay tuned.</p>
Quote - Hockey Players2011-01-27T00:00:00+00:00https://neil.gg/blog/quote-hockey-players
<p class="meta">27 Jan 2011 - Chicago</p>
<p>via <a href="http://37signals.com/svn/posts/2752-a-good-hockey-player-plays-where-the-puck">37signals.com</a></p>
<blockquote>
<p>A good hockey player plays where the puck is. A great hockey player plays where the puck is going to be.</p>
<p>-Wayne Gretzky (via advice from his father, Walter Gretzky)</p>
</blockquote>
<p>I love finding inspirational quotes like these in the middle of working.</p>
Lack of Appreciation for User Experience2011-01-21T00:00:00+00:00https://neil.gg/blog/lack-of-appreciation-for-user-experience
<p class="meta">21 Jan 2011 - Chicago</p>
<p>This is an old article, but I recently found it in my notes and
figured I’d post it here.</p>
<p>via <a href="http://37signals.com/svn/posts/2682-the-creators-of-no-longer-with-us-products-explain-what-went-wrong">37signals</a></p>
<blockquote>
<p>EventVue was always a vitamin instead of a pain killer. Conference organizers typically liked our product but none of them said they needed it. It didn’t make their lives easier, make them more money or cut any of their expenses — it was just ‘nice to have.’</p>
</blockquote>
<p>Not everything needs to be a pain killer. Sometimes people need vitamins too.</p>
<blockquote>
<p>We wrongly assumed that since we were obviously improving the conference experience, organizers would want to pay for it. One of our customers memorably said ‘If I wanted to improve the conference experience I would buy everyone steak dinners. I don’t care about the conference experience. I care about selling tickets. What can you do to help me do that?’</p>
</blockquote>
<p>This mentality that the user experience doesn’t matter unless it
solves some core pain is an unfortunate one for consumers, albeit
necessary for the company’s bottom line. I’d like to see more services
and companies that actually <em>care</em> about my experience, and actively
work towards improving it, even if it harms their bottom line a little
bit. Companies that show that kind of appreciation for their customers
earn their loyalty.</p>
Best Method for Testing Usability?2011-01-16T00:00:00+00:00https://neil.gg/blog/best-method-for-testing-usability
<p class="meta">16 Jan 2011 - Chicago</p>
<p>Comment from my Facebook news feed:</p>
<blockquote>
<p>haha… droids are to complicated to operate when drunk… id rather have my blackberry back for pictures IT WAS TOO EASY</p>
</blockquote>
<p>That must be the ultimate test in usability. If somebody can easily use your product while drunk, then you know it’s well designed. On the other hand, if they can’t even figure out how to save a picture, you should probably go back to the drawing board.</p>
Quote - Of Course2011-01-08T00:00:00+00:00https://neil.gg/blog/quote-of-course
<p class="meta">08 Jan 2011 - San Jose</p>
<p>via <a href="http://gigaom.com/2010/01/03/objectified-design/">GigaOm</a></p>
<blockquote>
<p>Most companies (including web startups), he said, are looking to “wow” with their products, when in reality what they should be looking for is an “‘of course’ reaction from their users.”</p>
</blockquote>
<p>Such a simple, deceptively obvious comment, but so incredibly
important for understanding the secret to good design.</p>
<p>This is another one of those quotes I’m going to carry with me for the
rest of my life. The entire article is full of great quotes, and is a
must read for anybody interested in product design.</p>
iPad in Education Report2011-01-08T00:00:00+00:00https://neil.gg/blog/ipad-in-education-report
<p class="meta">08 Jan 2011 - San Jose</p>
<p>via <a href="http://www.nd.edu/~cangst/NotreDame_iPad_Report_01-06-11.pdf">Notre Dame University</a></p>
<blockquote>
<p>In particular, we found it striking that on average, students feel the iPad; a) encourages exploration of additional course topics, b) helps manage time, c) provides new functions/tools, d) increases learning, and e) makes courses more interesting.</p>
</blockquote>
<p>This is the first formally published report for a term-long study on using iPads in classrooms, which were a phenomenal success apparently.</p>
Initial Thoughts on Mac App Store2011-01-07T00:00:00+00:00https://neil.gg/blog/initial-thoughts-on-mac-app-store
<p class="meta">07 Jan 2011 - San Jose</p>
<p>Apple finally released the Mac App Store yesterday, which will undoubtedly change how most people use their computers forever.</p>
<p>Like everybody else, my initial reaction after launching the App Store was to look quizzically at the new user interface. Tim Morgan <a href="http://riscfuture.tumblr.com/post/2626504717/app-store-twitter-ui-failures" target="_blank">details each change</a> in his interesting analysis of Apple's design decisions.</p>
<p>However, the inconsistent UI shouldn't surprise people anymore. Apple has a history of experimenting with different UI's in each of its products, such as the strange stoplight buttons in iTunes, the scroll bars in iPhoto, etc. Each time, it bugs me that Apple is breaking its own HIG, and for no clear benefit either. For better or worse, we are stuck with these inconsistent and unique interfaces, and should get used to third party apps following that trend as well. While I personally believe that ignoring the HIG is a bad idea, only time will tell how Apple's decision plays out. At least the App Store is still way better than the old way of installing apps: downloading individual DMGs.</p>
<p>As a side note, the only worthwhile apps in the App Store for me seem to be Apple's own apps. Being able to get Aperture for $80 (vs $200 before) or individual iWork apps for just $20 is awesome. If only companies like Adobe and Microsoft would join in, but that is unlikely to happen due to the 30% profit sharing with Apple.</p>
LG Promise2010-12-31T00:00:00+00:00https://neil.gg/blog/lg-promise
<p class="meta">31 Dec 2010 - San Jose</p>
<p>I was going through my old files recently, and came across a concept design I made in April for <a href="http://www.crowdspring.com/project/2283311_lg-design-the-future-competition/access/">LG’s Design the Future competition</a>, and figured I’d throw it up here just to document it.</p>
<p>The LG Promise is a concept phone that uses RFID technology to replace your physical wallet with a virtual, more secure wallet. It also features new interaction models, such as a proximity sensor that displays and hides the on-screen controls when the user’s hand approaches.</p>
<p><img src="/post_files/LGPromise.jpg" alt="LG Promise" width="100%" /></p>
Trunk Notes2010-11-30T00:00:00+00:00https://neil.gg/blog/trunk-notes
<p class="meta">30 Nov 2010 - Chicago</p>
<p>I've been meaning to try transitioning to a wiki for organizing my notes for many years now, after hearing so many recommendations for using them. I even got as far as setting up MediaWiki on my server, but the biggest challenge I faced was that it took too long to navigate to my wiki, log in, create a new page, add content, and then optionally link it with the rest of my wiki. It seemed so much easier to just email myself the note, since I always already have my email client open, and it's simple to edit one text box and hit send. Email has a low pain threshold, which is why it has managed to remain so popular, even in the face of so many newer, more advanced technologies. But even if I got used to leaving my wiki open all the time too, making it as accessible as my email on my computer, I hit another barrier when I realized that I spend most of my time and write most of my notes on my iPhone. However, editing a full fledged wiki site from the iPhone is definitely unpleasant, to put it gently. As a result, I avoided wikis for another few years and ignored peoples' constant urges that I should try them.</p>
<p>Recently, Trunk Notes for iOS garnered a lot of publicity on the usual tech blogs. I decided to try it, and after just one day of use, I have to say, I am loving it. Not only does the wiki structure lead to much more organized notes, but there is no additional pain threshold. Up until now, I had continued to use iOS's built-in Notes app, despite much more powerful note taking apps like Evernote. My only problem with Evernote is that it is slow. I still use it for organizing receipts and business cards, mostly due to its amazing OCR-based search, but I never used it for text notes. Usually, I want to quickly jot down a note, and the Notes app was always the fastest. Amazingly, Trunk Notes is actually faster than Notes!</p>
<p>Great speed, Markdown syntax, full wiki power, Dropbox syncing. What's not to love? Do yourself a favor, and if you haven't already, download Trunk Notes! It's just $4 for a universal app. I haven't had a chance to install it on my iPad yet, but it works great on my iPhone.</p>
Quote - Bootstrapping2010-11-20T00:00:00+00:00https://neil.gg/blog/quote-bootstrapping
<p class="meta">20 Nov 2010 - Chicago</p>
<p>via <a href="http://37signals.com/svn/posts/2636-the-things-you-do-more-often-are-the-things">37signals</a></p>
<blockquote>
<p>The things you do more often are the things you’re going to get good at. So if you get really good at spending money, you’re going to be really good at spending money. If you have to work on making money from day one, you’re going to get really damn good at making money. And that’s what you need to be as an entrepreneur…</p>
</blockquote>
<p>This logic applies to favoring bootstrapping over getting a large VC investment as well. By forcing yourself to be frugal early on, you get good at saving money. When you take a large VC investment, you get good at spending money.</p>
Quote - Product Releases2010-11-12T00:00:00+00:00https://neil.gg/blog/quote-product-releases
<p class="meta">12 Nov 2010 - Chicago</p>
<p>via <a href="http://37signals.com/svn/posts/2660-usage-is-like-oxygen-for-ideas-you-can-never">37signals</a></p>
<blockquote>
<p>Usage is like oxygen for ideas. You can never fully anticipate how an audience is going to react to something you’ve created until it’s out there. That means every moment you’re working on something without it being in the public it’s actually dying, deprived of the oxygen of the real world.</p>
<p>-Matt Mullenweg</p>
</blockquote>
<p>It can definitely be very intimidating when first releasing your product, since it’ll never feel perfect. Of course, as many entrepreneurs have said, if you aren’t embarrassed of version 1 of your software, then you waited too long. With that in mind, I am currently trying to convince myself to wrap up development and release my software.</p>
For Election Day2010-11-02T00:00:00+00:00https://neil.gg/blog/for-election-day
<p class="meta">02 Nov 2010 - Chicago</p>
<p><a href="http://whatthefuckhasobamadonesofar.com/">whatthefuckhasobamadonesofar.com</a></p>
Entrepreneurs Are All Screwed Up2010-10-31T00:00:00+00:00https://neil.gg/blog/entrepreneurs-are-all-screwed-up
<p class="meta">31 Oct 2010 - Chicago</p>
<p>via <a href="http://techcrunch.com/2010/10/31/are-you-a-pirate/">TechCrunch</a></p>
<blockquote>
<p>There are lots of things that I will probably never experience in this life. Military combat. Being dictator of a small central American country. Dunking a basketball. Being a famous rocks star. Or walking on the Mars.</p>
<p>But one thing I have been, and will always be, is an entrepreneur. And damnit that feels pretty good.</p>
</blockquote>
<p>Great read about why being an entrepreneur is so enjoyable, even when the risks are so high and the chance of success so low. It’s true that we gamble everything away, including personal relationships, just for the adventure. And while I have many regrets, this still isn’t one of them.</p>
Deprecating Java on Mac2010-10-24T00:00:00+00:00https://neil.gg/blog/deprecating-java-on-mac
<p class="meta">24 Oct 2010 - Chicago</p>
<p>via <a href="http://www.theregister.co.uk/2010/10/22/jobs_on_java_for_mac/">The Register</a></p>
<blockquote>
<p>In the beginning, Microsoft provided Java for Windows - but Sun took over when Microsoft violated their contract and made Java code written on Windows unable to run on other systems.</p>
</blockquote>
<p>This in an interesting article about the difficulties that Java faces on the Mac. The above quote simply made me laugh as it illustrates how Microsoft never changes its tricks.</p>
<p>But in all seriousness, I really am curious as to what Apple’s plans with Java are. I agree that many Java apps are a second-rate experience that probably should not be allowed in the App Store. But there are still many examples of amazing Java applications, such as Eclipse itself, that would greatly hurt Mac OS as a development platform if lost.</p>
<p>Java is the language of choice for most introductory programming courses in schools due to its relative simplicity. By deprecating Java support, Apple has made it clear that it is not a good idea to depend on Macs for working with Java. That means a Mac is no longer an option for many students and they will be forced to use Windows again. If a student learns on Windows, he or she is likely to keep using Windows through life after that. Apple’s large growth has, in part, been due to so many students adopting a Mac and then using those Macs even after graduating.</p>
<p>It shall be interesting to see what happens as they move forward with Lion.</p>
Quote - Group Think2010-10-23T00:00:00+00:00https://neil.gg/blog/quote-group-think
<p class="meta">23 Oct 2010 - Chicago</p>
<blockquote>
<p>You cannot make a man by standing a sheep on its hind-legs. But by standing a flock of sheep in that position you can make a crowd of men.</p>
<p>-Sir Max Beerbohm, Zuleika Dobson</p>
</blockquote>
<p>From my Social Psychology textbook.</p>
Lincoln Park Apple Store2010-10-23T00:00:00+00:00https://neil.gg/blog/lincoln-park-apple-store
<p class="meta">23 Oct 2010 - Chicago</p>
<p>It was an exciting day today at the Apple store opening. Aside from seeing Apple umbrellas and getting completely seduced by the new MacBook Air, I met Rahm Emanuel, Obama’s ex-Chief of Staff, in line at the opening. I can now add him to my list of famous people I’ve physically met, which I mentally began after meeting Hugh Jackman two years ago.</p>
Quote - 10 Reasons Why Gay Marriage is Wrong2010-10-11T00:00:00+00:00https://neil.gg/blog/quote-10-reasons-why-gay-marriage-is-wrong
<p class="meta">11 Oct 2010 - Chicago</p>
<p>via <a href="http://hannahnewwhen.tumblr.com/post/1205235533/because-if-i-reblog-a-photo-the-caption-doesnt-appear">hannahnewwhen.tumblr.com</a></p>
<blockquote>
<p>01) Being gay is not natural. Real Americans always reject unnatural things like eyeglasses, polyester, and air conditioning.</p>
<p>02) Gay marriage will encourage people to be gay, in the same way that hanging around tall people will make you tall.</p>
<p>03) Legalizing gay marriage will open the door to all kinds of crazy behavior. People may even wish to marry their pets because a dog has legal standing and can sign a marriage contract.</p>
<p>04) Straight marriage has been around a long time and hasn’t changed at all; women are still property, blacks still can’t marry whites, and divorce is still illegal.</p>
<p>05) Straight marriage will be less meaningful if gay marriage were allowed; the sanctity of Britany Spears’ 55-hour just-for-fun marriage would be destroyed.</p>
<p>06) Straight marriages are valid because they produce children. Gay couples, infertile couples, and old people shouldn’t be allowed to marry because our orphanages aren’t full yet, and the world needs more children.</p>
<p>07) Obviously gay parents will raise gay children, since straight parents only raise straight children.</p>
<p>08) Gay marriage is not supported by religion. In a theocracy like ours, the values of one religion are imposed on the entire country. That’s why we have only one religion in America.</p>
<p>09) Children can never succeed without a male and a female role model at home. That’s why we as a society expressly forbid single parents to raise children.</p>
<p>10) Gay marriage will change the foundation of society; we could never adapt to new social norms. Just like we haven’t adapted to cars, the service-sector economy, or longer life spans.</p>
</blockquote>
True Story2010-10-08T00:00:00+00:00https://neil.gg/blog/true-story
<p class="meta">08 Oct 2010 - Chicago</p>
<p><img src="/post_files/truestory.jpg" alt="" width="100%" /></p>
<p>Yes, I realize the comic is referring to Indian Institute of Technology, but I can definitely relate after three years at Illinois Institute of Technology.</p>
Quote - Success2010-10-06T00:00:00+00:00https://neil.gg/blog/quote-success
<p class="meta">06 Oct 2010 - Chicago</p>
<p>via <a href="http://blog.miazmatic.com/post/1255955685">BlogOfBenglert</a></p>
<blockquote>
<p>Success is fucking up on your own terms.</p>
<p>-Guillermo del Toro</p>
</blockquote>
The Value of an iPad is Emotional2010-10-02T00:00:00+00:00https://neil.gg/blog/the-value-of-an-ipad-is-emotional
<p class="meta">02 Oct 2010 - Chicago</p>
<p>via <a href="http://blogs.forbes.com/parmyolson/2010/10/01/why-an-ipad-is-like-your-pet-dog/">Forbes</a></p>
<blockquote>
<p>“Don’t throw away apps.” In 20 years, he explained, the iPhone app made for a movie like The Men Who Stare At Goats will be worth a lot of money. While the rest of the world is getting used to using tablet technology, Fry is making a date with his future antique dealer. Now that’s forward thinking.</p>
</blockquote>
<p>Stephen Fry compares the value of an iPad to a dog. It’s about emotional connection over function. At the end, he brings up an interesting question. Will apps appreciate in value in the future when they are replaced with newer apps and become unavailable, like certain music records are today? Will there be app collectors? Or will DRM prevent any of this from happening?</p>
How Campus Network Lost to Facebook2010-09-30T00:00:00+00:00https://neil.gg/blog/how-campus-network-lost-to-facebook
<p class="meta">30 Sep 2010 - Chicago</p>
<p>via <a href="http://www.slate.com/id/2269131/">Slate</a></p>
<blockquote>
<p>One does not discover new lands without consenting to lose sight of the shore for a very long time.</p>
</blockquote>
<p>The above quote is from Goldberg’s Facebook profile. Goldberg is the founder of Campus Network, a now extinct social network that was once Facebook’s biggest competitor. The story of why it lost is a great read and reminder of how important simplicity is in products. Rather than building a long bullet list of features, focus on a few core features and be the best at them. Then, iterate and improve over time.</p>
<p>For all the mistakes Zuckerberg is accused of making, he sure is a brilliant business man.</p>
Quote - iPad Changing Education2010-09-29T00:00:00+00:00https://neil.gg/blog/quote-ipad-changing-education
<p class="meta">29 Sep 2010 - Chicago</p>
<p>via <a href="http://speirs.org/blog/2010/9/29/the-invisible-computing-teacher.html">Fraser Speirs</a></p>
<blockquote>
<p>The thing is that, when you use an app on an iPad, the iPad becomes that thing. Maps makes the iPad a map. iBooks turns it into a book. Brushes turns it into a sketch pad. I feel that teachers aren’t looking for “new software that I can run on this computing device”, rather that they’re asking “can I make this iPad into something else useful for my teaching?”.</p>
</blockquote>
<p>The iPad has already revolutionized education in this one school. It’s only a matter of time before the rest of the schools catch up.</p>
Apple's Market Strategy2010-09-29T00:00:00+00:00https://neil.gg/blog/apples-market-strategy
<p class="meta">29 Sep 2010 - Chicago</p>
<p>via <a href="http://radar.oreilly.com/2010/09/apple-segmentation-strategy-an.html">O’Reilly Radar</a></p>
<blockquote>
<p>In this regard, Apple’s product strategy is a study in market segmentation. Versus merely trying to stuff a product, burrito-style, with as many different features as possible, they target specific user experiences, and build the product around that accordingly.</p>
</blockquote>
<p>Great article about the dangers of conventional wisdom.</p>
<p>Unfortunately, even customers today have grown up with this conventional wisdom and like to see a long bullet list of features, rather than focus on the experience. This problem is especially prevalent in enterprise where the people making the purchase are removed from the people using the product.</p>
Namesake2010-09-28T00:00:00+00:00https://neil.gg/blog/namesake
<p class="meta">28 Sep 2010 - Chicago</p>
<p>via <a href="http://www.nytimes.com/external/venturebeat/2010/09/27/27venturebeat-namesake-is-a-twitter-that-connects-job-hunt-94621.html">New York Times</a></p>
<blockquote>
<p>As the saying goes, it’s not what you know, but who you know - and a startup called Namesake plans to capitalize on that mentality by providing a social network that gives users a way to seek and promote job opportunities through the people they know - all in under 200 characters.</p>
</blockquote>
<p>Namesake is exactly what many early start ups need. My biggest problem right now is finding people I know who have the skill set that I need. This is much harder than I anticipated, and I have been dreaming of a service that helps me find people easier. As <a href="http://techcrunch.com/2010/09/27/namesake-is-the-match-com-for-professional-opportunities/">TechCrunch</a> puts it, Namesake is the Match.com for professional opportunities.</p>
<p>This service could really take off if they target universities where there is a lot of talent looking for ideas and a lot of ideas looking for talent.</p>
What's the Biggest Sign that Everything is Going Cloud?2010-09-23T00:00:00+00:00https://neil.gg/blog/whats-the-biggest-sign-that-everything-is-going-cloud
<p class="meta">23 Sep 2010 - Chicago</p>
<p><a href="http://www.engadget.com/2010/09/23/blockbuster-files-for-chapter-11/">Blockbuster files for Chapter 11 bankruptcy</a>.</p>
<p>It’s the end of an era… Blu-Ray really is <a href="http://www.tuaw.com/2010/09/22/microsoft-joins-apple-in-stance-against-blu-ray/">doomed</a>.</p>
Apple's Mobile Market Share vs Profit Share2010-09-22T00:00:00+00:00https://neil.gg/blog/apples-mobile-market-share-vs-profit-share
<p class="meta">22 Sep 2010 - Chicago</p>
<p>via <a href="http://tech.fortune.cnn.com/2010/09/21/pie-chart-apples-outrageous-share-of-the-mobile-industrys-profits/">CNN Money</a></p>
<blockquote><a rel="external nofollow" href="https://fortunebrainstormtech.files.wordpress.com/2010/09/screen-shot-2010-09-21-at-2-02-49-pm.png" target="new"><img class="size-full wp-image-37527" title="Screen shot 2010-09-21 at 2.02.49 PM" src="https://fortunebrainstormtech.files.wordpress.com/2010/09/screen-shot-2010-09-21-at-2-02-49-pm.png?w=380&h=546" alt="" width="380" height="546" /></a>
<p>Click to enlarge. Source: Canaccord Genuity and IDC</p>
</blockquote>
Innovative Entrepreneurs Create Innovation Through Entrepreneurship2010-09-21T00:00:00+00:00https://neil.gg/blog/innovative-entrepreneurs-create-innovation-through-entrepreneurship
<p class="meta">21 Sep 2010 - Chicago</p>
<p>I was at the House of Blues last night for the Chicago Innovation Awards nominee reception party, which celebrates Chicago’s most innovative companies. It was a fun night of free food and networking in an awesome environment. However, as my partner pointed out, after two years of entrepreneurship conferences, the words “entrepreneur” and “innovation” are far too overused. Can we please get some synonyms?</p>
<p>I was going to propose ‘innovatorship’ but turns out that’s actually <a href="http://www.girvan.org/?q=node/227">already in use</a>…</p>
Conquering Failure2010-09-21T00:00:00+00:00https://neil.gg/blog/conquering-failure
<p class="meta">21 Sep 2010 - Chicago</p>
<blockquote>
<p>A drenched man is not afraid of the rain.</p>
<p>-<a href="http://en.wikipedia.org/wiki/Anupam_Kher">Anupam Kher</a> at IIT</p>
</blockquote>
<p>Kher gave an extremely inspiring speech at IIT yesterday about learning from one’s failures and never letting our perceived weaknesses hurt us. He is a living example of the rags to riches cliché we see in movies.</p>
<p>His most significant lesson that he kept reiterating was to be honest, work hard, be yourself, and most importantly, be confident. The world will constantly try to put you down and focus on the weaknesses that you are afraid of. However, if you acknowledge your weaknesses (be honest), build your strengths (work hard), focus on exhibiting those strengths to the world (be yourself), and don’t be insecure about your weaknesses (be confident), then success is all but guaranteed. If your weaknesses, no matter how severe, don’t bother you, they can’t bother anybody else either.</p>
<p>One example he mentioned during Q&A really demonstrated this philosophy. In India, there are exit exams for 10th grade. If you fail, you must repeat that year before moving on. This is the most embarrassing thing for a student. One day in high school, Kher’s father treated him to an expensive lunch at an upscale restaurant. Coming from a poor family, this surprised him, but on his father’s insistence, he ate a full meal, wondering what the occasion was. At the end of the meal, he asked why he was being treated, and his father said, “You failed 10th grade.” Naturally, Kher wondered why that would result in a treat, to which his father replied, “I am celebrating your failure so that you are never afraid of failure again.”</p>
<p>Most people spend their whole lives never taking risks or not living up to their potential because they’re afraid of failing. It is this fear, not our lack of ability, that holds most of us back. But the best part about failing is that you’re already drenched, so there’s no reason not to keep trying again.</p>
<p>Got a crazy idea or dream? Try to achieve it. And if it doesn’t work, then work hard and try again.</p>
<p>In the Silicon Valley, failures are more readily encouraged. Many VC’s won’t even invest in a startup unless the founders have experienced at least one failure. While that is extreme, since it is entirely possible for people to be successful on their first attempt, it is refreshing to see failures considered acceptable and even encouraged in that region. This culture needs to spread to the rest of the world because when it does, we will likely see an explosion of innovation.</p>
<p>Over the years, I’ve picked up several inspirational quotes that I remember and use almost everyday. They range from common sayings, like “Where there’s a will, there’s a way” or “Ask and you shall receive,” to more specific ones, like “Innovators are always seen as crazy until they’re successful” or “It’s about the journey, not the destination.” I will be adding Kher’s quote to my list, and I hope you do too.</p>
Apple Finally Killed the Remote2010-09-18T00:00:00+00:00https://neil.gg/blog/apple-finally-killed-the-remote
<p class="meta">18 Sep 2010 - Chicago</p>
<p>via <a href="http://www.9to5mac.com/27015/airplay-is-apples-go-to-market-internet-tv-strategy">9to5mac</a></p>
<blockquote>
<p>That means you can watch most Internet video on AppleTV over AirPlay. The day AppleTV is released, you’ll be able to watch free SD clips of shows that appear on ComedyCentral.com like the Daily Show and Colbert Report via Airplay. You theoretially should be able to watch Hulu Plus so long as it is encoded in H.264 (and doesn’t get blocked once the networks figure out what Apple has done here).</p>
</blockquote>
<p>Ever since the first iPhone launched, I’ve been waiting for Apple to kill the remote with an integrated touch screen device. Apple has finally done it.</p>
<p>Google’s strategy is to turn your tv into a computer, and bring all the web’s content to the TV. Apple, on the other hand, wants to make the TV a dumb screen that waits for you to send it content, just like speakers wait for you to give them an audio source. By making that source your existing computer or iOS device, Apple has killed any need for an additional remote control. Instead, just use the device you’re already comfortable with, and easily push content to your TV. No extra device, no separate app, just the same exact environment you already use.</p>
Valuable Advice for Any CEO2010-09-16T00:00:00+00:00https://neil.gg/blog/valuable-advice-for-any-ceo
<p class="meta">16 Sep 2010 - Chicago</p>
<p>via <a href="http://bhorowitz.com/2010/04/28/why-we-prefer-founding-ceos/">ben’s blog</a></p>
<blockquote>
<p>Innovation is almost insane by definition: most people view any truly innovative idea as stupid, because if it was a good idea, somebody would have already done it. So, the innovator is guaranteed to have more natural initial detractors than followers.</p>
</blockquote>
<p>Ben is a partner in an investment firm, and he talks about lessons he’s learned as a prior CEO and as an investor. I highly recommend reading <a href="http://bhorowitz.com">ben’s blog</a> to any entrepreneur or CEO. It’s full of advice and lessons that are better learned from his mistakes, rather than making them again yourself.</p>
IE9 - Better, But Still Not There2010-09-15T00:00:00+00:00https://neil.gg/blog/ie9-better-but-still-not-there
<p class="meta">15 Sep 2010 - Chicago</p>
<p>via <a href="http://techcrunch.com/2010/09/15/ie9-sites-shine-tctv/">TechCrunch</a></p>
<blockquote>
<p>Microsoft is launching with a slew of partners from A to Z, including Amazon, CNN, and Jango, to tune their sites especially for IE9.</p>
</blockquote>
<p>If you have to tune a site for a specific browser, then something’s still wrong. When will IE stop holding the rest of the web back?</p>
A Radical ATM Redesign That's Actually Sexy2010-09-15T00:00:00+00:00https://neil.gg/blog/a-radical-atm-redesign-thats-actually-sexy
<p class="meta">15 Sep 2010 - Chicago</p>
<p>via <a href="http://vimeo.com/14939329">Vimeo</a></p>
<p>I'm glad somebody is finally focusing on ATM usability. Read more at <a href="http://www.futureselfservicebanking.com/">The Future of Self-Service Banking from IDEO</a>.</p>
Study Investigates Teaching with iPad Instead of Book2010-09-14T00:00:00+00:00https://neil.gg/blog/study-investigates-teaching-with-ipad-instead-of-book
<p class="meta">14 Sep 2010 - Chicago</p>
<p>via <a href="http://www.tuaw.com/2010/09/14/hmh-fuse-calfornia-tests-a-full-year-algebra-course-on-an-ipad/">TUAW</a></p>
<blockquote>
<p>One group is using the HMH Fuse app and a control group is using the standard text. As far as we know, this is the first time a full year subject matter course has been rolled out as an app. The study will be conducted by Empirical Educations Inc. an independent testing group, and will measure differences and similarities in areas of achievement and attitudes about learning. They also want to learn about how and if the students use the app the way it was intended.</p>
</blockquote>
<p>I am very interested to see the results of this study. This is the first iPad-related study I’ve seen that is actually collecting data in an experimental model with test and control groups.</p>
Observation - Transitioning Between a Laptop and iPad2010-09-14T00:00:00+00:00https://neil.gg/blog/observation-transitioning-between-a-laptop-and-ipad
<p class="meta">14 Sep 2010 - Chicago</p>
<p>Quickly transitioning from working on an iPad to working on a laptop really makes their respective strengths and weaknesses clearer. The iPad is sleek and convenient. It's perfect for browsing the web, emailing, and writing papers for students. The laptop is large, clunky, and hot. It has sharp edges that are painful to rest on, it requires more effort to type on in my opinion, and it blocks the user's view of the rest of the room.</p>
<p>This difference is especially important in a classroom. In most of my classes, students have a laptop screen between them and the instructor, creating a barrier between communication. In my humanities class, where there are mostly freshmen with iPads, this barrier is removed. This results in a higher rate of participation, as well as more visual feedback for the professor, as he or she can now see the students' faces.</p>
An Often Forgotten Benefit of iPads in Education2010-09-12T00:00:00+00:00https://neil.gg/blog/an-often-forgotten-benefit-of-ipads-in-education
<p class="meta">12 Sep 2010 - Chicago</p>
<p>via <a href="http://speirs.org/blog/2010/9/12/the-ipad-project-on-battery-life.html">Fraser Speirs</a></p>
<blockquote>
<p>Simply put: if your device doesn’t last for 10 real-world hours of use, your device is no longer competitive in education. I can’t imagine ever going back to using 4-hour devices like laptops on a regular basis.</p>
</blockquote>
<p>Strong words about the death of the laptop in education.</p>
Apple Finally Releases App Store Review Guidelines2010-09-09T00:00:00+00:00https://neil.gg/blog/apple-finally-releases-app-store-review-guidelines
<p class="meta">09 Sep 2010 - Chicago</p>
<p>via <a href="http://stadium.weblogsinc.com/engadget/files/app-store-guidelines.pdf">App Store Review Guidelines</a> (<a href="http://www.engadget.com/2010/09/09/apples-app-store-review-guidelines-we-dont-need-any-more-far/">Mirrored by Engadget</a>)</p>
<blockquote>
<p>4-3 Apps that use location-based APIs for dispatch, fleet management, or emergency services will be rejected</p>
</blockquote>
<p>The newly released <a href="http://developer.apple.com/appstore/guidelines.html">App Store Review Guidelines</a> are an interesting, humorous, and surprisingly blunt read. Lots of good tid bits.</p>
<p>However, the point quoted above stood out most to me.</p>
<p>Medical startups are extremely hot right now, especially those that take advantage of the power and mobility of iDevices. While it makes sense that Apple would want to distance itself from the legal headache of life and death situations, this is going to be disappointing to several medically-oriented startups.</p>
Why Psychology?2010-09-07T00:00:00+00:00https://neil.gg/blog/why-psychology
<p class="meta">07 Sep 2010 - Chicago</p>
<p>via <a href="http://techcrunch.com/2010/09/06/my-life-as-a-ceo/">TechCrunch</a></p>
<blockquote>
<p>It is such an under-discussed issue as we spend our time in startups mostly talking about products, marketing and fund raising. And business schools seem to also over emphasize the quantitative skills over the human ones. I guess the latter is harder to teach but I believe a bigger driver of success.</p>
<p>If you want to attract world class talent you have to be inspirational, persuasive and persistent (they best people always have other offers). If you want to retain the best talent you have to be able to devolve power, coach people for performance, resolve conflicts, find ways to create growth opportunities, balance carrot / stick motivational techniques, etc.</p>
</blockquote>
<p>People always wonder why I'm double majoring in Psychology, when I'm clearly a programmer and a businessman at heart.</p>
<p>I originally decided to study psychology because it would complement my Computer Science side. I wanted to use aspects of learning theory to make good interface designs. A good interface is just as important to a program's success as the code behind it, a fact that is unfortunately often overlooked by most programmers. In this regard, studying psychology has already helped me tremendously.</p>
<p>However, along the way, I realized that psychology has several uses in business and even day-to-day life.</p>
<p>Psychology is also useful in marketing. Knowing how people tend to think and respond let's you stay one step ahead. Do you want to use the foot-in-door phenomenon of attracting people by advertising low prices and then upselling, or use the door-in-face phenomenon of setting high prices and then offering a discount to reduce the price?</p>
<p>And psychology is good for managing people. Any HR specialist worth his salt will be properly trained in Industrial Organizational psychology, which focuses on hiring and managing people. I think that all CEO's should also be trained in it. Knowing good leadership techniques, how to motivate, and even how to properly fire somebody are crucial skills for any leader.</p>
<p>It is often said that a company's most important asset is its people. Well, good people can't be programmed, they have to be found and nurtured.</p>
<p>Most people think that psychology is only good for running therapist sessions. This couldn't be farther from the truth.</p>
Reaction to iPads in School2010-09-07T00:00:00+00:00https://neil.gg/blog/reaction-to-ipads-in-school
<p class="meta">07 Sep 2010 - Chicago</p>
<p>via <a href="http://speirs.org/blog/2010/9/6/the-ipad-project-bits-pieces-and-qa.html">Fraser Speirs</a></p>
<blockquote>
<p>Some questions or, should I say, assumptions commonly arise in these comment threads. I'd like to answer some:</p>
<ol>
<li>
<p>Did my taxes pay for this outrage?</p>
<p>Not one penny of it. We charge parents a fee and cover our costs that way. Incidentally, those fees come out of money that's already been taxed to pay for that child's state school place that's not being used.</p>
</li>
<li>
<p>Are you no longer teaching children to write?</p>
<p>No, kids are still learning to write. Consider, though, that a child starting school this year will not leave until 2023. Now think about how much you hand-write today and imagine how much less you'll be writing in 2023. I can't see handwriting retaining its privileged position forever.</p>
</li>
<li>
<p>Are you no longer reading books?</p>
<p>We're experimenting with eBooks and I'll report back on how that goes. I can guarantee you, though, that school pupils rarely value the "rich texture of paper". Most school books get printed on stock that looks more like a slightly stiffer sheet of Andrex than the weighty, luxuriant pages of a fine-art book.</p>
<p>Many printed materials for Scottish education are not availale in electronic form so, even if we wanted to eradicate the paper book, it will take some time.</p>
</li>
<li>
<p>Won't the children lack "proper" computer skills?</p>
<p>Define 'proper', 'computer' and 'skills'. Now define them as commonly understood in the year 2023, which is when a pupil starting today will leave school.</p>
<p>I've never taught to specific software packages and never will. Of course, we have to <em>use</em> actual real software, but there's a big difference between "teaching Excel" and "teaching spreadsheets". Don't forget we still have MacBooks and iMacs too.</p>
<p>This is a constant tension in educational technology: do you teach for the current "business environment" or do you teach for learning? I prefer the latter. I'm not doing this just to produce the next generation of cubicle fodder.</p>
<p>A child graduating our school this year started school when the Apple Pippin was still current. How can I possibly know what specific technologies will be used in their career? It's beyond absurd to even pose the question.</p>
</li>
<li>
<p>Aren't you experimenting with children's futures?</p>
<p>Yup, but that's nothing compared to the experiment that all of Scotland is engaged in with Curriculum for Excellence.</p>
<p>This might not work. In three years we might not renew our lease and we could easily go back to a situation where kids get an hour a week using computers. Does that sound like it will be a defensible idea in 2013? Not to me.</p>
</li>
</ol></blockquote>
<p>This is actually a tamer reaction than I saw to my university introducing an iPad program. Why so much resentment and jealousy to changes in technology?</p>
Textbook Rentals Market Growing? Why?2010-09-06T00:00:00+00:00https://neil.gg/blog/textbook-rentals-market-growing-why
<p class="meta">06 Sep 2010 - Chicago</p>
<p>via <a href="http://techcrunch.com/2010/09/01/textbook-rentals-go-into-hypergrowth-bookrenter-says-revenues-are-growing-725-percent/">TechCrunch</a></p>
<blockquote>
<p>College textbook rental startup <a href="http://www.bookrenter.com/">BookRenter</a> is also taking part in this growing market, reporting 725 percent growth in revenue from textbook rentals since last September. The company says that revenue is expected to be in the range of $20 to $50 million in 2010. Of course, this is still behind competitor Chegg, which is <a href="http://techcrunch.com/2010/06/05/teardown-chegg/">expected to see</a> revenues in the range of $130 million this year.</p>
<p>Like its competitors, Bookrenter wants to be the Netflix of textbook rentals. By renting textbooks, Students are able to save money by loaning textbooks for a fixed duration, usually a semester, and end up spending only the fraction of the cost of outright purchases.</p>
</blockquote>
<p>Textbook rentals make little sense at the moment because even a fraction of the cost of purchasing a new textbook is more expensive than buying a used book and re-selling it at the end of the semester. What we really need, is a subscription-based rental service, like a true Netflix for books, for book rentals to fully replace purchases. You would pay a monthly fee to rent x amount of books per month. Profit would be made by attracting large numbers of people and conquering the market instead of pulling large profit margins from a small number of people.</p>
<p>This model would work best for ebooks, which desperately need an affordable subscription model to replace traditional textbooks in schools. An even better service would allow schools to purchase campus-wide licenses to certain ebooks and then allow students access to the books associated to their enrolled classes from their iPads or other mobile devices.</p>
<p>I have experimented with replacing some of my textbooks with ebooks, and the experience has been amazing. Being able to easily search and annotate books, as well as carry my whole library in a small bag, has increased my productivity and study abilities tremendously. Unfortunately, the licensing terms required to make the above business model a success are probably too aggressive for traditional publishers.</p>
Android vs iOS - Who Will Win?2010-09-06T00:00:00+00:00https://neil.gg/blog/android-vs-ios-who-will-win
<p class="meta">06 Sep 2010 - Chicago</p>
<p>via <a href="http://techcrunch.com/2010/09/05/apple-android/">TechCrunch</a></p>
<blockquote>
<div>
<p><img title="22" src="https://tctechcrunch.files.wordpress.com/2010/09/223.png?w=300&h=253" alt="" width="300" height="253" /> <br /><br /></p>
<blockquote>
<p>Android has succeeded despite Google. In fact it’s safe to say that Android is successful for one primary reason. The iPhone is only available on AT&T. If the iPhone was on Verizon a year ago. Android would be no where near as popular.</p>
</blockquote>
<p>Obviously, Beach isn’t the first person to bring <a href="http://techcrunch.com/2010/06/28/iphone-4-sales/">this idea up</a>. But he brings it up in a way that he’s able to back-up his feelings from a developers’ perspective, while at the same time roping in what isn’t ideal from a consumer perspective about Android as well.</p>
</div>
</blockquote>
<p>Android will continue to grow and become the dominant mobile OS. However, not because it's the better OS. Instead, people will purchase Android phones for the same reason dumbphones have prevailed for so long: people like free phones, and Android phones will be significantly cheaper than iOS phones.</p>
<p>Although Android will capture the majority of the market, all of the money will be made from iOS phones since its customers will be more likely to spend money on apps than their Android counterparts. As a result, the good developers will flock to iOS as well. Android will become the budget phone of the future, and iOS will be the high-end phone of luxury. By market share, android will win. By revenue, iOS will win. But both will co-exist just fine.</p>
Site Redesign Progress2010-09-05T00:00:00+00:00https://neil.gg/blog/site-redesign-progress
<p class="meta">05 Sep 2010 - Chicago</p>
<p>To my surprise, this site came together rather quickly in the last 2 days. However, there is still much work left to be done, and I must currently shift my attention to another project for the moment. Therefore, in case you are browsing Metamorphium before I have a chance to update, please know that the following features are broken or missing:</p>
<ol>
<li>Blog RSS feed</li>
<li>Blog Search</li>
<li>Add picture galleries</li>
<li>Add video gallery (waiting for <a href="http://sublimevideo.net/">Sublime Video</a> player to release before implementing this one)</li>
</ol>
<p>While most of the work so far has been put into advancing the hash based URL system, there is still a lot left to be done to make it more robust and expandable. My next goal is to allow better ajax integration, rather than only loading inline HTML content, as it does now.</p>
Hello World2010-09-04T00:00:00+00:00https://neil.gg/blog/hello-world
<p class="meta">04 Sep 2010 - Chicago</p>
<p>Welcome to the totally revamped Metamorphium!</p>
<p>While designing this site from scratch, I realized that I was being limited by Wordpress and really didn't need 99% of its features. For my blogging needs, which are very modest, a simple custom designed blog made most sense. But rather than pour hours of work into making a whole new blogging platform, I realized that Posterous's solution was exactly the thing I needed. Since I spend most of my time mobile and live off of my iPhone, being able to email in my posts meant that I'm much more likely to maintain the blog. Even this post was typed on my iPhone.</p>
<p>In order to integrate Posterous with my new site design, I used their public API to pull my posts from their servers and display them on my site. This allows me to use Posterous for my backend without it ever showing in the front end.</p>
<p>You may have noticed that I do not have comments in my blog. This is because adding comments support seemed to cause more problems than it solved in several aspects. However, I still love to hear your feedback and questions, and will try my best to respond quickly. Head on over to my contact page to get my address.</p>
<p>While performing this move, I also realized I have little reason to keep using Twitter, so I have decided to stop tweeting and switch to Posterous for all my blogging needs.</p>
<p>We'll see how this experiment goes.</p>