<?xml version="1.0" encoding="UTF-8"?>
<rss version='2.0' 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">
  <channel>
    <title>Matt Zabriskie</title>
    <description>Open source hacker. Community organizer. Co-organizer [@ReactRally](https://twitter.com/reactrally). Software Sommelier.</description>
    <link>http://www.mattzabriskie.com/feed</link>
    <atom:link href="http://www.mattzabriskie.com/feed" rel="self" type="application/rss+xml"/>
    <category domain="www.mattzabriskie.com">Content Management/Blog</category>
    <language>en-us</language>
      <pubDate>Sat, 06 Jan 2018 12:48:36 -0700</pubDate>
    <managingEditor>mzabriskie@gmail.com (Matt Zabriskie)</managingEditor>
      <item>
        <guid>http://www.mattzabriskie.com/blog/axios-help-wanted#36131</guid>
          <pubDate>Sat, 06 Jan 2018 12:48:36 -0700</pubDate>
        <link>http://www.mattzabriskie.com/blog/axios-help-wanted</link>
        <title>Axios: Help Wanted</title>
        <description></description>
        <content:encoded><![CDATA[<p><strong>tl;dr</strong> Help keep axios alive. Request to be a <a href="https://github.com/orgs/axios/people">collaborator</a> or join <a href="https://gitter.im/mzabriskie/axios">Gitter</a> to answer questions.</p>

<h2 id="a-short-history">A short history</h2>

<p>In the summer of 2014 I found myself disenchanted with Angular and set out to find an alternative. After playing around with Ember I remembered reading an article on <a href="http://instructure.github.io/blog/2013/12/17/facebook-react-vs-ember/">React vs. Ember</a> (go ahead and read the comments -- I was skeptical to say the least) and thought I&#39;d give React a try. It didn&#39;t take long before I fell in love with it.</p>
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Every now and then something so enthralling comes along that it keeps you up night after night. <a href="https://twitter.com/reactjs?ref_src=twsrc%5Etfw">@reactjs</a> has done that for me.</p>— 😸 matt zabriskie 🤖 (@mzabriskie) <a href="https://twitter.com/mzabriskie/status/499214802535727105?ref_src=twsrc%5Etfw">August 12, 2014</a></blockquote>

<p>The original React website made the claim that it was the V in MVC. This allowed it to be minimal and focus on it&#39;s strength as a view engine. While I prefer this approach to the &quot;one stop shop&quot; that is a framework it also left the need for things like <a href="https://github.com/ReactTraining/react-router">routing</a> and <a href="https://github.com/axios/axios">http</a> to be solved by the community.</p>

<p>One evening I was sitting in my hotel room while attending <a href="http://midwestjs.com/">MidwestJS</a> and decided that I&#39;d take a stab at an HTTP client for React. I quickly realized that React so easily consumed any third party library that I didn&#39;t even have to make it React specific. I borrowed the parts of <a href="https://docs.angularjs.org/api/ng/service/$http"><code>$http</code></a> that I liked from Angular and in a few short hours <a href="https://github.com/axios/axios"><code>axios</code></a> was born.</p>

<p>A lot has happened with axios over the last three and a half years. It has gone from being an HTTP client for React to being an HTTP client for JavaScript. It works in the browser and in node. It is popular among React and Vue developers. It is used by Amazon, Apple, and Google. It was downloaded <a href="https://npm-stat.com/charts.html?package=axios&from=2017-01-01&to=2017-12-31">22,122,652</a> times in 2017 and keeps trending more downloads month after month.</p>

<p>This all happened seemingly overnight. I wrote a library that I had a need for and the next thing I knew people were depending on it. Such is the tale of open source software.</p>

<h2 id="call-for-help">Call for help</h2>

<p>Here&#39;s the problem. I don&#39;t have time to maintain it. I have moved the project to it&#39;s own <a href="https://github.com/axios">organization</a>, made calls for help on Twitter, and added collaborators as people have expressed interest, but the response from the community has been underwhelming.</p>

<p>Here&#39;s where you come in. Based on download count I am guessing there are more than three of us that are using axios. Please help us keep this project alive!! If you use axios please reach out to myself or any of the other <a href="https://github.com/orgs/axios/people">project owners</a> and we&#39;ll add you to the project. If you don&#39;t feel comfortable dealing with the code directly, help triage <a href="https://github.com/axios/axios/issues">issues</a>, or jump into <a href="https://gitter.im/mzabriskie/axios">Gitter</a> and answer questions.</p>

<p>This is a community project and it depends on the community to survive.</p>

<h2 id="acknowledgements">Acknowledgements</h2>

<p>This project would have fizzled out long ago were it not for the tremendous work done by <a href="https://twitter.com/nickuraltsev">Nick Uraltsev</a> and <a href="https://twitter.com/RubenNorte">Rubén Norte</a>. If you ever see them around town or at a conference buy them a beer!</p>
]]></content:encoded>
      </item>
      <item>
        <guid>http://www.mattzabriskie.com/blog/communicate-your-efforts#27042</guid>
          <pubDate>Fri, 02 Sep 2016 14:36:56 -0600</pubDate>
        <link>http://www.mattzabriskie.com/blog/communicate-your-efforts</link>
        <title>Communicate Your Efforts</title>
        <description></description>
        <content:encoded><![CDATA[<p><strong>&quot;If a tree falls in a forest and no one is around to hear it, does it make a sound?&quot;</strong></p>

<p>An interesting question posed by philosophers. To begin, what is <em>sound</em>? According to Merriam-Webster:</p>

<blockquote>
<p>sound (noun): mechanical radiant energy that is transmitted by longitudinal pressure waves in a material medium (as air) and is the objective cause of hearing.<br>
<em>Source: <a href="http://www.merriam-webster.com/dictionary/sound">http://www.merriam-webster.com/dictionary/sound</a></em></p>
</blockquote>

<p>I propose that if a tree falls it &quot;[radiates] energy that is transmitted by longitudinal pressure waves in a material medium&quot;. The deeper question then is &quot;does the radiant energy being transmitted still qualify as sound if there isn&#39;t anyone or anything present to perceive that energy with their eardrums?&quot;.</p>

<p>Let&#39;s pose a different question. If you produce quality output at work but no one knows about it, is the effort futile?</p>

<p>If you are a top performer at work, but no one knows you are responsible for what is being produced at least the work is still getting done. On the other hand why put in so much effort if you don&#39;t personally gain from it? Is personal satisfaction reward enough?</p>

<p>What if we flip the question on it&#39;s head? If you are putting in your best effort, why doesn&#39;t anyone else know what you are doing?</p>

<h2 id="the-unsung-hero">The Unsung Hero</h2>

<p>Many years ago I was working on a project with a couple other developers at work establishing the architecture for an upcoming rewrite of our company&#39;s product. I was assigned to work on the front end, while my team mates tackled the back end. It was a very engaging assignment for me. I really enjoy this type of work and I found myself immersed in what we were doing.</p>

<p>It didn&#39;t take long before I started voluntarily staying late into the evenings, often until 2-3 AM, working on my part of the project. The late nights began to wear on me and as a result I was coming into the office later and later. For me the 9-6 shift evolved into the 11-3 shift. I wasn&#39;t worried about strolling into the office a few hours late because I was also staying nine to ten hours later than most people. In my mind I was killing it. I was going above and beyond (the name of an actual company award; more on that in a bit). I was putting in 15 hours a day (don&#39;t do this, it&#39;s unsustainable) working on something that I was very excited about and producing some pretty cool stuff.</p>

<p>What I didn&#39;t realize at the time was what the rest of my team&#39;s perception of me was. While I was off working in my silo, thinking I was a shoe in for the &quot;Above and Beyond&quot; award that month, the other developers on my team were frustrated with my apparent lackadaisical attitude. Communication was bad on both sides. I had little interaction with these developers prior to this project, so I didn&#39;t have any personal rapport with them. They never formally called me out, though their demeanor said a lot. On the other hand I never explained that I was staying hours after they left. I mean it was all recorded in the SVN logs. Why did I need to explain myself? I consistently had commits at all hours of the night. Didn&#39;t they ever look at the logs?</p>

<p>The short answer to that question is <strong>no</strong>.</p>

<p>If you don&#39;t communicate your efforts, don&#39;t expect anyone else to put in the effort to discover it for themselves. This isn&#39;t CSI. No one is trying to uncover the mystery, nor should they be.</p>

<p>I mentioned the &quot;Above and Beyond&quot; award our company had. Each department had someone who earned the award each month and it was based on peer nominations for people who went &quot;Above and Beyond&quot; the expectations for their role. So basically it was a popularity contest. Whoever had the most clout in their department would typically win it month after month.</p>

<p>This particular month I fully expected to win based on all the work I had been doing. Instead that month one of the other developers on my team won. He was praised for everything he had done on the project and for &quot;bringing it across the finish line&quot;. I was pissed. It wasn&#39;t anything personal against my team mate. I actually have a lot of respect for him. It was that I felt invisible. I was  unaware that everyone else was unaware of my efforts. In retrospect it was my own fault and it was a hard lesson to learn.</p>

<h2 id="sing-your-own-praises">Sing Your Own Praises</h2>

<p>A few years later I was working for the same employer and had an experience that starkly contrasted the previous one that I recounted.</p>

<p>Our product was a web application that on several screens had an activity feed of things that were happening in context to the data you were viewing. If you added a comment it would display the comment text with the author&#39;s avatar and a formatted timestamp. When the comment was first created the timestamp would say <strong>Just Now</strong>. After five minutes passed it would read <strong>Five minutes ago</strong>. You get the idea. The only problem was that it was static. The only way you would see the formatted timestamp change was if you refreshed the page, or navigated away and came back.</p>

<p>This became very apparent to me one day as I had entered a comment the previous day, left the tab open in my browser, and was returning to the same screen a day later. There in my activity feed it read <strong>Just Now</strong> even though it had been closer to <strong>Yesterday</strong>.</p>

<p>Part of me was embarrassed that our app was so static, but another part of me saw a challenge and took it upon myself to improve the product. To improve this experience in our activity feed I wrapped all the formatted timestamps in a <code>&lt;time/&gt;</code> element then created a <code>NaturalTime</code> plugin for our app. The plugin was pretty simple and looked something like this:</p>
<div class="highlight"><pre><span></span><span class="nx">setInterval</span><span class="p">(()</span> <span class="p">=&gt;</span> <span class="p">{</span>
  <span class="nb">document</span><span class="p">.</span><span class="nx">querySelectorAll</span><span class="p">(</span><span class="s1">&#39;time[data-naturaltime]&#39;</span><span class="p">).</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">el</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
    <span class="kd">let</span> <span class="nx">timestamp</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="p">(</span><span class="nx">el</span><span class="p">.</span><span class="nx">getAttribute</span><span class="p">(</span><span class="s1">&#39;data-timestamp&#39;</span><span class="p">),</span> <span class="mi">10</span><span class="p">)</span>
    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">isNaN</span><span class="p">(</span><span class="nx">timestamp</span><span class="p">))</span> <span class="p">{</span>
      <span class="kd">let</span> <span class="nx">formatted</span> <span class="o">=</span> <span class="nx">DateUtil</span><span class="p">.</span><span class="nx">formatNaturalTime</span><span class="p">(</span><span class="nx">timestamp</span><span class="p">)</span>
      <span class="kd">let</span> <span class="nx">text</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createTextNode</span><span class="p">(</span><span class="nx">formatted</span><span class="p">)</span>
      <span class="nx">el</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span>
      <span class="nx">el</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">text</span><span class="p">)</span>
    <span class="p">}</span>
  <span class="p">})</span>
<span class="p">},</span> <span class="mi">60000</span><span class="p">)</span>
</pre></div>
<p>The code itself didn&#39;t take very long to write. Including time to find and replace all the instances in our app where we were displaying a static formatted timestamp I invested about two hours of work. To make sure all the other engineers were aware of the change and to educate them on how it worked I sent out a quick email with a description of what changed along with some documentation.</p>

<p>In my mind it was no big deal. It was trivial code with a minimal time investment. The response however was huge. I had other engineers responding with kudos. The UX team thanked me for improving the usability. The VP of Engineering sent me a message saying &quot;I like seeing this type of innovation with the drive to make it happen&quot;.</p>

<p>What the hell just happened?!</p>

<p>I had put in <em>far</em> less effort than the previously described experience, yet here I was receiving accolades, when I was completely overlooked before. <strong>The difference was simply communication.</strong></p>

<p>I had done something and I let other people know that I had done it. It wasn&#39;t with the intent of bragging or showing off what I had accomplished. It was a simple message to keep the rest of the team informed.</p>

<h2 id="market-yourself">Market Yourself</h2>

<p>When a company comes up with a new product or service they have teams of people in charge of getting the word out and marketing to the world that they have produced something new and noteworthy.</p>

<p>As an individual contributor on a team it is unlikely that anyone else will market your efforts for you. It&#39;s up to you to market yourself and communicate to the rest of the organization that you have put in the effort and done the work and produced something useful.</p>

<p>Don&#39;t be the tree that falls in the forest, but collapses unheard in spite of it&#39;s grandeur.</p>

<p>You&#39;re putting in the effort. Make sure that you communicate it.</p>

<hr>

<p><em>Thanks to <a href="https://twitter.com/searls">Justin Searls</a> for his <a href="https://twitter.com/searls/status/771111724481146881">tweet</a> which inspired this post</em>.<br>
<em>Thanks to <a href="https://twitter.com/kentcdodds">Kent C. Dodds</a> for reviewing this post.</em></p>
]]></content:encoded>
      </item>
      <item>
        <guid>http://www.mattzabriskie.com/blog/how-jsconf-changed-my-life#20320</guid>
          <pubDate>Mon, 07 Dec 2015 11:34:12 -0700</pubDate>
        <link>http://www.mattzabriskie.com/blog/how-jsconf-changed-my-life</link>
        <title>How JSConf Changed My Life</title>
        <description></description>
        <content:encoded><![CDATA[<p>The first JSConf that I attended was in 2014. Tickets were sold out, but I managed to procure one from someone on Twitter that wasn&#39;t able to attend at the last minute. I had heard a lot of positive things about the conference but didn&#39;t realize how much attending would effect my life.</p>

<hr>

<p>On the first day of the conference I bumped into <a href="https://twitter.com/ryanflorence">Ryan Florence</a> in the elevator. Ryan and I are both from Salt Lake City, but our interactions were mostly limited to crossing paths at meetups. We had both brought our wives along to the conference and while Ryan and I were attending sessions at the conference our wives hit it off and they spent their days at the pool and exploring Fernandina. In the evenings the four of us went to dinner together. We became fast friends and still get together as often as occasion permits.</p>

<p>Ryan and I discovered that we had both been involved to one degree or another with the MooTools community. Though we had both moved on to Ember and Angular respectively, we both loved MooTools. This was when Ryan was just exploring React and he told me about this <a href="https://github.com/rackt/react-router">react-router</a> idea that he was tinkering with. I told him that I wasn&#39;t really loving Angular and felt that I wasn&#39;t writing JavaScript anymore. He suggested that if I had liked MooTools, I would love React. More on that later.</p>

<hr>

<p>One of the things that I love about JSConf&#39;s format is the hack day they have between the two days of talks. This provides an opportunity to explore hardware or other things that you may not have tried on your own. For my first JSConf I signed up for the <a href="http://www.nodecopter.com/">Nodecopters</a>. This was my first time programming something that effected the real world and it was exciting! After I returned home I ordered my own <a href="http://ardrone2.parrot.com/">Parrot AR.Drone</a>. I wrote a program that allowed me to control the drone with a gamepad and had a HUD in the browser. One thing that I found lacking was a module that would allow me access to the status of the drone from the browser. I wanted to show elevation, battery life, etc. This resulted in me creating <a href="https://github.com/mzabriskie/node-dronestatus">node-dronestatus</a>, my first npm module (I have since published <a href="https://www.npmjs.com/%7Emzabriskie">14</a> others).</p>

<hr>

<p>I took Ryan&#39;s advice and dug into React. After going through a <a href="https://facebook.github.io/react/docs/tutorial.html">60 minute tutorial</a> I was very intrigued. To get a bit more experience I built <a href="https://github.com/rackt/react-tabs">react-tabs</a> and <a href="https://github.com/mzabriskie/react-draggable">react-draggable</a>. By this point I was sold. I was already not loving Angular and now that I had a taste of React I was hungry for more. Ryan told me that the company he was working for was starting to use React and it was only a matter of time before he convinced me to quit my job and come work with him. I&#39;m still at the same job and getting paid to work from home making open source React components.</p>

<hr>

<p>One of the things I missed going to React from Angular was the $http service. You can roll your own <a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest">XHR</a> easy enough, but Angular&#39;s $http has some niceties about it, like <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promises</a>, interceptors, and transformers. From this longing for $http I ended up creating <a href="https://github.com/mzabriskie/axios">axios</a>, an HTTP client very similar to $http that works both in the browser and node. I wrote the first version of axios in my hotel room one night while attending <a href="http://www.midwestjs.com/">Midwest JS</a>, a member of the JSConf family.</p>

<hr>

<p>After working on React for a while I started talking with <a href="https://twitter.com/jergason">Jamison Dance</a> about creating a React conference called <a href="http://www.reactrally.com/">React Rally</a>. At the time there were no conferences focused on React, and we thought there would be a good market for it. Both of us ran meetups, but neither of us had done anything as ambitious as a conference. We brought <a href="https://twitter.com/josepheames">Joe Eames</a> on as an advisor to draw from his experience from organizing <a href="http://www.ng-conf.org/">ng-conf</a>. Shortly after we started planning our conference Facebook announced they would be holding <a href="http://conf.reactjs.com/">React.js Conf</a>. We decided to still go forth with our conference, but pushed our date back.</p>

<p>I attended JSConf 2015 during this time and incidentally Facebook was one of the sponsors. I was able to connect with some key people at Facebook that were involved with React that helped us with our event, and I met several people that ended up being speakers at React Rally.</p>

<p>I loved the experiences that I had at the two JSConfs that I had attended. I wanted to somehow bottle some of that and use it for React Rally. I constantly found myself asking &quot;WWJD?&quot; (What Would JSConf Do?). <a href="https://twitter.com/voodootikigod">Chris Williams</a> was kind enough to get on a conference call with me and Jamison to give us some pointers (thanks again for your time Chris!). Our event turned out be a great success with 250 attendees and 20 speakers. We are currently beginning planning for React Rally 2016.</p>

<hr>

<p>These are just a handful of things in my life that directly point back to JSConf. From friends that I&#39;ve made, to getting into contributing to open source, to my current day job, to organizing a conference myself, all of which is a result of Chris and Laura&#39;s incredible work organizing JSConf.</p>

<p>I am currently sitting in the lobby outside Sunrise Cafe at Omni Hotel. JSConf Last Call has ended and everyone has left to catch flights. I find myself full of mixed feelings as I reminisce. I have had so many amazing experiences, met so many wonderful people, and learned so many incredible things here at the last three JSConfs. I know many others have had similar, even more profound experiences than mine. A part of me is feeling very melancholy at the thought of this being the end. A larger part of me however is grateful for the journey thus far and I find hope in believing that this isn&#39;t really the end.</p>

<p>Chris and Laura the community that you have fostered is like family. We will weather this storm together as a family does. You have our love and support. I have no doubt that in time someone else will carry the torch in your stead. Know that we are all better developers and better people as a result of what you started. Thank you!</p>
]]></content:encoded>
      </item>
  </channel>
</rss>