<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
  <title type="text">Wynn Netherland</title>
  <generator uri="http://nestacms.com">Nesta</generator>
  <id>tag:wynnnetherland.com,2009:/</id>
  
  <link href="http://wynnnetherland.com/" rel="alternate" />
  <subtitle type="text">Full stack web creative</subtitle>
  <updated>2013-04-15T08:14:06-05:00</updated>
  <author>
    <name>Wynn Netherland</name>
    <uri>http://wynnnetherland.com</uri>
    <email>wynn.netherland@gmail.com</email>
  </author>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/wynn" /><feedburner:info uri="wynn" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>wynn</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
    <title>Shipping and the art of Getting *Thing* Done</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/et6jnrv0CT0/shipping-getting-thing-done" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-04-15:/journal/shipping-getting-thing-done</id>
    <content type="html">
      &lt;p&gt;&lt;strong&gt;tldr;&lt;/strong&gt; &lt;em&gt;Bigger blocks of focused time results in &lt;a href="https://github.com/blog/category/ship"&gt;more ships&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;My career began in a cube farm over fifteen years ago. It seemed everyone at
that time had a Franklin Planner and could enumerate their &lt;a href="http://en.wikipedia.org/wiki/First_Things_First_(book)"&gt;big rocks&lt;/a&gt; for
the week on commmand. These were those high priority tasks that just had to get
done. The analogy held that if you were filling a jar, you'd put the big rocks
in before the smaller pebbles and sand.&lt;/p&gt;

&lt;p&gt;Some years later, as &lt;a href="http://en.wikipedia.org/wiki/Getting_Things_Done"&gt;&lt;em&gt;Getting Things Done&lt;/em&gt;&lt;/a&gt; reached near cult status, we
sought not only to prioritize tasks, but squeeze out every bit of productivity
from the rest of our schedules by assigning a &lt;code&gt;@context&lt;/code&gt; to all the pebbles and
sand. The thinking was, if you've got just five minutes before the next status
meeting, you check your pre-categorized task list to see what phone call,
email, or airline reservation you could get done.&lt;/p&gt;

&lt;p&gt;When applied within the constraints of typical corporate culture, both of these
philosophies aim to bring efficiency to a system under internal pressure from
excess meetings and a fixed workday.&lt;/p&gt;

&lt;h2&gt;Flex and defrag your schedule&lt;/h2&gt;

&lt;p&gt;It's well known that at GitHub we have few meetings. &lt;a href="http://tom.preston-werner.com/2010/10/18/optimize-for-happiness.html"&gt;Tom&lt;/a&gt; and
&lt;a href="http://www.codinghorror.com/blog/2012/02/meetings-where-work-goes-to-die.html"&gt;others&lt;/a&gt; have written about how meetings kill productivity. I saw one
of the best analogies for this just last week &lt;a href="https://twitter.com/katemats/status/322773552921186304"&gt;on Twitter&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;"a meeting is essentially a write lock for your organization" @&lt;a href="https://twitter.com/littleidea"&gt;littleidea&lt;/a&gt; love that analogy &lt;a href="https://twitter.com/search/%23hangops"&gt;#hangops&lt;/a&gt;&lt;/p&gt;&amp;mdash; kate matsudaira (@katemats) &lt;a href="https://twitter.com/katemats/status/322773552921186304"&gt;April 12, 2013&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;While much has been written about the death of productivity &lt;em&gt;in&lt;/em&gt; a meeting, we
often overlook what pressures fixed blocks of time put on the rest of our
schedules. It's not really even about meetings as much as it is about &lt;em&gt;all
fixed blocks of time.&lt;/em&gt; Meetings and appointments definitely qualify, but so do
fixed workday boundaries. I'm a morning person and will often start my workday
way earlier than my teammates. Some Hubbers are night owls and their workday
doesn't really get going until I'm headed to bed. A flexible work schedule
means each person can maximize their schedule for long uninterrupted blocks of
time.&lt;/p&gt;

