<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Dustin Diaz on Medium]]></title>
        <description><![CDATA[Stories by Dustin Diaz on Medium]]></description>
        <link>https://medium.com/@ded?source=rss-c3873010f294------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*XU9nMloGiMRShSrEfvnW2A.png</url>
            <title>Stories by Dustin Diaz on Medium</title>
            <link>https://medium.com/@ded?source=rss-c3873010f294------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 16 May 2026 17:23:33 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@ded/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Why I’m staying with Node]]></title>
            <link>https://medium.com/@ded/why-im-staying-with-node-e6fd3be62e34?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/e6fd3be62e34</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Fri, 04 Jul 2014 18:45:08 GMT</pubDate>
            <atom:updated>2014-07-11T00:01:49.177Z</atom:updated>
            <content:encoded><![CDATA[<p>First and foremost, a big hat-tip to T.J. for announcing his ground-breaking news and <a href="https://medium.com/code-adventures/farewell-node-js-4ba9e7f3e52b">farewell to Node.js</a> in favor of using Go. When someone fights with something long enough, they will move on, and in his situation, use the “right tool for the job”</p><p>That’s cool. And you <em>can’t not </em>respect that. Duder is awesome and smart.</p><p>As for me, I’m staying with Node.js. We still have a rough future ahead of us. But I bet on JavaScript a long time ago, and alas, like English — it’s everywhere.</p><p>The problems that T.J. points out with Node.js are very similar to the problems we have in English, metaphorically speaking of course. Error handling is natively error prone, callbacks are hard<em>er </em>than regular synchronous transactions, errors, errors, errors. We make grammar mistakes all the time in English, but for the most part, we all understand each other, and have known solutions to fix those mistakes.</p><p>Just for fun-sake, if JavaScript is English, then Go would be Hawaiian. Simple, small, effective, less error-prone, less well known, and on its own island. And for that matter, I guess that makes Java, German. I’ll stop.</p><p>Anyway, metaphors aside, and rather than tit for tat comparing the nooks and crannies of Go vs. Node — there are several other <em>good</em> reasons to continue using Node.js</p><h4>Web Applications</h4><p>With Node you can <em>literally</em> share your code between the front and back of a system. Website’s I’ve worked on such as <a href="http://change.org/">Change.org</a>, <a href="http://openlikes.com/">OpenLikes</a>, even the one you’re reading this article on share utilities, models, views, testing libraries, even routing logic because of Node. This of course leads to more DRY applications, a principle of programming that is highly desired for maintainable applications.</p><h4>Recruiting</h4><p>Due to the mass popularity of JavaScript, everyone knows it — at least a little. Hiring for Go — I wouldn’t even know where to start. And as an aside, this is a personal problem, but nevertheless, a problem I can avoid by simply sticking with Node. Node and Go are roughly the same age, but JavaScript is 19 and moved out of the house. Programmers who have known JavaScript for years with zero Node experience can quickly get acclimated without hassle</p><h3>Twitter / billwscott: 2 new hires this week (diff ...</h3><p>2 new hires this week (diff teams in my org), got acclimated to code base and checked in first commit in &lt; 4 hrs. In 2011 this took weeks.</p><h4>Right tool for the job</h4><p>Like all things, it depends. If it’s a complex intelligence algorithm that requires high concurrency — sure, something besides Node can be fine… as a service… that I can call from Node. As far as measuring concurrency and speed between Go and Node, it would the equivalent of comparing whether a <em>for</em> loop performs better going backwards or forward. These kind of microbenchmarks don’t appeal to me. When choosing a programming language or framework or library, always consider the ROI for your product and how effective you’ll be between your users, your team, and <em>yourself</em>.</p><h4>The Moral</h4><p>I don’t want this to be a very long retrospective — So, similar to TJ’s advice — there are lots of awesome solutions out there; pick one you will do well in and will ultimately make your users, company, and yourself <em>happy</em>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e6fd3be62e34" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[#newtwitter]]></title>
            <link>https://medium.com/@ded/newtwitter-19456768fa0f?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/19456768fa0f</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Thu, 29 Nov 2012 00:55:26 GMT</pubDate>
            <atom:updated>2012-11-29T00:58:59.188Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*b2yNsC1DryAsPgnQ.jpeg" /></figure><p>This is a story about a reconstruction project I worked on at Twitter Inc.</p><p>I like to think (to a degree) that this was an idea that myself, and a colleague of mine (<a href="http://twitter.com/vl">Vítor Lourenço</a>) came up with during the years’ end of 2009. The company (Twitter) asked all the employees to come up with an idea to be next years <em>big thing</em>. And so we came up with a list…</p><h3>The Backstory</h3><p>At the time (October 2009), I was working on a marginal feature of the website that allowed business accounts to allow other accounts to tweet on its behalf. Aka: multi-account switching. Lots of small-businesses wanted this, but it was terribly boring to work on. I was pairing with a <a href="http://pivotallabs.com/">Pivot</a> (all these guys are awesome) written in an application stack (Ruby on Rails) of which I barely understood. So to be honest, I did hardly any work for about three months (or at least it felt like it).</p><p>Simultaneously, Vitor was off designing… pretty much everything across Twitter, kind-of like being a Design fairy for anything that required something to look good. Nevermind that matter, we always remained friends and would chat together during lunches and breaks despite working on completely different projects.</p><p>Then… at the end of the year, we made up an ambitious project for 2010 just for kicks. In summary, we wanted to <em>rebuild Twitter.com.</em> In other words; <em>Get rid of everything and start over.</em> We even called it <strong>Phoenix </strong>(the bird of re-birth). Twitter loved bird names, so it seemed fitting. (Much) Later when the project actually occurred, the name Phoenix was chosen, but not because we thought of it. It was just a coincidence.</p><p>We went on to make a list on a piece of paper (God I wish we saved that) noting all the features it would have so that we could put it in the <em>idea box.</em> Yep, there was a real-life meat-space <em>idea box</em> with a slot to drop in your piece of paper for the execs to read. And as silly as it was, people did it.</p><p>Anyway, back to this piece of paper, having recently jumped ship (April 2009) from Google (Gmail) I knew there was a hundred things we could do better based on the existing (shit) website. Here is a rough recollection of what that list looked lit</p><p>- it should look like an app, not a website<br>- infinite scrolling</p><p>- keyboard shortcuts<br>- tweet from anywhere<br>- drafts<br>- autocomplete<br>- faster<br>- prettier<br>- photos!<br>- quicker access to all data (mentions, searches, lists, messages)</p><p>After we made this list, and I could be mistaken, I think we literally just left it on a random desk and never put it into the idea box. It seemed like such a pipe dream and it was too easy to get demotivated from the daunting task of <em>yet</em> <em>another company doing yet another redesign.</em></p><p>The year ended and I moved off my project, and was headed back to the web team in January to work on… maintenance.</p><h3>@Anywhere</h3><p>January came, and during some arbitrary work hour, in the hallway, COO <a href="http://twitter.com/dickc">Dick Costollo</a> pulls me aside and informs of this <em>thing</em> he wants me to build called <a href="https://dev.twitter.com/docs/anywhere/welcome">@anywhere</a>. Sounded cool. Big. Impactful. And JavaScript heavy. To familiarize folks who don’t know what this is. It was like Twitters version of the Facebook Connect Platform. Which took those (smart) dudes the better part of a year to build.</p><p>Ok. So…</p><p>I couldn’t work on it just myself. So I asked Platform Director <a href="http://twitter.com/rsarver">Ryan Sarver</a> if I can bring along my friend <a href="http://twitter.com/dsa">Russ D’Sa</a>, an extremely talented and dedicated Engineer. We hacked together on the project for maybe two weeks, throwing around ideas, making API prototypes for cross-domain communication through iframes.</p><p>We then learned from our product team that <em>Twitter wants to</em> <em>launch this in two months! </em>It was a solid <em>wtf </em>moment.</p><p>So we asked for another Engineer, <a href="http://twitter.com/danwrong">Dan Webb</a>, and we got him <em>and</em> <a href="http://twitter.com/todd">Todd Kloots</a>. Cool.</p><p>The next two months were insane. Our wives and girlfriends have since forgiven us, but we launched <em>on-time.</em></p><h3>Asynchronously</h3><p>Another project was on the rise known as <em>Galapagos. </em>It was a supposed effort to give Twitter a facelift. Nothing of a re-architecture, just some changes to HTML &amp; CSS. Our designers, <a href="http://twitter.com/stop">Doug Bowman</a>, <a href="http://twitter.com/zhanna">Zhanna Shamis</a>, and <a href="http://twitter.com/vl">Vitor</a> were all putting together mockups. but no one was building them.</p><h3>The Week Before</h3><p>After completing the @Anywhere project, we were left with a completely client-side API to all of Twitters <a href="https://dev.twitter.com/docs/api/1.1">resources</a>, including authentication.</p><p>Just to pontificate on this for a second, you know all those people that say “Twitter can’t be that hard to build. I can build Twitter in a weekend.” And of course, the proper Engineering response is, “No. No you can’t.” Like all software, problems are much harder at scale.</p><p>Well, we changed that, for JavaScript developers. Now, you <em>can </em>build Twitter in a weekend.</p><p>And that’s just what we did.</p><h3>The Demo</h3><p>Vitor and I put together this <em>Galapagos </em>mockup, and turned it into real-life, in a good course of a day. Then demo’d it to the entire company.</p><p>If I recall, I don’t actually remember much applause. Just awkward confusion. It sort of reminds me of the time my wife and I took our 1 year old son to a 3D movie for the first time. He just sort-of sat there, in shock. Nothing made any sense. And in the end, he was scared. So we had to leave the theater.</p><p>Luckily, <a href="http://twitter.com/ev">Ev</a> understood. So he pulled <a href="http://twitter.com/dsa">Russ</a> and I off the project, and asked us to lead the frontend effort for this new Phoenix Project.</p><h3>Phoenix</h3><p>Four months. Seven Engineers. Three Designers. Two researchers. One PM (<a href="/">Kevin Cheng</a>). And Ev. You can read about that <a href="http://engineering.twitter.com/2010/09/tech-behind-new-twittercom.html">here</a>.</p><p>We implemented all the things we talked about, including the ingenuity of adding embedded media (Ev’s idea). It was otherwise known as the D.P. (details pane) that featured white-listed content like YouTube videos, Flickr photos, Google Maps, Etsy items, etc.</p><h3>What did I learn?</h3><p>Nothing nobody hasn’t heard before. But it was good to experience them first hand. And in no particular order…</p><p>You can build anything you want if you are driven, dedicated, and smart <em>enough.</em></p><p>You’ll work faster, and better when you work on things you care about.</p><p>You will slouch, drag your feet, and work much slower when you’re forced into positions that aren’t right for you.</p><p>You will build a lot of shit, but it’s okay to ship it and iterate.</p><h3>The product</h3><p>It was much, much better. And people <em>loved</em> that. Even though it was the same product, it was much faster, and it gave our users much more power to use Twitter in a meaningful and useful way. And in most eyes, it was seen as one of the most successful redesigned / re-architected products this last decade. Why? People hate change. But for whatever reason, the people welcomed it with open arms. A few of us were even offered <a href="https://twitter.com/mgrooves/status/24885825356">sexual favors</a> from our users to get access to #newtwitter.</p><p>Thanks for listening.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=19456768fa0f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Eiffel Tower, Paris]]></title>
            <link>https://medium.com/@ded/the-eiffel-tower-paris-4a6393fe6853?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/4a6393fe6853</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Tue, 21 Aug 2012 19:51:45 GMT</pubDate>
            <atom:updated>2012-08-21T19:51:45.183Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*r4CA8MJCA5fRZXXX.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4a6393fe6853" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[I had this plaid carpet stroller]]></title>
            <link>https://medium.com/@ded/i-had-this-plaid-carpet-stroller-aa1258dd3bbd?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/aa1258dd3bbd</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Mon, 20 Aug 2012 01:05:53 GMT</pubDate>
            <atom:updated>2012-08-20T05:54:31.294Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*VaiGY6qfSYPu9vyo.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=aa1258dd3bbd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dan and Kristin celebrate an hour after the launch (photo by Dan Pupius)]]></title>
            <link>https://medium.com/launch-day/dan-and-kristin-celebrate-an-hour-after-the-launch-photo-by-dan-pupius-6dc28e657b86?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/6dc28e657b86</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Wed, 15 Aug 2012 00:25:29 GMT</pubDate>
            <atom:updated>2012-08-15T00:25:29.419Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*A9FLrjLwwuD98IfK.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6dc28e657b86" width="1" height="1" alt=""><hr><p><a href="https://medium.com/launch-day/dan-and-kristin-celebrate-an-hour-after-the-launch-photo-by-dan-pupius-6dc28e657b86">Dan and Kristin celebrate an hour after the launch (photo by Dan Pupius)</a> was originally published in <a href="https://medium.com/launch-day">Launch Day</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Jean attempts to reproduce a test-case (photo by Dan Pupius)]]></title>
            <link>https://medium.com/launch-day/jean-attempts-to-reproduce-a-test-case-photo-by-dan-pupius-81ca9ac93053?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/81ca9ac93053</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Wed, 15 Aug 2012 00:25:03 GMT</pubDate>
            <atom:updated>2012-08-15T00:25:03.373Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*BBG-gWZwwg7rSd3q.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=81ca9ac93053" width="1" height="1" alt=""><hr><p><a href="https://medium.com/launch-day/jean-attempts-to-reproduce-a-test-case-photo-by-dan-pupius-81ca9ac93053">Jean attempts to reproduce a test-case (photo by Dan Pupius)</a> was originally published in <a href="https://medium.com/launch-day">Launch Day</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Sho files another bug (photo by Dan Pupius)]]></title>
            <link>https://medium.com/launch-day/sho-files-another-bug-photo-by-dan-pupius-71f5856580c7?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/71f5856580c7</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Wed, 15 Aug 2012 00:23:51 GMT</pubDate>
            <atom:updated>2012-08-15T00:23:51.077Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*9LJtjVewop3jof-Z.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=71f5856580c7" width="1" height="1" alt=""><hr><p><a href="https://medium.com/launch-day/sho-files-another-bug-photo-by-dan-pupius-71f5856580c7">Sho files another bug (photo by Dan Pupius)</a> was originally published in <a href="https://medium.com/launch-day">Launch Day</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Decider makes a call (photo by Dan Pupius)]]></title>
            <link>https://medium.com/launch-day/the-decider-makes-a-call-photo-by-dan-pupius-43186f0a1202?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/43186f0a1202</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Wed, 15 Aug 2012 00:23:07 GMT</pubDate>
            <atom:updated>2012-08-15T00:23:07.688Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*kI7EYNiFi_6KH0_7.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=43186f0a1202" width="1" height="1" alt=""><hr><p><a href="https://medium.com/launch-day/the-decider-makes-a-call-photo-by-dan-pupius-43186f0a1202">The Decider makes a call (photo by Dan Pupius)</a> was originally published in <a href="https://medium.com/launch-day">Launch Day</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Team is heads down finding last minute bugs (photo by Dan Pupius)]]></title>
            <link>https://medium.com/launch-day/team-is-heads-down-finding-last-minute-bugs-photo-by-dan-pupius-82fe07a0665e?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/82fe07a0665e</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Wed, 15 Aug 2012 00:22:45 GMT</pubDate>
            <atom:updated>2012-08-15T00:22:45.982Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*Mq8I3ReABG4uT4E8.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=82fe07a0665e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/launch-day/team-is-heads-down-finding-last-minute-bugs-photo-by-dan-pupius-82fe07a0665e">Team is heads down finding last minute bugs (photo by Dan Pupius)</a> was originally published in <a href="https://medium.com/launch-day">Launch Day</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[It was said that Dan couldn’t laugh.]]></title>
            <link>https://medium.com/launch-day/it-was-said-that-dan-couldnt-laugh-297eeac8395a?source=rss-c3873010f294------2</link>
            <guid isPermaLink="false">https://medium.com/p/297eeac8395a</guid>
            <dc:creator><![CDATA[Dustin Diaz]]></dc:creator>
            <pubDate>Tue, 14 Aug 2012 23:59:58 GMT</pubDate>
            <atom:updated>2012-08-14T23:59:58.422Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/proxy/0*90aIn4rOhgUcQoj4.jpeg" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=297eeac8395a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/launch-day/it-was-said-that-dan-couldnt-laugh-297eeac8395a">It was said that Dan couldn’t laugh.</a> was originally published in <a href="https://medium.com/launch-day">Launch Day</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>