Karl's Postsurn:uuid:38459f3d-77a2-3977-b636-aeac2305bbe22016-04-26T00:00:00ZKarl RosaenThe latest posts from karlrosaen.comLektor Atom PluginWhat Machine Learning Means for Product Developmenturn:uuid:fd1f0ba9-43b1-32ea-8723-a3dfbd58a16b2016-04-26T00:00:00ZKarl Rosaen<p>A successful new product delivers a compelling user experience for an unmet need. I think this is why there is such a natural marriage between technology and product development; as technology progresses it opens up feasibility of meeting previously unmet or poorly met needs. When something big happens, like the web, or the advent of pocket supercomputers aka smart phones, we all get to dream up ways these things can be leveraged to deliver value to users.</p>
<p>New technology is particularly exciting for entrepreneurs and underdogs. Established companies eventually get a lock on new markets. For example, it is increasingly difficult for a solo developer to build a profitable app, but when the iPhone and Android first launched, there was a window there where those who quickly saw ways smartphones could meet previously poorly met needs, like easily sharing photos or finding nearby places to eat, could make a killing.</p>
<aside class='pullquote'>
<blockquote>
<p>
What are things that still feel like busy work but you assume must still require humans? Maybe they don't!
</p>
</blockquote>
</aside><p>I think machine learning is increasingly becoming something that every product dreamer needs to be at least somewhat versed in, as it unlocks UX that would have previously seemed like magic. But the key is knowing what remains magic and what is actually possible, or near possible. So while having an interface that can take commands via text or voice is now a reality, it would still be too big a leap to say, "imagine a robot that can babysit my 2 year old", or at least for a small startup :)</p>
<p>Here are some areas that are thriving:</p>
<ul>
<li>Inferring structure from loosely specified natural input</li>
<li>Recommending things for you based on your interests (e.g amazon with products, netflix with movies)</li>
<li>Automating things that used to require human intervention; routine human like responses and interactions. What are things that still feel like busy work but you assume must still require humans? Maybe they don't! </li>
<li>A computer that can see, hear, understand more</li>
<li>Customization at scale</li>
</ul>
<p>To make this more concrete, here are some comparisons for new ideas that were successful years ago and ones that might have a better shot today. Note that the ideas on the left are not bad, just already have been done well and/or addressed by several companies.</p>
<table>
<tr>
<th>Before ML</th>
<th>After ML</th>
</tr>
<tr>
<td>Track customer relationships</td>
<td>Automate follow ups and replies for customer relationships</td>
</tr>
<tr>
<td>Simple UI for managing my photos into collections and albums</td>
<td>Automatically organize my photos and let me search by face, location, thing...</td>
</tr>
<tr>
<td>Crowd sourced recipe database</td>
<td>Tell me what to cook based on interests revealed in my Twitter and Instagram feeds</td>
</tr>
<tr>
<td>Easy to use website and app for tracking my finances and budgets</td>
<td>Analyze my expenses and tell me how my budget compares to other people with similar income, tell me the most effective way to save more money</td>
</tr>
<tr>
<td>Hot or not?</td>
<td>AmIHot?</td>
</tr>
<tr>
<td>iFart</td>
<td>Who Farted?</td>
</tr>
</table><p>Of course, new technology provides no guarantee that what you want to build will actually help people, and I'm guessing that ML aided smart flops will be as amusing as ever. But it's becoming realistic to imagine that new products will start to understand us and that they should require less work on our part to give us what we need.</p>
A Learning Sabbaticalurn:uuid:49253746-2f4a-35bf-a2c5-ddf9b0eea8732016-04-25T00:00:00ZKarl Rosaen<p>I recently left my job leading product and engineering at <a href="http://food52.com">a startup</a> and embarked on what I've come to call a "learning sabbatical" <a href="/ml/">focused on machine learning</a>.</p>
<p>I love learning and have certainly learned more about software engineering and product development since graduating years ago than during the program. In addition to getting practical experience, there's the continuous scanning of new technologies, nighttime readings, occasional dabbling, all of which has allowed me to stay relatively up to date with recent developments and to make reasonable decisions about technologies to introduce at work.</p>
<p>So I had a chance to learn plenty while at Food52: we learned React and brought it to bear on an internal CMS rewrite, applied Cascalog to build a batch processing system to continuously precompute per-user data that's expensive to query on the fly, and learned enough about Swift to feel comfortable committing to use it in a new app. Many of the principles I've absorbed by following the clojure community were instrumental in building a robust commerce system, albeit in ruby.</p>
<h3>Enter Machine Learning</h3>
<p>One of the things I've been into learning more about over the past few years is machine learning, going back to taking <a href="https://www.coursera.org/learn/machine-learning/">Andrew NG's course</a> when it was still hosted on Stanford's website, and perusing through <a href="/learning-sabbatical/(http://www.cs.cmu.edu/~tom/mlbook.html">various</a> <a href="http://www.amazon.com/Programming-Collective-Intelligence-Building-Applications/dp/0596529325">books</a> along the way. In the past year especially there's been an explosion in interest, press coverage and resources available to learn more about it too, even a book intended for a general audience, <a href="http://www.amazon.com/Master-Algorithm-Ultimate-Learning-Machine/dp/0465065708">The Master Algorithm</a>, which I highly recommend.</p>
<aside class='pullquote'>
<blockquote>
<p>
I've been getting an increasingly urgent sense that machine learning is going to have as big an impact on the world as (hand written) software itself.
</p>
</blockquote>
</aside><p>I think the hype around machine learning is well founded. Usually when we write software, we consider some desired transformation of data and figure out how to make that happen by hand, painstakingly, by writing code. That's still a big win because once you write the code, it can run a bazillion times and automate what would otherwise be a manual process of, say, producing a financial report about last month's orders, or rendering a web page personalized to a user every time they visit a website. With machine learning, you show a program some examples of what you want to happen and it figures out how to do that, and how to generalize to new examples.</p>
<p>For example, say we wish to extract box scores from a sports website and we notice that the data tends to appear in a particular place in each game summary page. We could hand write a program to scrape this information from each page, or we could use machine learning and train a model by showing it examples of pages and the box score data we wish to extract, and it could figure out how to do that automatically. And for certain applications, like recognizing faces in images, machine learning surpasses what humans can do by hand, no matter how hard we try.</p>
<p>Machine learning, when it can be applied effectively, automates the automation, in that it automates generating programs, than in turn automate some other mundane process. Sounds kind of important :) While this is a gross simplification of both software and machine learning, I've been getting an increasingly urgent sense that machine learning is going to have as big an impact on the world as (hand written) software itself, and will be at least a component of most software systems in the future.</p>
<h3>Not so easy</h3>
<p>Learning ML, however, has been harder for me than, say, picking up a new programming language, web framework or database management system. There are very approachable tutorials and books out there that can walk you through some interesting examples—classifying datasets, recognizing hand written digits from images and the like. But the deeper I dive the more confident I am that a mastery of fundamental principals of probability and statistics is key to applying machine learning with confidence. "I followed a tutorial and have a python / scikit-learn script to classify hand written digits" is the new, "I followed this ruby on rails tutorial and produced a twitter clone"—it's a good start, but a far cry from software engineering. And while <a href="https://twitter.com/krosaen/status/643760233077207040">I've tried</a> to bone up on statistics with regular bite-sized sessions, it is just, well, harder for me than the familiar world of software, and it's been ages since I took the one stats class in college.</p>
<aside class='pullquote'>
<blockquote>
<p>
Wouldn't it be great, I thought, if I could just have a few months to dive into this stuff and gain the mastery I need to really consider machine learning part of my toolkit, wherever that may lead?
</p>
</blockquote>
</aside><p>Combine the difficulty of diving into an unfamiliar field with an increasingly packed schedule leading a growing team at work and throw in a new baby at home, and I was left with a lot of chapter-1-and-done's and unfinished coursera courses.</p>
<p>Wouldn't it be great, I thought, if I could just have a few months to dive into this stuff and gain the mastery I need to really consider machine learning part of my toolkit, wherever that may lead? As the end of the year approached and I got some time off I had some head space to start considering a plan concretely. I even had some family encouragement:</p>
<p><img src="dad-encouragement.png" width="260"></p>
<p>(that's my dad after reading <a href="http://www.amazon.com/Master-Algorithm-Ultimate-Learning-Machine/dp/0465065708">The Master Algorithm</a>)</p>
<p>Thankfully one of the biggest obstacles was already met: savings. I'm very fortunate and won't pretend this is an option for everyone, but each time my pay has increased or I receive any sort of bonus or stock option payout, I'm careful to not immediately upgrade my life style (too much). This allowed for starting Real Time Farms years ago, and after a few more years working again, the tank had refilled enough that considering taking a few months off was again an option.</p>
<p>So we're good, just quit my job right? Well, what about the next job? Isn't looking for work while unemployed a much weaker position than from an existing one? But I didn't want a new job. I just wanted some time to learn. And I couldn't leap directly into a position requiring the machine learning expertise I didn't have.</p>
<aside class='pullquote'>
<blockquote>
<p>
Will employers holding the kind of jobs I'll ultimately seek take my "self study" seriously?
</p>
</blockquote>
</aside><p>What about credentials? Will employers holding the kind of jobs I'll ultimately seek take my "self study" seriously? Would I be better off going back to school? As for school, well, I already have a masters degree and I have a feeling that the coursework available at universities is no better for an already primed engineer than what's available for free online. There is just <em>so much</em> great material available, from books, to tutorials, to open source courseware with videos, problem sets, everything. I suspected that on balance, going back to school would be less focused on exactly what I wanted to learn. Plus, you can't beat the tuition prices of studying at home using free or inexpensive resources.</p>
<p>As for credentials, I'm not the <a href="http://datasciencemasters.org/">first</a> <a href="http://www.becomingadatascientist.com/">person</a> to try something like this, and while I'm sure some companies will only let proven machine learning researchers touch anything related to ML, I'm thankful that the field of technology is very meritocratic, and so long as I can actually gain expertise and skills during my studies, I'm reasonably confident there will be companies that will take a chance.</p>
<p>The final hurdle was the fear of disappointing my co-workers and hurting my company. I was advised by many not to worry too much about this (would a company think twice of leaving an employee if it felt it needed to?), but it was hard, particularly at a startup where every person holds what seems to be a vital role, and the bonds created are closer to college roommate level than professional acquaintances. Totally irrational (as it turns out) visions of everyone hating me kept me up at night. Nothing really fixed this, but coming up with a transition plan that I would have ready to propose, along with being prepared to give 2 months notice, helped.</p>
<h3>Making the leap</h3>
<p>After a few days of hand wringing, the decision finally stuck. I was going to leave my job, that was it. When the new year rolled in and I told the team, they were surprised but took the news in stride, and appreciated my willingness to spend several weeks helping transition. Nothing has exploded since I left so far as I can tell, though I can't guarantee there hasn't been or won't continue to be transition pain left at the hands of my friends there.</p>
<aside class='pullquote'>
<blockquote>
<p>
Some of my fears remain and won't be resolved until I'm back in the workforce.
</p>
</blockquote>
</aside><p>So here I am, a few weeks in. You can read more about my curriculum <a href="/ml">here</a> and follow along <a href="/ml/learning-log">here</a>. It's slightly embarrassing how elementary my studies are at this point, but between going on a 2 week vacation and getting this dang website setup, I've only had about 2 weeks of study so far and hope to have more to show soon.</p>
<p>Some of my fears remain and won't be resolved until I'm back in the workforce. It will be hard to keep focused and progress through the curriculum I have laid out and continue to hone, and it will be hard to know when to stop. But so far I am 100% happy that I've made this modest leap in my life and am enjoying learning full time again for the first time many years.</p>
<p>And what about you? Do you have a burning desire to take some time off and study a topic? I don't think it would be an entirely irrational plan. Just be sure to find an area of focus that really merits a deep dive. A few months of dabbling seems unlikely to lead to expertise deep enough to apply on the (new) job. Also: if you can, save your money. The difference between leasing a car and and driving an old beater (or no car at all) can add up to 3-4 months of living expenses over the course of a few years. Carving out time to spend gaining new expertise every few years may be the best investment you could possibly make.</p>