&lt;p&gt;As my schedule fills up, what happens before each block of scheduled time? No
matter how good I get at multi-tasking, &lt;strong&gt;that important thing gets pushed out
because I don't have time to fully context shift and work on it effectively&lt;/strong&gt;
in the time available.  The more fixed items I have on my sechedule, the harder
it is to jump into a large task.&lt;/p&gt;

&lt;p&gt;Meetings especially have some rather insidious effects. &lt;strong&gt;For programmers,
not all time is created equal.&lt;/strong&gt; There's something about communicating with others,
especially verbally, that drains your mental energy. Have you ever paired with
another developer for an extended period of time? Compare your mental state
after a four hour solo hacking session to just two hours of pairing. If you're
like me, pairing is rewarding yet very draining.&lt;/p&gt;

&lt;p&gt;Meetings work the same way. That block of time &lt;em&gt;after&lt;/em&gt; the meeting isn't
prime time for getting much done. There's no way to avoid meetings and
appointments, but the less you have, the larger focused blocks of time you
have.&lt;/p&gt;

&lt;h2&gt;Real focus - what are you shipping &lt;em&gt;next?&lt;/em&gt;&lt;/h2&gt;

&lt;p&gt;Time pressures aren't the only thing that can fragment your schedule and impact
your productivity. Too many priorities lead to a divided mind and less ships.
Every month, someone from each GitHub team will create an issue along the lines
of &amp;quot;What do you want to ship in April?&amp;quot; along with a short list of their goals
for that month. Everyone from the team piles on with their lists so everyone
  gets a sense of what everyone else is doing.&lt;/p&gt;

&lt;p&gt;What makes GitHub culture unique from everywhere else I've worked, though, is
the emphasis on &lt;strong&gt;what are you shipping next?&lt;/strong&gt; Everyone has the
freedom to choose what they're working on inside the framework of the company's
goals. &lt;strong&gt;Everyone also has the freedom to work on that next thing until it's
done.&lt;/strong&gt;&lt;/p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=et6jnrv0CT0:BsGmUcPToP4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=et6jnrv0CT0:BsGmUcPToP4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=et6jnrv0CT0:BsGmUcPToP4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=et6jnrv0CT0:BsGmUcPToP4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=et6jnrv0CT0:BsGmUcPToP4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=et6jnrv0CT0:BsGmUcPToP4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/et6jnrv0CT0" height="1" width="1"/&gt;</content>
    <published>2013-04-15T08:14:06-05:00</published>
    <updated>2013-04-15T08:14:06-05:00</updated>
    <category term="/journal" />
  <feedburner:origLink>http://wynnnetherland.com/journal/shipping-getting-thing-done</feedburner:origLink></entry>
  <entry>
    <title>I don't know jack (yet)</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/NytiDLCOF7c/2013030301" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-03-03:/linked/2013030301</id>
    <content type="html">
      &lt;p&gt;My head is still spinning from &lt;a href="https://twitter.com/creationix"&gt;Tim Caswell's&lt;/a&gt; lightning talk at
