tag:anthonys.svbtle.com,2014:/feedAnthony Sutardja2016-11-27T11:48:49-08:00Anthony Sutardjahttps://anthonys.svbtle.comanthony@sutardja.comSvbtle.comtag:anthonys.svbtle.com,2014:Post/snapbot-taming-demand2016-11-27T11:48:49-08:002016-11-27T11:48:49-08:00Taming demand<p>A few weeks ago, <a href="https://www.snap.com/en-US/">Snap Inc</a> (Snapchat) released their flashy Google-glass-esque sunglasses: <a href="https://www.spectacles.com/">Spectacles</a>.</p>
<p>Snap has chosen to distribute their glasses through a friendly-looking and <strong>very yellow</strong> vending machine called Snapbot. Every few days, a targeted Snapbot deployment stirs a frenzy among early-adopters to get in line for their chance in snagging a pair of Spectacles. Deployments show up sporadically like in the middle of Venice Beach, near the ocean cliffs of Big Sur, and even at a pop-up store in the heart of NYC.</p>
<p><img src="https://svbtleusercontent.com/gm84lhymdhwpqq_small.jpeg" alt="Photo collage of Snapbots from Twitter"></p>
<p>Many friends and colleagues have been hyped up on trying to get a pair, waking up in the early morning and checking the Spectacles map to see if a Snapbot would appear around their neighborhood.</p>
<p>Besides driving hype for this fun gadget, Snap has crafted a remarkable marketing and supply chain abstraction with Snapbot.</p>
<p>Snapbot is like middleware between demand and supply:</p>
<ol>
<li><p><strong>Snapbot helps boost actual demand.</strong> Turning the purchasing experience into almost <a href="https://www.inverse.com/article/23677-second-snapbot-pops-up-in-big-sur">an adventure</a> helps to generate interesting content. This unique experience coupled with the items’ scarcity drives, ultimately, a <u>darn good</u> story that easily garners “Likes” and clicks. It’s an organic and authentic advertising campaign that directly targets the millennial audience, who are constantly sharing their experiences on social media.</p></li>
<li><p><strong>Snapbot is the gatekeeper to actionable consumer demand.</strong> The controlled roll-out of a small batch of items every day keeps direct demand artificially low. Concerning supply chain constraints, this is a dream. Often, we see Kickstarter projects inundated with unhappy customer complaints regarding the <a href="http://money.cnn.com/2012/12/18/technology/innovation/kickstarter-ship-delay/">delay of a product shipment</a>. Securing the supply chain for a new product is challenging and often catches product launches by surprise. Suppliers and backup vendors can struggle to meet their obligations, production delays can push back shipment dates, and timely transportation can be costly to secure. Snapbot has effectively kept demand low, affording their supply chain processes to ramp up with ample time and to minimize the problems that plague many other hardware startups.</p></li>
</ol>
<p>Props to the Snap team for a brilliant roll-out strategy.</p>
tag:anthonys.svbtle.com,2014:Post/thoughts-on-reactjs2015-02-08T17:34:15-08:002015-02-08T17:34:15-08:00Thoughts on React.js<p>Last week, my <a href="http://inst.eecs.berkeley.edu/%7Ecs294-101/sp15/">cutting-edge web technologies class</a> had the luxury of being lectured by one of the core contributors to the <a href="http://facebook.github.io/react/">React.js</a> project: <a href="https://twitter.com/floydophone">Pete Hunt</a>.</p>
<h2 id="what-is-it_2">What is it? <a class="head_anchor" href="#what-is-it_2">#</a>
</h2>
<p>React is a JavaScript application framework that clearly abstracts user interface interactions by separating the rendering responsibilities that is powered by a virtual DOM diff. </p>
<p>Or as React’s website simply puts it:</p>
<blockquote class="short">
<p>A JavaScript library for building user interfaces</p>
</blockquote>
<p>React isn’t the first framework to simplify developing JavaScript web applications. That being said, Pete’s lecture gave us a fundamental understanding on the primary advantages of React’s design over the design of otherJavaScript application frameworks.</p>
<p>To understand why React is so fundamentally different from other frameworks, we have to understand the problems that arise when using other application frameworks. Most JavaScript application frameworks base their implementation off of Key Value Observables (KVO). Some common issues you might encounter with the KVO-based application frameworks include: </p>
<ol>
<li>There’s a lot of interleaving in the code. When tinkering in frameworks like <a href="http://emberjs.com/">Ember.js</a> and <a href="https://angularjs.org/">Angular.js</a>, you could find yourself breaking abstraction barriers and accessing properties of certain elements in order get the <em>correct</em> interaction you’d like to see in your user interface.</li>
<li>You’re unfortunately using string literals for accessors and directives. This has some poor implications on testing, especially in static type checking.</li>
<li>The overhead of KVO typically grows linearly with the amount of data you’re modeling. However, although most web applications will have a lot of data modeled, you’ll typically only render a few hundred elements in the view for the user to interact with. This could imply that KVO will waste resources on tracking stuff that doesn’t necessarily matter.</li>
</ol>
<p>Instead of keeping track of every single change as a chain of events, React uses the following model:</p>
<ol>
<li>React tracks snapshots of the entire DOM at a particular time</li>
<li>React renders the page in a virtual DOM</li>
<li>React takes the diff between the client’s DOM and the virtual DOM</li>
<li>React applies the changes to the elements that have changed</li>
</ol>
<h2 id="what-do-i-gain-if-i-use-react_2">What do I gain if I use React? <a class="head_anchor" href="#what-do-i-gain-if-i-use-react_2">#</a>
</h2>
<p>React helps you to <u>properly separate</u> UI responsibilities from controller logic. Often times when developing in KVO-based frameworks, it’s difficult to enforce these abstractions properly. You can find yourself mangling accessor interactions in the view, the model, and/or even the controller. React helps enforce an abstraction that <strong>prevents interleaving responsibilities.</strong></p>
<p>React’s proper abstraction enforcement not only simplifies the development process for better and more modular code, but also enables more <strong>robust testing.</strong> With other frameworks, testing can be difficult since accessors are often through string literals. In React, everything is JavaScript – which opens the door to static type checking.</p>
<p>Another fundamental advantage of React is that its data processing model scales well with large amounts of modeled data in a typical web application. The typical web application doesn’t display all it’s modeled data in the DOM; most commonly the top 10 or top 100 is presented in some interactive fashion. Traditional KVO-based frameworks have significant overhead while tracking changes (linear to the amount of data you have) and can have negative memory performance implications. This is especially detrimental to mobile devices which will simply crash if memory is over-utilized.</p>
<p>In contrast, the <strong>overhead required in maintaining UI interactions with React is linear to what’s being rendered in the DOM.</strong> React doesn’t do any book keeping to observe the data that it’s interacting with. Rather, the modeled data is just JavaScript, and the only book keeping is in re-rendering the changes in a virtual DOM (when triggered). Hence, if the application maintains some data models with million of entries, the overhead from React is still on the order of how many nodes are rendered in the DOM rather than on the order of how many items are present in our collection. This has huge implications on memory performance for typical web applications since the typical web application really doesn’t have that many nodes in the DOM.</p>
<h2 id="okay-but-what-do-i-lose_2">Okay, but what do I lose? <a class="head_anchor" href="#okay-but-what-do-i-lose_2">#</a>
</h2>
<p>React is a great framework to use for a typical web application with a ton of changing data and a subset of visualizations. That being said, React isn’t perfect for everything.</p>
<p><strong>React uses a lot more CPU to perform its diff between the virtual DOM and the current DOM.</strong> This has some major performance implications on realtime re-rendering of a lot of nodes in the DOM. If <em>a lot</em> of changes are happening in the DOM in rapid succession, the application will constantly be utilizing the CPU to perform these diffs – which could result in user interactions that aren’t as <em>smooth</em> as one would like.</p>
<p>The touted memory performance analysis of React, <strong>React’s overhead grows linearly with the size of your view</strong>, can also have negative performance implications on some unique use cases. In a web application that renders tons of nodes in the DOM, this would significantly cause the web application to at least double in memory usage to just perform a diff with the virtual DOM (since all the nodes need to be rendered in the virtual DOM).</p>
<p>An example of an application that would perform extremely poorly is an interactive visualization of large datasets in which all of the data needs to be represented multiple times in the DOM. Not only could realtime visual interactions be slowed down by the virtual DOM diffs, but also the memory requirements in rendering a virtual DOM for visualizing all the data could prove extremely costly in memory requirements for the application. Applications like this might be better off utilizing <a href="http://d3js.org/">D3.js</a> in organizing UI interactions.</p>
<h2 id="conclusions_2">Conclusions <a class="head_anchor" href="#conclusions_2">#</a>
</h2>
<p>Pete’s lecture on the benefits of React have really helped inform me on when I should be using React for a web application project. I haven’t done much programming with React, but I foresee it being my “go to” framework for many of the common web applications I’ll end up developing.</p>
<p><strong>Credits to Andrew Fang and Erica Yin on helping me write this post.</strong></p>
tag:anthonys.svbtle.com,2014:Post/charting-out-my-future2015-01-16T00:07:45-08:002015-01-16T00:07:45-08:00Charting out my future<p>I had to make some pretty big decisions for myself this past year, and those decisions weren’t easy to make. However, in the end, I’m happy with how the year has panned out.</p>
<h2 id="work-or-school_2">Work, or school? <a class="head_anchor" href="#work-or-school_2">#</a>
</h2>
<p>Choosing to come back to UC Berkeley for the Master of Engineering program wasn’t an easy decision for me. If you ask my friends and peers, I polled them non-stop on what I should do: continue my work with <a href="http://uber.com">Uber</a> or join my friends back at school.</p>
<p>Although listening to each one of my friend’s “what I would do” was interesting, ultimately I already knew the decision rested on my own shoulders. Asking the question and explaining the choices each time really nudged me to agree with what I subconsciously already knew: I wanted to go back to school.</p>
<p>Each option had their significant opportunities. Uber had an amazing pool of talented people to learn from (as well as enormous <a href="http://www.bloomberg.com/news/2014-11-26/uber-said-close-to-raising-funding-at-up-to-40b-value.html">financial opportunities</a>), but continuing school was an immaterial opportunity that I just couldn’t pass up. I wanted to really finish off my senior year of college “right” by spending time with my friends and taking the opportunity to learn more about topics that really interest me.</p>
<h2 id="wait-whats-after-school_2">Wait, what’s after school? <a class="head_anchor" href="#wait-whats-after-school_2">#</a>
</h2>
<p>Although my <em>personal</em> intent for coming back to school was quite clear, I realized on the first day of classes that I wasn’t sure what I was trying to get out of the graduate program <em>professionally</em>.</p>
<p>The motivations of many of students in the program (as well as many of my friends finishing their undergrad) was to find a full-time opportunity by the end of the Fall. However, I already passed up several opportunities that offered generous full-time starting positions at places that I loved working at. I thought the challenges were interesting, I admired the technical aptitude of many the people at these companies, and I believed that the products were true game-changers. So what was I looking for?</p>
<p>To be honest, I still don’t know. I love the thrill that comes with engineering thoughtful and creative solutions. At the internships I’ve worked, this thrill is greatest when I’m first diving into the codebase and learning how the products’ infrastructures work. However, this thrill fizzes after a few months when I think I have grasp over how to get things done. Even if I don’t know everything, I know who to ask to figure things out and the process becomes a routine. I fear that routines will eventually <a href="http://aeon.co/magazine/society/james-somers-web-developer-money/">become boring</a>.</p>
<p>I haven’t experienced being bored at any of my software engineering internships, but I tentatively foresee that I would eventually become bored after a year of working when things become routine. Maybe I’m overthinking it and I’m completely wrong – but it’s a fear that has dug it’s way into my thoughts on what I want to do post-graduation.</p>
<p>Boredom isn’t my only consideration for what I want to do after graduating. I also want to do something that not only challenges me, but also effectively utilizes every bit of me. When it comes to doing things, I like doing <strong>everything</strong>, and I don’t just mean “full-stack” engineer. This includes designing the graphical user interface, developing the traditional web full-stack, applying machine learning models, programming embedded micro-controllers, and dabbling into almost everything. I realize that a role that satisfies all these skills doesn’t really exist - but I’d like to maximize their appreciation somehow.</p>
<p>Weighing the options out there, I’ve made a self-commitment towards doing <strong>something</strong> with a startup. If I validate some of my ideas to be worthwhile, then I’ll take the plunge into making my own startup. If an opportunity with a startup whose mission I firmly believe in, then I’ll happily hop on for a ride. For me, the startup scene is really the only place where I’ll be encouraged to juggle everything to get things off the ground.</p>
<p>So startup world, I’m coming for you!</p>
tag:anthonys.svbtle.com,2014:Post/a-response-to-breeding-the-tech-elite2014-02-08T21:19:35-08:002014-02-08T21:19:35-08:00A Response to 'Breeding the tech elite'<p>Libby Rainey from The Daily Californian wrote a rather <a href="http://www.dailycal.org/2014/02/07/breeding-tech-elite/">opinionated article</a> about her “violent” experience with a Google-Glass-wearing student.</p>
<p>The author throws around generic stereotypes about EECS and CS students in order to question their aspirations and awareness of social responsibilities.</p>
<h2 id="that39s-not-journalism_2">That’s not journalism <a class="head_anchor" href="#that39s-not-journalism_2">#</a>
</h2>
<p>The bias in the article is somewhat uncalled for. In order to bring up the growing issues in gentrification, Libby attempts to connect unnecessary stereotypical descriptions about EECS and CS students with the possible lack of social awareness that these students may have.</p>
<p>There is no reason to point out the “disheveled” attire of an individual. If anything, Libby tries to tie judgement of looks with judgement of character. I wear sweats all the time and I love it. However, this doesn’t mean I haven’t given any thought towards what I want to do after I graduate.</p>
<p>Libby already decided upon what she wanted to write about and crafted her evidence to fit her narrowed view. Libby quotes Robert Reich as a segway into her main point about engineers being blissfully ignorant about the society they are within:</p>
<blockquote class="short">
<p>Innovative, fun, lucrative — it makes sense that a little shouting about gentrification takes a backseat to these exciting career prospects.</p>
</blockquote>
<p>This, if anything, seems to be the main point she makes. Opportunities overshadow social responsibilities and issues. It’s a topic definitely worth investigating, but Libby doesn’t even acknowledge the latter half of Reich’s quote that undermines her point:</p>
<blockquote class="short">
<p>Most young people I encounter still consider high tech glamorous, fun, lucrative and, for the most part, <strong>socially responsible</strong>.</p>
</blockquote><h2 id="yes-it39s-a-real-issue_2">Yes, it’s a real issue <a class="head_anchor" href="#yes-it39s-a-real-issue_2">#</a>
</h2>
<p>There is a real issue here; growing income inequalities between the tech industry and everything else is frightening. I’ve read the articles about how SF landlords are pushing rents higher to make room for tech workers with higher wages and how some technologies are making traditional jobs obsolete. I am aware of these issues and I do feel that discussion and action is needed.</p>
<p>That being said, the way to get this conversation started about social awareness shouldn’t be through extrapolating an engineer’s apathy towards society. Rather, why not ask the students about what they think their responsibility towards society is?</p>
<p>Some students may match Libby’s description of social apathy, but many don’t. What about the numerous <a href="http://www.calblueprint.org">campus groups</a> that are dedicated to code for non-profits? What about the teaching assistants and tutors that spend countless hours helping students learn their trade?</p>
<p>If Libby wants to investigate the social awareness of engineers, she should! But sweeping generalizations isn’t journalistic research.</p>
<h2 id="a-hrefhttpwwwyoutubecomwatchvfwnarrxaicso-cal_2">
<a href="http://www.youtube.com/watch?v=fWNaR-rxAic">So call me maybe</a> <a class="head_anchor" href="#a-hrefhttpwwwyoutubecomwatchvfwnarrxaicso-cal_2">#</a>
</h2>
<p>Lastly, a lack of response from a text doesn’t mean that someone is socially irresponsible. That being said, Libby: your article has <a href="https://www.facebook.com/groups/berkeleycs/permalink/599702173457993/">stirred up quite a commotion</a> and we’re listening to what you have to say now. Let’s have an actual in-depth discussion, rather than just assuming us engineers are mindless about our future plans.</p>