&lt;a href="http://bigrubyconf.com"&gt;Big Ruby&lt;/a&gt; where he showed off &lt;a href="https://github.com/creationix/jack"&gt;jack&lt;/a&gt;, his new programming language. (I'll
post a link to the video when it's available. The gamepad-driven demo was
amazing.) The &lt;a href="https://github.com/creationix/jack/blob/master/samples/syntax.jk"&gt;simple yet powerful syntax&lt;/a&gt; looks like an excellent
starter language for new programmers. I'm intrigued especially at the function
syntax:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{arg1, arg2, arg3| body } is Function --&amp;gt; true&amp;#x000A;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I want to see how my seven-year-old picks up something like
this since she's shown interest in Ruby already.&lt;/p&gt;
      &lt;p&gt;&lt;a href="http://wynnnetherland.com/linked/2013030301/i-don-t-know-jack-yet"&gt;#&lt;/a&gt;&lt;p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=NytiDLCOF7c:LgUGnxgbqOw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=NytiDLCOF7c:LgUGnxgbqOw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=NytiDLCOF7c:LgUGnxgbqOw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=NytiDLCOF7c:LgUGnxgbqOw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=NytiDLCOF7c:LgUGnxgbqOw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=NytiDLCOF7c:LgUGnxgbqOw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/NytiDLCOF7c" height="1" width="1"/&gt;</content>
    <published>2013-03-03T13:18:25-06:00</published>
    <updated>2013-03-03T13:18:25-06:00</updated>
  <feedburner:origLink>http://wynnnetherland.com/linked/2013030301</feedburner:origLink></entry>
  <entry>
    <title>Hypermedia APIs - less hype, more media, please</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/YiS-Avfqiq8/hypermedia-apis-less-hype-more-media" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-03-01:/talks/hypermedia-apis-less-hype-more-media</id>
    <content type="html">
      &lt;p&gt;My slides from &lt;a href="http://bigrubyconf.com"&gt;Big Ruby&lt;/a&gt;: Hypermedia-driven APIs are all the rage, but
      what do they mean for API client developers? Are resilient APIs worth the
      performance and complexity tradeoffs?&lt;/p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=YiS-Avfqiq8:_fQcy5X7K4A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=YiS-Avfqiq8:_fQcy5X7K4A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=YiS-Avfqiq8:_fQcy5X7K4A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=YiS-Avfqiq8:_fQcy5X7K4A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=YiS-Avfqiq8:_fQcy5X7K4A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=YiS-Avfqiq8:_fQcy5X7K4A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/YiS-Avfqiq8" height="1" width="1"/&gt;</content>
    <published>2013-03-01T20:40:43-06:00</published>
    <updated>2013-03-01T20:40:43-06:00</updated>
    <category term="/talks" />
  <feedburner:origLink>http://wynnnetherland.com/talks/hypermedia-apis-less-hype-more-media</feedburner:origLink></entry>
  <entry>
    <title>How to get great support as a technical user</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/mWXrcamPF4s/how-to-get-great-support" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-02-14:/journal/how-to-get-great-support</id>
    <content type="html">
      &lt;p&gt;One of my favorite parts of working at GitHub is helping our Supportocats
answer support requests. Since I focus mainly on the &lt;a href="http://developer.github.com"&gt;GitHub API&lt;/a&gt;, I get
to work with our more technical users. I've shopped at BestBuy enough to know
what it's like when you think you know more than the staff.&lt;/p&gt;

&lt;p&gt;Nearly nine months of helping &lt;a href="https://twitter.com/technoweenie"&gt;technoweenie&lt;/a&gt; pursue Inbox 0 at the API Help
Desk has changed the way I &lt;em&gt;ask&lt;/em&gt; for tech support for other products and
services.&lt;/p&gt;

&lt;h2&gt;Use the right channel&lt;/h2&gt;

&lt;p&gt;In the software industry, many of us have friends who have founded or work on
some of our favorite services and tools. With those personal relationships, it
seems easier to shoot an @reply or DM on Twitter. For &lt;a href="https://status.github.com"&gt;site down&lt;/a&gt;
questions, that's often good enough, but 140 chars just isn't conducive to
describing (much less troubleshooting) most issues.&lt;/p&gt;

&lt;p&gt;For GitHub, &lt;a href="https://github.com/support"&gt;our support form&lt;/a&gt; makes it simple to reach out and say
&lt;em&gt;Halp!&lt;/em&gt; Sending an email to support@github.com works, too. Including &amp;quot;API&amp;quot; in
the subject line routes you straight to the API team.&lt;/p&gt;

&lt;p&gt;Many open source projects have mailing lists, issue trackers, and IRC
rooms to talk about issues. Find the right channel before you send a flurry of
questions to a project maintainer.&lt;/p&gt;

&lt;h2&gt;Get to the point&lt;/h2&gt;

&lt;p&gt;Once your request makes it to the top of the support queue, it has to
be grok'd by a human. Verbosity is your foe here. The more you write, the
longer it takes to distill your words into your actual issue. Not just once,
but each time your ticket is passed to someone else on the team, it has to be
reinterpreted.&lt;/p&gt;

&lt;h2&gt;Include details&lt;/h2&gt;

&lt;p&gt;Your chances of getting speedy help go up substantially if you can avoid that
dreaded &amp;quot;more info please&amp;quot; follow up. Photos, screenshots, URLs, stack traces,
and other facts help speed up &lt;a href="http://plasmasturm.org/log/6debug/"&gt;the six stages of debugging&lt;/a&gt;. If you're
calling a HTTP API, the developer has a hard time refuting &lt;code&gt;curl&lt;/code&gt; output.&lt;/p&gt;

&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;`curl -v` or it didn’t happen.&lt;/p&gt;&amp;mdash;
Wynn Netherland(@pengwynn) &lt;a
href="https://twitter.com/pengwynn/status/281151555158278145"&gt;December 18,
2012&lt;/a&gt;&lt;/blockquote&gt;

&lt;h2&gt;Don't piggyback issues&lt;/h2&gt;

&lt;p&gt;Many request tools thread messages by subject or ticket number. You might be
tempted to reply to that six month old email because the person who helped you
last time seemed to know what they were talking about. Unless the issue is
directly related, chances are you're delaying your new ticket because there's
more previous conversation to wade through on the other end.&lt;/p&gt;

&lt;h2&gt;Don't be insecure&lt;/h2&gt;

&lt;p&gt;Most support queues use plain old unencrypted email. Please, please, please
&lt;em&gt;never send passwords, API tokens, credit cards, or other sensitive information
in email&lt;/em&gt;. Always mask or omit sensitive info in email. Be sure to scrub that
stack trace or log snippet you're including, too.&lt;/p&gt;

&lt;h2&gt;Be classy&lt;/h2&gt;

&lt;p&gt;You might have justified rage because a certain feature has been long broken
and no one seems to care. Just don't let frustration undermine your own cause.
Name calling and insults might make you feel better in the moment but it won't
bring you any relief. Most support folks are extremely professional. They like
to help or they wouldn't do what they do.&lt;/p&gt;

&lt;p&gt;That said, humans are more inclined to help when they're treated like, well, humans.&lt;/p&gt;

&lt;p&gt;Oh yeah, &lt;a href="https://jobs.github.com/companies/GitHub"&gt;we're hiring Supportocats&lt;/a&gt;.&lt;/p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=mWXrcamPF4s:TnT1DnqKa_o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=mWXrcamPF4s:TnT1DnqKa_o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=mWXrcamPF4s:TnT1DnqKa_o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=mWXrcamPF4s:TnT1DnqKa_o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=mWXrcamPF4s:TnT1DnqKa_o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=mWXrcamPF4s:TnT1DnqKa_o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/mWXrcamPF4s" height="1" width="1"/&gt;</content>
    <published>2013-02-14T09:32:32-06:00</published>
    <updated>2013-02-14T09:32:32-06:00</updated>
    <category term="/journal" />
  <feedburner:origLink>http://wynnnetherland.com/journal/how-to-get-great-support</feedburner:origLink></entry>
  <entry>
    <title>Project badges: ease or sleaze?</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/IlfN5iD9G3U/project-badges-ease-or-sleaze" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-02-12:/journal/project-badges-ease-or-sleaze</id>
    <content type="html">
      &lt;p&gt;Erik and Mislav have an &lt;a href="https://github.com/lostisland/faraday/commit/ac1b537f49bf110e87fe50679d80764367fb2d13"&gt;interesting discussion&lt;/a&gt; going on a Faraday
      commit on the merits of those badges in GitHub repository READMEs.&lt;/p&gt;
      
      &lt;p&gt;I use them in a few of my projects, but lack of consistent size and Retina
      support have me leaning towards removing them.&lt;/p&gt;
      
      &lt;p&gt;&lt;img src="http://cl.ly/image/201G3h313W2X/Screen%20Shot%202013-02-12%20at%2012.56.38%20PM.png" alt="Project badge screenshot"&gt;
      &lt;/p&gt;
      
      &lt;p&gt;What's your take? Ease or &lt;a href="http://informationarchitects.net/blog/sweep-the-sleaze/"&gt;sleaze&lt;/a&gt;?&lt;/p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=IlfN5iD9G3U:TLKFoa3esmA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=IlfN5iD9G3U:TLKFoa3esmA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=IlfN5iD9G3U:TLKFoa3esmA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=IlfN5iD9G3U:TLKFoa3esmA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=IlfN5iD9G3U:TLKFoa3esmA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=IlfN5iD9G3U:TLKFoa3esmA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/IlfN5iD9G3U" height="1" width="1"/&gt;</content>
    <published>2013-02-12T12:54:18-06:00</published>
    <updated>2013-02-12T12:54:18-06:00</updated>
    <category term="/journal" />
  <feedburner:origLink>http://wynnnetherland.com/journal/project-badges-ease-or-sleaze</feedburner:origLink></entry>
  <entry>
    <title>Rdio-cli does lyrics</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/b5E-xHPX2BQ/2013013101" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-01-31:/linked/2013013101</id>
    <content type="html">
      &lt;p&gt;In another &lt;a href="http://wynnnetherland.com/journal/dotfiles-discovery"&gt;dotfile discovery&lt;/a&gt;, I ran across &lt;a href="http://makeitpersonal.co"&gt;makeitpersonal&lt;/a&gt; in
&lt;a href="https://github.com/sapegin/dotfiles/commit/e3bddfe05fd2d72ddf1f57697a87df21db5cc49a#diff-2"&gt;Artem's dots&lt;/a&gt;. makeitpersonal makes it easy to &lt;a href="https://github.com/febuiles/makeitpersonal#lyric-fetching-service"&gt;fetch lyrics&lt;/a&gt; in plain
text using curl. Naturally, I didn't waste time adding this to &lt;a href="https://github.com/pengwynn/rdio-cli"&gt;rdio-cli&lt;/a&gt;. By
default, it looks up the current track, but you can override artist or song title,
the former being quite useful for covers.&lt;/p&gt;

&lt;pre class='plain'&gt;&amp;#x000A;$ rdio current&amp;#x000A;Now playing: That Old Time Feeling / Rodney Crowell / This One's for Him: A&amp;#x000A;Tribute to Guy Clark&amp;#x000A;&amp;#x000A;$ rdio lyrics&amp;#x000A;Sorry, We don't have lyrics for this song yet.&amp;#x000A;&amp;#x000A;$ rdio lyrics --artist="Guy Clark"&amp;#x000A;&amp;#x000A;And that old time feeling goes sneakin' down the hall&amp;#x000A;Like an old gray cat in winter, keepin' close to the wall&amp;#x000A;And that old time feeling comes stumblin' up the street&amp;#x000A;Like an old salesman kickin' the papers from his feet&amp;#x000A;&amp;#x000A;And that old time feeling draws circles around the block&amp;#x000A;Like old women with no children, holdin' hands with the clock&amp;#x000A;And that old time feeling falls on its face in the park&amp;#x000A;Like an old wino prayin' he can make it till it's dark&amp;#x000A;&amp;#x000A;And that old time feeling comes and goes in the rain&amp;#x000A;Like an old man with his checkers, dyin' to find a game&amp;#x000A;And that old time feeling plays for beer in bars&amp;#x000A;Like an old blues-time picker who don't recall who you are&amp;#x000A;&amp;#x000A;And that old time feeling limps through the night on a crutch&amp;#x000A;Like an old soldier wonderin' if he's paid too much&amp;#x000A;And that old time feeling rocks and spits and cries&amp;#x000A;Like an old lover rememberin' the girl with the clear blue eyes&amp;#x000A;&amp;#x000A;And that old time feeling goes sneakin' down the hall&amp;#x000A;Like an old gray cat in winter, keepin' close to the wall&lt;/pre&gt;

&lt;p&gt;You can install &lt;a href="https://github.com/pengwynn/rdio-cli"&gt;rdio-cli&lt;/a&gt; from Rubygems or from the &lt;a href="https://github.com/pengwynn/rdio-cli"&gt;source on
GitHub&lt;/a&gt;.&lt;/p&gt;
      &lt;p&gt;&lt;a href="http://wynnnetherland.com/linked/2013013101/rdio-cli-does-lyrics"&gt;#&lt;/a&gt;&lt;p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=b5E-xHPX2BQ:mGn3lhr-NSQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=b5E-xHPX2BQ:mGn3lhr-NSQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=b5E-xHPX2BQ:mGn3lhr-NSQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=b5E-xHPX2BQ:mGn3lhr-NSQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=b5E-xHPX2BQ:mGn3lhr-NSQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=b5E-xHPX2BQ:mGn3lhr-NSQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/b5E-xHPX2BQ" height="1" width="1"/&gt;</content>
    <published>2013-01-31T12:45:22-06:00</published>
    <updated>2013-01-31T12:45:22-06:00</updated>
  <feedburner:origLink>http://wynnnetherland.com/linked/2013013101</feedburner:origLink></entry>
  <entry>
    <title>Bootstrapping consistency</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/c8n3qpNi3XU/2013012801" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-01-28:/linked/2013012801</id>
    <content type="html">
      &lt;p&gt;One of the best features of Rails is its consistent project layout.
Thoughtbot &lt;a href="http://robots.thoughtbot.com/post/41439635905/bin-setup"&gt;recently shared&lt;/a&gt; how they use a &lt;code&gt;./bin/setup&lt;/code&gt; script to
bring consistency to the project setup.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Regardless of the &lt;code&gt;bin/setup&lt;/code&gt; file’s contents, a developer should be able to
clone the project and run a single, consistent, reliable command to start
contributing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At GitHub, we use &lt;code&gt;script/bootstrap&lt;/code&gt;, but the idea is the same &amp;mdash; a consistent
user experience to get from zero to productive on any new project. Whether
I'm &lt;a href="https://github.com/github/developer.github.com"&gt;writing docs&lt;/a&gt;, &lt;a href="https://github.com/github/github-services"&gt;extending GitHub with service hooks&lt;/a&gt;, or
hacking our internal support tools, I know I can just clone the repository and
run &lt;code&gt;script/bootstrap&lt;/code&gt; to jump right in. Thanks to &lt;a href="https://github.com/holman/dotfiles/pull/60"&gt;a patch&lt;/a&gt; from &lt;a href="https://twitter.com/memborsky"&gt;Matt
Emborsky&lt;/a&gt;, this works for &lt;a href="https://github.com/pengwynn/dotfiles"&gt;my dots&lt;/a&gt;, too.&lt;/p&gt;

&lt;p&gt;We also don't stop with the project bootstrap. Our projects normally have
&lt;code&gt;script/test&lt;/code&gt; for running the local test suite, &lt;code&gt;script/cibuild&lt;/code&gt; for running
tests on the continuous integration server, as well as the usual
&lt;code&gt;script/server&lt;/code&gt;, and &lt;code&gt;script/console&lt;/code&gt; scripts where applicable.&lt;/p&gt;

&lt;p&gt;As a result, I spend less time thinking &lt;em&gt;what to run&lt;/em&gt; and just &lt;em&gt;run&lt;/em&gt;.&lt;/p&gt;
      &lt;p&gt;&lt;a href="http://wynnnetherland.com/linked/2013012801/bootstrapping-consistency"&gt;#&lt;/a&gt;&lt;p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=c8n3qpNi3XU:sA1b6jxAHqI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=c8n3qpNi3XU:sA1b6jxAHqI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=c8n3qpNi3XU:sA1b6jxAHqI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=c8n3qpNi3XU:sA1b6jxAHqI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=c8n3qpNi3XU:sA1b6jxAHqI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=c8n3qpNi3XU:sA1b6jxAHqI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/c8n3qpNi3XU" height="1" width="1"/&gt;</content>
    <published>2013-01-28T08:30:50-06:00</published>
    <updated>2013-01-28T08:30:50-06:00</updated>
  <feedburner:origLink>http://wynnnetherland.com/linked/2013012801</feedburner:origLink></entry>
  <entry>
    <title>Speaking at Big Ruby</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/ddNRGSlwzeY/2013012501" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-01-25:/linked/2013012501</id>
    <content type="html">
      &lt;p&gt;I'm excited to be speaking at &lt;a href="http://www.bigrubyconf.com/"&gt;Big Ruby&lt;/a&gt; next month. The &lt;a href="http://www.bigrubyconf.com/#organizers"&gt;organizers&lt;/a&gt; have put
      together a &lt;a href="http://www.bigrubyconf.com/#speakers"&gt;stellar speaking lineup&lt;/a&gt;, and the &lt;a href="https://www.grapevinetexasusa.com/Heritage/PalaceTheatre/Rentals/tabid/599/Default.aspx"&gt;Palace Theater&lt;/a&gt; in
      Grapevine showcases the small town feel I love about Texas. I hope you'll &lt;a href="https://bigrubyconf2013.busyconf.com/bookings/new"&gt;join
      us&lt;/a&gt;.&lt;/p&gt;
      
      &lt;p&gt;&lt;a href="http://www.flickr.com/photos/grapevinetxonline/5072415798/sizes/l/"&gt;&lt;img src="http://farm5.staticflickr.com/4129/5072415798_801b42e073_b.jpg" alt="Palace
      Theater"&gt;
      &lt;/a&gt;&lt;/p&gt;
      
      &lt;p&gt;&lt;small&gt;Photo credit: &lt;a href="http://GrapevineTxOnline.com"&gt;GrapevineTxOnline.com&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
      &lt;p&gt;&lt;a href="http://wynnnetherland.com/linked/2013012501/speaking-at-big-ruby"&gt;#&lt;/a&gt;&lt;p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=ddNRGSlwzeY:V5XTqNy5GWY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=ddNRGSlwzeY:V5XTqNy5GWY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=ddNRGSlwzeY:V5XTqNy5GWY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=ddNRGSlwzeY:V5XTqNy5GWY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=ddNRGSlwzeY:V5XTqNy5GWY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=ddNRGSlwzeY:V5XTqNy5GWY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/ddNRGSlwzeY" height="1" width="1"/&gt;</content>
    <published>2013-01-25T19:57:17-06:00</published>
    <updated>2013-01-25T19:57:17-06:00</updated>
  <feedburner:origLink>http://wynnnetherland.com/linked/2013012501</feedburner:origLink></entry>
  <entry>
    <title>Open Government book now open source</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/BcLYKncHjjc/open-government-now-open-source" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-01-19:/journal/open-government-now-open-source</id>
    <content type="html">
      &lt;p&gt;As a contributor to the &lt;a href="http://www.amazon.com/Open-Government-Collaboration-Transparency-Participation/dp/0596804350"&gt;Open Government&lt;/a&gt; book from O'Reilly a couple of years
      ago, I was thrilled to see &lt;a href="https://twitter.com/laurelatoreilly"&gt;Laurel&lt;/a&gt; and &lt;a href="https://twitter.com/lathropd"&gt;Daniel&lt;/a&gt; release it &lt;a href="https://github.com/oreillymedia/open_government"&gt;on GitHub&lt;/a&gt;
      as part of the &lt;a href="http://pdftribute.net/"&gt;#PDFtribute&lt;/a&gt; to Aaron Swartz.&lt;/p&gt;
      
      &lt;p&gt;Aaron contributed Chapter 25 in which he argues that government transparency
      doesn't go far enough:&lt;/p&gt;
      &lt;blockquote&gt;
      &lt;p&gt;Perhaps even more useful than putting government documents online would be
      providing access to corporate and nonprofit records. A lot of political
      action takes place outside the formal government, and thus outside the scope
      of the existing FOIA laws. But such things seem totally off the radar of most
      transparency activists; instead, giant corporations that receive billions of
      dollars from the government are kept impenetrably secret.&lt;/p&gt;
      &lt;/blockquote&gt;
      &lt;p&gt;You can read this chapter and the entire book &lt;a href="https://github.com/oreillymedia/open_government"&gt;in PDF, ebook, and mobile
      formats&lt;/a&gt;.&lt;/p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=BcLYKncHjjc:RIlnom7e7Ko:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=BcLYKncHjjc:RIlnom7e7Ko:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=BcLYKncHjjc:RIlnom7e7Ko:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=BcLYKncHjjc:RIlnom7e7Ko:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=BcLYKncHjjc:RIlnom7e7Ko:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=BcLYKncHjjc:RIlnom7e7Ko:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/BcLYKncHjjc" height="1" width="1"/&gt;</content>
    <published>2013-01-19T00:00:00+00:00</published>
    <updated>2013-01-19T00:00:00+00:00</updated>
  <feedburner:origLink>http://wynnnetherland.com/journal/open-government-now-open-source</feedburner:origLink></entry>
  <entry>
    <title>TIL: Easy UPSERTS in MySQL</title>
    <link href="http://feedproxy.google.com/~r/wynn/~3/w384hmA_2J8/20130111" rel="alternate" type="text/html" />
    <id>tag:wynnnetherland.com,2013-01-11:/til/20130111</id>
    <content type="html">
      &lt;p&gt;I've long loved &lt;a href="http://docs.mongodb.org/manual/applications/update/#crud-update-update"&gt;upserts in MongoDB&lt;/a&gt;, but I suppose my desire to keep
my SQL vanilla for Rails caused me to overlook easy upserts in MySQL using &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html"&gt;&lt;code&gt;ON&amp;#x000A;DUPLICATE KEY UPDATE&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;INSERT INTO table (`user_id`, `some_expensive_count`) &amp;#x000A;  VALUES (1, 333333)&amp;#x000A;  ON DUPLICATE KEY UPDATE `some_expensive_count` = 333333;&amp;#x000A;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If the &lt;code&gt;INSERT&lt;/code&gt; would cause a duplicate value in a &lt;code&gt;PRIMARY KEY&lt;/code&gt; or &lt;code&gt;UNIQUE&lt;/code&gt;
index, an &lt;code&gt;UPDATE&lt;/code&gt; is performed. Easy peasy.&lt;/p&gt;
    &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/wynn?a=w384hmA_2J8:JCMbURYA_Z0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=w384hmA_2J8:JCMbURYA_Z0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=w384hmA_2J8:JCMbURYA_Z0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=w384hmA_2J8:JCMbURYA_Z0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?i=w384hmA_2J8:JCMbURYA_Z0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/wynn?a=w384hmA_2J8:JCMbURYA_Z0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/wynn?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/wynn/~4/w384hmA_2J8" height="1" width="1"/&gt;</content>
    <published>2013-01-11T00:00:00+00:00</published>
    <updated>2013-01-11T00:00:00+00:00</updated>
  <feedburner:origLink>http://wynnnetherland.com/til/20130111</feedburner:origLink></entry>
</feed>
