<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Blog Name</title>
  <subtitle>Blog subtitle</subtitle>
  <id>http://blog.url.com/blog</id>
  <link href="http://blog.url.com/blog"/>
  <link href="http://blog.url.com/blog/feed.xml" rel="self"/>
  <updated>2019-04-15T02:00:00+02:00</updated>
  <author>
    <name>Blog Author</name>
  </author>
  <entry>
    <title>What we are listening to #2: Podcasts</title>
    <link rel="alternate" href="http://blog.url.com/blog/what-we-are-listening-to-2/"/>
    <id>http://blog.url.com/blog/what-we-are-listening-to-2/</id>
    <published>2019-04-15T02:00:00+02:00</published>
    <updated>2019-12-31T16:15:06+01:00</updated>
    <author>
      <name>Article Author</name>
    </author>
    <content type="html">&lt;div class="article-section"&gt;
  &lt;div class="article-content"&gt;
    &lt;h2&gt;Casefile&lt;/h2&gt;
    &lt;div class="row"&gt;
      &lt;div class="small-12 medium-3 columns align-middle"&gt;&lt;a href="https://casefilepodcast.com/"&gt;&lt;img src="/images/blog/2019-04-Casefile.jpg" alt="Casefile Cover"&gt;&lt;/a&gt;&lt;/div&gt;
      &lt;div class="small-12 medium-9 columns align-middle"&gt;&lt;p&gt;"Fact is scarier than fiction"
– &lt;a href="https://casefilepodcast.com/" class="small"&gt;Casefile Podcast&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;br&gt;
    &lt;p&gt;&lt;strong&gt;Lindha:&lt;/strong&gt; As a true crime buff, there is nothing better then &lt;a href="https://casefilepodcast.com/"&gt;Casefile&lt;/a&gt;. The background research is impressive, detailed and very visually descriptive. And if you are new to it, a backlog of over &lt;a href="https://casefilepodcast.com/podcast-archive/"&gt;100 cases&lt;/a&gt;, each about an hour or more to dig in too. I am not even close to being caught up at case 60+.&lt;/p&gt;
    &lt;p&gt;But, what's up with the host being anonymous?&lt;/p&gt;
      &lt;strong&gt;Currently listening to:&lt;/strong&gt;&lt;br&gt;
      &lt;p&gt;&lt;a href="https://casefilepodcast.com/case-60-jonestown-part-1/"&gt;Case 60 Jamestown (1–3)&lt;/a&gt;&lt;/p&gt;
      &lt;strong&gt;Past favorite:&lt;/strong&gt;&lt;br&gt;
      &lt;p&gt;&lt;a href="https://casefilepodcast.com/case-19-snowtown/"&gt;Case 19 Snowtown&lt;/a&gt;&lt;br&gt;
      and many more...&lt;/p&gt;
      &lt;hr&gt;

      &lt;h2&gt;Stay Tuned with Preet&lt;/h2&gt;
      &lt;div class="row"&gt;
        &lt;div class="small-12 medium-3 columns"&gt;&lt;a href="https://www.cafe.com/ss_series/stay-tuned/"&gt;&lt;img src="/images/blog/2019-04-Preet.jpg" alt="Stay Tuned with Preet Cover"&gt;&lt;/a&gt;&lt;/div&gt;
        &lt;div class="small-12 medium-9 columns"&gt;&lt;p&gt;"Stay Tuned with Preet is a series about justice and fairness featuring Preet Bharara, the former US Attorney for the Southern District of New York"
  – &lt;a href="https://www.npr.org/podcasts/551791730/stay-tuned-with-preet" class="small"&gt;NPR&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;br&gt;
      &lt;p&gt;&lt;strong&gt;Lindha:&lt;/strong&gt; With all the twists and turns going on in American and World politics, it’s great to have a person like Preet Bharara to share his insights and put some into clarity. And the guests are fantastic. The episode where Preet is discussing the Magnitsky Act and how it came to life with Bill Browder, is worth listening to on its own. However, right now I have tuned out a bit from all the insanity, and as a result, I am a few episodes behind. Still would recommend it to anyone interested in keeping up on things.&lt;/p&gt;
        &lt;strong&gt;Currently listening to:&lt;/strong&gt;&lt;br&gt;
        &lt;p&gt;&lt;a href="https://www.cafe.com/cafe-insider-clip-03-25-dont-barr-muellers-report/"&gt;CAFE Insider 03/25: Don't Barr Mueller's Report &lt;/a&gt;&lt;/p&gt;
        &lt;strong&gt;Past favorite:&lt;/strong&gt;&lt;br&gt;
        &lt;p&gt;&lt;a href="https://www.cafe.com/from-preet-the-magnitsky-act/"&gt;From Preet: The Magnitsky Act&lt;/a&gt;&lt;br&gt;
        and many more...&lt;/p&gt;
        &lt;hr&gt;

        &lt;h2&gt;You're Wrong About...&lt;/h2&gt;
        &lt;div class="row"&gt;
          &lt;div class="small-12 medium-3 columns"&gt;&lt;a href="https://overcast.fm/itunes1380008439/youre-wrong-about"&gt;&lt;img src="/images/blog/2019-04-you-are-wrong.jpg" alt="You're Wrong About... Cover"&gt;&lt;/a&gt;&lt;/div&gt;
          &lt;div class="small-12 medium-9 columns"&gt;&lt;p&gt;"Every week Sarah Marshall and Michael Hobbs circle back to an event, person or trend that’s been misremembered in the public imagination." – &lt;a href="https://rottenindenmark.wordpress.com" class="small"&gt;Rottin' in Denmark&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;br&gt;
        &lt;p&gt;&lt;strong&gt;Jack:&lt;/strong&gt; This is a “turns out...” podcast that often circles around the media’s role in framing the story we know about shared events. If you already know a lot about the week’s topic you might find yourself arguing that they are still wrong about something at the end. I truly enjoy Sarah’s academic vocabulary; she can certainly turn a phrase.
&lt;/p&gt;
          &lt;strong&gt;Currently listening to:&lt;/strong&gt;&lt;br&gt;
          &lt;p&gt;&lt;a href="https://rottenindenmark.wordpress.com/2018/10/24/urban-legends-spectacular/"&gt;Urban Legends Spectacular!&lt;/a&gt;&lt;br&gt;
          Razorblades in apples, babysitters on acid, killers in backseats and “rainbow parties”: In this episode, Mike and Sarah investigate the scary stories Americans tell each other and discover the actual anxieties behind them. Turn on your high beams for this one.&lt;/p&gt;

          &lt;strong&gt;Past favorite:&lt;/strong&gt;&lt;br&gt;
          &lt;p&gt;&lt;a href="https://rottenindenmark.wordpress.com/2018/08/04/alpha-males/"&gt;Alpha Males&lt;/a&gt;&lt;br&gt;
          Sarah tells Mike that animal behavior is an imperfect template for human society. Digressions include rabbits, Bob’s Burgers, and online dating. Mike makes an awkward observation about locker rooms.&lt;/p&gt;
          &lt;hr&gt;

          &lt;h2&gt;Reconcilable Differences&lt;/h2&gt;
          &lt;div class="row"&gt;
            &lt;div class="small-12 medium-3 columns"&gt;&lt;a href="https://www.relay.fm/rd"&gt;&lt;img src="/images/blog/2019-04-reconcilable.jpg" alt="You're Wrong About... Cover"&gt;&lt;/a&gt;&lt;/div&gt;
            &lt;div class="small-12 medium-9 columns"&gt;&lt;p&gt;"John Siracusa and Merlin Mann try to figure out exactly how they got this way." – &lt;a href="https://www.relay.fm"&gt;Relay FM&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;br&gt;
          &lt;p&gt;&lt;strong&gt;Jack:&lt;/strong&gt; I listen to every show either of these hosts is on, regardless of topic. RecDiffs has priority status in Overcast for me, as I will pause any other show if a new episode is available. You must start at the beginning, and if you don’t love the personalities you might not be hooked up right.
  &lt;/p&gt;
            &lt;strong&gt;Currently listening to:&lt;/strong&gt;&lt;br&gt;
            &lt;p&gt;&lt;a href="https://www.relay.fm/rd/101"&gt;Duke of Bits&lt;/a&gt;&lt;br&gt;
              This week kicks off with a critique of the GUI for Skype. What’s Merlin’s problem with Swing anyway? John introduces the “MPU” then mostly agrees to drive.&lt;/p&gt;

  &lt;p&gt;John interrogates Merlin about a recent and notorious technical problem with one of his other programs. There is talk of checklists plus more fretfulness about the topic that cannot be discussed.&lt;/p&gt;

  &lt;p&gt;Next, your hosts respond at length to a listener’s question about things they’ve given up. Status is less pursued, insight on privilege is sought, and hope for interesting side projects is, alas, abandoned.&lt;/p&gt;

  &lt;p&gt;Finally, John looks for help regarding the help he was offered by an internet quiz.
&lt;/p&gt;

            &lt;strong&gt;Where to start:&lt;/strong&gt;&lt;br&gt;
            &lt;p&gt;&lt;a href="http://relay.fm/rd/1"&gt;We All Ruined It Together&lt;/a&gt;&lt;br&gt;
              In this inaugural episode of Season 1, John and Merlin begin framing the conversation on exactly how they got how they are.&lt;/p&gt;

  &lt;p&gt;From the dungeons of Usenet to the dragons of roving bullies, origins are explored, awkwardness is cataloged, and differences are provisionally reconciled.
&lt;/p&gt;

  &lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry>
    <title>eCommerce: Wireframing Kit for Prototyping in Adobe XD</title>
    <link rel="alternate" href="http://blog.url.com/blog/wireframing-kit-adobexd-ecommerce/"/>
    <id>http://blog.url.com/blog/wireframing-kit-adobexd-ecommerce/</id>
    <published>2018-08-17T02:00:00+02:00</published>
    <updated>2019-03-19T09:23:16+01:00</updated>
    <author>
      <name>Article Author</name>
    </author>
    <content type="html">&lt;div class="article-section"&gt;
  &lt;div class="article-content"&gt;
    &lt;p&gt;Continuing my series of converting and recreating my illustrator wireframing assets, this time its eCommerce bits and whatnots. It has come in handy as we have had a few online store projects lately. Use them as you see fit, and I will keep sharing small kits as I have them done moving forward.&lt;/p&gt;
    &lt;p&gt;Oh, and please check back for more. Enjoy! ヾ^_^&lt;/p&gt;
    &lt;div class="text-center"&gt;
      &lt;a href="/downloads/SE01-Wireframing-Kit-AdobeXD-ecommerce.xd" class="button secondary"&gt;Download Adobe XD eCommerce Kit&lt;/a&gt;
    &lt;/div&gt;
    &lt;h2&gt;Included in this kit&lt;/h2&gt;
    &lt;h3&gt;1. Shopping Navigation&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2018-08-Shopping-Navigation.svg" alt="Navigation with horizontal stacked links and a shopping cart icon inside of a black outline."&gt;&lt;br&gt;
      &lt;figcaption&gt;Navigation with horizontal stacked links and a shopping cart icon.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;2. Product&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2018-08-product.svg" alt="Single product view in grascale with image gallery, rating, color and quantity selector."&gt;&lt;br&gt;
      &lt;figcaption&gt;Single product view with image gallery, rating, color and quantity selector.  An area below main content for additional details in a sectional tab.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;3. Product Listing&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2018-08-product-listing.svg" alt="Product cards with a preview image, label, price, short description, ratings and add to cart button displayed in a grid."&gt;&lt;br&gt;
      &lt;figcaption&gt;Product cards with a preview image, label, price, short description, ratings and add to cart button.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h4&gt;4. Filter &amp; Sorting, Product Listing&lt;/h4&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2018-08-filter-sorting.svg" alt="Product cards with a preview image, label, short description, ratings and add to download button displayed in a grid. Icon to access filters and a sorting drop-down."&gt;&lt;br&gt;
      &lt;figcaption&gt;Product cards with a preview image, label, short description, ratings and add to download button. Icon to access filters and a sorting drop-down.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h4&gt;5. Card Variations, Product Listing&lt;/h4&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2018-08-card-variation.svg" alt="Thee different card variations. Add to cart, download and plain preview versions."&gt;&lt;br&gt;
      &lt;figcaption&gt;Three different card variations. Add to cart, download and plain preview versions.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;6. Cart&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2018-08-cart.svg" alt="A list of items in the shopping cart."&gt;&lt;br&gt;
      &lt;figcaption&gt;Step by step cart preview. Input outlines indicate that quantity is editable, and the x to the right suggests that each item can be deleted.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h4&gt;7. Payment &amp; Shipping, Cart&lt;/h4&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2018-08-payment.svg" alt="Input fields for shipping address, credit card information, billing address as well as promotional code and order summary."&gt;&lt;br&gt;
      &lt;figcaption&gt;A second step in the checkout process. Input fields for billing address are grayed out and only available if "Billings the same as shipping address" is unchecked.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h4&gt;8. Placed Order Confirmation, Cart&lt;/h4&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2018-08-confirmation.svg" alt="A confirmation message with a detailed order summary."&gt;&lt;br&gt;
      &lt;figcaption&gt;A confirmation message with a detailed order summary.&lt;/figcaption&gt;
    &lt;/figure&gt;


    &lt;p&gt;Enjoy!  ヾ^_^&lt;/p&gt;
    &lt;br&gt;
    &lt;div class="text-center"&gt;
      &lt;a href="/downloads/SE01-Wireframing-Kit-AdobeXD-ecommerce.xd" class="button secondary"&gt;Download Adobe XD eCommerce Kit&lt;/a&gt;
    &lt;/div&gt;
    &lt;h4&gt;More Wireframing Kits for Prototyping in Adobe XD&lt;/h4&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-for-prototyping-with-adobexd-base/" title="Base &amp;amp; Typography Adobe XD Wireframing Kit"&gt;Base &amp;amp; Typography Wireframing Kit&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-adobexd-forms-controls/" title="Forms &amp;amp; Controls Adobe XD Wireframing Kit"&gt;Forms &amp;amp; Controls Wireframing Kit&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-adobexd-navigation/" title="Navigation Adobe XD Wireframing Kit"&gt;Navigation Wireframing Kit&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-adobexd-containers/" title="Containers &amp;amp; Blocks Adobe XD Wireframing Kit"&gt;Containers &amp;amp; Blocks Wireframing Kit&lt;/a&gt;&lt;/li&gt;


    &lt;/ul&gt;
  &lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry>
    <title>Containers &amp; Blocks: Wireframing Kit for Prototyping in Adobe XD</title>
    <link rel="alternate" href="http://blog.url.com/blog/wireframing-kit-adobexd-containers/"/>
    <id>http://blog.url.com/blog/wireframing-kit-adobexd-containers/</id>
    <published>2017-11-23T01:00:00+01:00</published>
    <updated>2019-03-19T09:23:16+01:00</updated>
    <author>
      <name>Article Author</name>
    </author>
    <content type="html">&lt;div class="article-section"&gt;
  &lt;div class="article-content"&gt;
    &lt;p&gt;Continuing my series of converting and recreating my illustrator wireframing assets, this time its containers and blocks. A few of these I use very sparsely or for particular purposes. Accordions and tabs used to be a way to cram and sort lots of content in a small space. While doing so, we are hiding some of that content from the user. Still useful as a space saver, I recommend not using them as an afterthought. They are more suitable for when including associated information, such as shipping terms on a product, etc. That said, accordions are one of my fav ways to display Q&amp;amp;As, making questions easily skimmable and tabs are great for featured tags, filter inline on the page.&lt;/p&gt;
    &lt;p&gt;Oh, and please check back for more. Enjoy! ヾ^_^&lt;/p&gt;
    &lt;div class="text-center"&gt;
      &lt;a href="/downloads/SE01-Wireframing-Kit-AdobeXD-containers.xd" class="button secondary"&gt;Download Adobe XD Containers &amp;amp; Blocks Kit&lt;/a&gt;
    &lt;/div&gt;
    &lt;h2&gt;Included in this kit&lt;/h2&gt;
    &lt;h3&gt;1. Accordion&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-11-accordion.svg" alt="A list of items, one column wide, displayed with black separating lines, plus and minus icons, and a black outline."&gt;&lt;br&gt;
      &lt;figcaption&gt;Vertically stacked list of item with icons indicating if it is collapsed or expanded.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;2. Callouts&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-11-callouts.svg" alt="Callout block, with and without the collapsable icon."&gt;&lt;br&gt;
      &lt;figcaption&gt;Callout block, with and without the collapsable icon.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;3. Cards&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-11-cards.svg" alt="Callout block, with and without the collapsable icon."&gt;&lt;br&gt;
      &lt;figcaption&gt;Callout block, with and without the collapsable icon.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;4. Time line/Timeline&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-11-timeline.svg" alt="Timeline with callout blocks."&gt;&lt;br&gt;
      &lt;figcaption&gt;Timeline with callout blocks.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;5. Table&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-11-table.svg" alt="Table with table headers and 3 columns of content."&gt;&lt;br&gt;
      &lt;figcaption&gt;Table with table headers and content.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;6. Tabs&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-11-tabs.svg" alt="Tabs with content."&gt;&lt;br&gt;
      &lt;figcaption&gt;Tabs with content.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;7. Tooltips&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-11-tooltips.svg" alt="Directional Tooltips."&gt;&lt;br&gt;
      &lt;figcaption&gt;Directional Tooltips.&lt;/figcaption&gt;
    &lt;/figure&gt;


    &lt;p&gt;Enjoy!  ヾ^_^&lt;/p&gt;
    &lt;br&gt;
    &lt;div class="text-center"&gt;
      &lt;a href="/downloads/SE01-Wireframing-Kit-AdobeXD-containers.xd" class="button secondary"&gt;Download Adobe XD Containers &amp;amp; Blocks Kit&lt;/a&gt;
    &lt;/div&gt;
    &lt;h4&gt;More Wireframing Kits for Prototyping in Adobe XD&lt;/h4&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-for-prototyping-with-adobexd-base/" title="Base &amp;amp; Typography Adobe XD Wireframing Kit"&gt;Base &amp;amp; Typography Wireframing Kit&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-adobexd-forms-controls/" title="Forms &amp;amp; Controls Adobe XD Wireframing Kit"&gt;Forms &amp;amp; Controls Wireframing Kit&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-adobexd-navigation/" title="Navigation Adobe XD Wireframing Kit"&gt;Navigation Wireframing Kit&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-adobexd-ecommerce/" title="eCommerce Adobe XD Wireframing Kit"&gt;eCommerce Wireframing Kit&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry>
    <title>Write a Simple npx Business Card</title>
    <link rel="alternate" href="http://blog.url.com/blog/open-source-oss-npx-business-card/"/>
    <id>http://blog.url.com/blog/open-source-oss-npx-business-card/</id>
    <published>2017-11-09T01:00:00+01:00</published>
    <updated>2019-03-19T09:23:16+01:00</updated>
    <author>
      <name>Article Author</name>
    </author>
    <content type="html">&lt;div class="article-section"&gt;
  &lt;div class="article-content"&gt;

&lt;h3&gt;javascript is awesome for CLIs&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;the npm build, publish, share cycle is so easy&lt;/li&gt;
&lt;li&gt;&lt;code&gt;npx&lt;/code&gt; allows execution without installation&lt;/li&gt;
&lt;li&gt;npm ecosystem is ripe for CLI wrappers, just write the &lt;code&gt;stdio&lt;/code&gt; handler for your favorite package&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;npx business card&lt;/h2&gt;

&lt;p&gt;Let&amp;rsquo;s create a pointless CLI just to walk thru some best practices and patterns for publishing any node CLI.&lt;/p&gt;

&lt;p&gt;Inspired by &lt;a href="https://github.com/johnkpaul/johnkpaul"&gt;johnkpaul&lt;/a&gt; and &lt;a href="https://github.com/searls/searls"&gt;searls&lt;/a&gt;, we&amp;rsquo;ll create a &lt;code&gt;npx&lt;/code&gt; enabled business card. The final output might look something like this:&lt;/p&gt;

&lt;img src="/images/blog/2017-11-npx-business-card.gif" style="max-width:400px;" class="float-center"&gt;
&lt;h3 id="npm-init"&gt;npm init&lt;/h3&gt;

&lt;p&gt;Start a new &lt;code&gt;node&lt;/code&gt; project and name it whatever you want. You could choose to name it after the executable you want to expose. It&amp;rsquo;s not necessary but conventions are nice, and it makes your binary more &lt;code&gt;npx&lt;/code&gt; friendly.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mkdir jackboberg
cd jackboberg
npm init -y&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;At first, let&amp;rsquo;s get the necessary CLI working.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;touch cli.js
chmod +x cli.js&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Now open the new file in your favorite editor. I&amp;rsquo;ve been using &lt;code&gt;spacemacs&lt;/code&gt; recently, but am still very partial to &lt;code&gt;vim&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/env node

console.log(&amp;apos;doing business&amp;apos;)&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;You can execute your new CLI like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;./cli.js&lt;/code&gt;&lt;/pre&gt;


&lt;h4&gt;ship it&lt;/h4&gt;

&lt;p&gt;That&amp;rsquo;s an entirely functional first release! You just need to modify your &lt;code&gt;package.json&lt;/code&gt; to let &lt;code&gt;npm&lt;/code&gt; know to link your executable and you are off:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  // ...
  &amp;quot;bin&amp;quot;: &amp;quot;./cli.js&amp;quot;,
  // ....
}&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;By default, &lt;code&gt;npm&lt;/code&gt; will expose your binary using the same name as your package. You can &lt;a href="https://docs.npmjs.com/files/package.json#bin"&gt;configure this&lt;/a&gt; if it&amp;rsquo;s not what you want, but it will make your executable harder to use with &lt;code&gt;npx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Share your new CLI with the world!&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npm version patch
npm publish&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Now anyone can leverage your new CLI using &lt;code&gt;npx&lt;/code&gt;, without needing to install it locally:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npx $YOUR_PACKAGE_NAME&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;Put your logic in a separate file&lt;/h3&gt;

&lt;p&gt;What if you want to tell people more about the business you are doing. Create an object to hold the data for our CLI. I like to keep even small projects organized, so I&amp;rsquo;ll create a new file in &lt;code&gt;lib&lt;/code&gt; for this.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ./lib/data.js
module.exports = {
  name: &amp;apos;Jack Boberg&amp;apos;,
  title: &amp;apos;Software Engineer&amp;apos;,
  github: &amp;apos;jackboberg&amp;apos;,
  urls: [
    &amp;apos;https://jackboberg.info&amp;apos;,
    &amp;apos;https://studioelsa.se&amp;apos;
  ]
}&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;When your CLI needs to do additional work, put that code in &lt;code&gt;index.js&lt;/code&gt; or a local module. Consumers will be able to use your package programmatically, and it gives you a discrete location to do all your stateful business logic. In this case, we will use the main module to format our data as a pretty string.&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s get a library that will help make our output a bit more stylish.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npm i prettyjson&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;We can use this package, or any other useful utility we find on npm, to improve our CLI utility.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ./index.js
const { render } = require(&amp;apos;prettyjson&amp;apos;)
const data = require(&amp;apos;./lib/data&amp;apos;)

const renderOpts = {
  dashColor: &amp;apos;cyan&amp;apos;,
  keysColor: &amp;apos;blue&amp;apos;,
  stringColor: &amp;apos;white&amp;apos;
}

module.exports = () =&amp;gt; render(data, renderOpts)&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;A small update to our &lt;code&gt;./cli.js&lt;/code&gt; script and we can leverage our new module.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/env node

const pkg = require(&amp;apos;..&amp;apos;)
console.log(pkg())&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;Handle stdio in your CLI module explicitly&lt;/h3&gt;

&lt;p&gt;That&amp;rsquo;s not bad, but what if someone wants to get the raw JSON. Let&amp;rsquo;s add a simple flag to modify our scripts behavior.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npx jackboberg -j&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt; Keeping your &lt;code&gt;cli.js&lt;/code&gt; focused on parsing input and producing output is a good idea; it keeps your files small and reasonable. Resist the urge to write any business logic in this file.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#!/usr/bin/env node

const minimist = require(&amp;apos;minimist&amp;apos;)
const pkg = require(&amp;apos;.&amp;apos;)

const options = {
  alias: { json: &amp;apos;j&amp;apos; }
}
const argv = minimist(process.argv.slice(2), options)

console.log(pkg(argv))&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://www.npmjs.com/package/prettyjson"&gt;&lt;code&gt;prettyjson&lt;/code&gt;&lt;/a&gt; already includes &lt;a href="https://www.npmjs.com/package/minimist"&gt;&lt;code&gt;minimist&lt;/code&gt;&lt;/a&gt; as a dependency, so you can add it for &amp;lsquo;free&amp;rsquo; and dress up your CLI from there. You should still include it explicitly in &lt;code&gt;dependencies&lt;/code&gt;. Let&amp;rsquo;s make a small change to our main script to support this new option.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# ./index.js

// ...

module.exports = ({ json }) =&amp;gt; json ? JSON.stringify(data) : render(data, renderOpts)&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Don&amp;rsquo;t forget to publish your final npx business card when you are finished adding tons of unnecessary additional features. I made mine include &lt;a href="https://www.npmjs.com/package/cowsay"&gt;&lt;code&gt;cowsay&lt;/code&gt;&lt;/a&gt;, because of reasons.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;npm version major
npm publish&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Now you have a globally executable script, that can leverage all of &lt;code&gt;npm&lt;/code&gt;, to perform awesome utilites (or silly ideas like this). If you find you are writing a &amp;lsquo;big&amp;rsquo; CLI with lots of parameters or sub-commands, you will want more options around how to define your CLI and should consider trying &lt;a href="https://www.npmjs.com/package/yargs"&gt;&lt;code&gt;yargs&lt;/code&gt;&lt;/a&gt; instead of &lt;a href="https://www.npmjs.com/package/minimist"&gt;&lt;code&gt;minimist&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

  &lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry>
    <title>Navigation: Wireframing Kit for Prototyping in Adobe XD</title>
    <link rel="alternate" href="http://blog.url.com/blog/wireframing-kit-adobexd-navigation/"/>
    <id>http://blog.url.com/blog/wireframing-kit-adobexd-navigation/</id>
    <published>2017-10-06T02:00:00+02:00</published>
    <updated>2019-03-19T09:23:16+01:00</updated>
    <author>
      <name>Article Author</name>
    </author>
    <content type="html">&lt;div class="article-section"&gt;
  &lt;div class="article-content"&gt;
    &lt;p&gt;As I have mentioned before when sharing wireframing kits, my existing Illustrator wireframing assets are, per project basis, converted and recreated one by one. So let me share with you my common menus and standard navigation components. Use them as you see fit, and I will keep sharing small kits as I have them converted moving forward. Oh, and please check back for more.&lt;/p&gt;
    &lt;p&gt;Enjoy! ヾ^_^&lt;/p&gt;
    &lt;div class="text-center"&gt;
      &lt;a href="/downloads/SE01-Wireframing-Kit-AdobeXD-navigation.xd" class="button secondary"&gt;Download Adobe XD Navigation Kit&lt;/a&gt;
    &lt;/div&gt;
    &lt;h2&gt;Included in this kit&lt;/h2&gt;
    &lt;h3&gt;1. Menus&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-10-menu.svg" alt="menus, horizontal, vertical and with icons"&gt;&lt;br&gt;
      &lt;figcaption&gt;Horizontal and vertical menus, and with icons.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;2. Dropdown Menus&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-10-drop-menu.svg" alt="Horizontal and vertical dropdpown menus"&gt;
      &lt;figcaption&gt;Horizontal and vertical dropdpown menus.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;3. Navigation Bar&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-10-navigation-bar.svg" alt="Standard top navigation bar with logo placement and search"&gt;&lt;br&gt;
      &lt;figcaption&gt;Standard top navigation bar with logo placement and search.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;4. Pagination&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-10-pagination.svg" alt="Pagination with page numbers and previous/next navigation"&gt;&lt;br&gt;
      &lt;figcaption&gt;Pagination with page numbers and previous/next navigation.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;5. Breadcrumb Trails&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-10-breadcrumb.svg" alt="Breadcrumb trail with dividers"&gt;&lt;br&gt;
      &lt;figcaption&gt;Breadcrumb trail with dividers.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;6. Tabs&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-10-tabs.svg" alt="Tabular Navigation with active state"&gt;&lt;br&gt;
      &lt;figcaption&gt;Tabular Navigation with active state.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;h3&gt;7. Accordion Menu&lt;/h3&gt;
    &lt;figure class="card"&gt;
      &lt;img src="/images/blog/2017-10-accordion.svg" alt="Accordion menu with active state"&gt;&lt;br&gt;
      &lt;figcaption&gt;Accordion with active state.&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;p&gt;Enjoy!  ヾ^_^&lt;/p&gt;
    &lt;br&gt;
    &lt;div class="text-center"&gt;
      &lt;a href="/downloads/SE01-Wireframing-Kit-AdobeXD-navigation.xd" class="button secondary"&gt;Download Adobe XD Navigation Kit&lt;/a&gt;
    &lt;/div&gt;
    &lt;h4&gt;More Wireframing Kits for Prototyping in Adobe XD&lt;/h4&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-for-prototyping-with-adobexd-base/" title="Base &amp;amp; Typography Adobe XD Wireframing Kit"&gt;Base &amp;amp; Typography Wireframing Kit&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-adobexd-forms-controls/" title="Forms &amp;amp; Controls Adobe XD Wireframing Kit"&gt;Forms &amp;amp; Controls Wireframing Kit&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-adobexd-containers/" title="Containers &amp;amp; Blocks Adobe XD Wireframing Kit"&gt;Containers &amp;amp; Blocks Wireframing Kit&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/blog/wireframing-kit-adobexd-ecommerce/" title="eCommerce Adobe XD Wireframing Kit"&gt;eCommerce Wireframing Kit&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry>
    <title>Link Roundup #3: Technology</title>
    <link rel="alternate" href="http://blog.url.com/blog/link-roundup-3-technology/"/>
    <id>http://blog.url.com/blog/link-roundup-3-technology/</id>
    <published>2017-09-22T02:00:00+02:00</published>
    <updated>2019-03-19T09:23:16+01:00</updated>
    <author>
      <name>Article Author</name>
    </author>
    <content type="html">&lt;div class="article-section"&gt;
  &lt;div class="article-content"&gt;

    &lt;h2&gt;creating a ruby development environment&lt;/h2&gt;

    &lt;p&gt;I spent several years primarily developing applications using Rails, but more recently I&amp;rsquo;ve been happily focused on node.js projects. In the past few weeks I started a contract that has me back in Ruby. The MacBook I am using currently has never been used to do any Ruby work, and I made a mess of my &lt;code&gt;.dotfiles&lt;/code&gt;. So, I had to start from scratch and get a Ruby environment set up again. Here are some bits I quickly realized I needed.&lt;/p&gt;

    &lt;h3 id="install-some-rubies"&gt;install some rubies&lt;/h3&gt;

    &lt;p&gt;Managing Ruby versions is a breeze with &lt;a href="https://github.com/rbenv/rbenv"&gt;&lt;code&gt;rbenv&lt;/code&gt;&lt;/a&gt;, and I like that I can easily understand how it works. &lt;code&gt;$PATH&lt;/code&gt; injection is a fine way to deal with this challenge, and I take it a step further by prepending &lt;code&gt;./bin&lt;/code&gt; to my &lt;code&gt;$PATH&lt;/code&gt;. Then I can leverage binstubs locally and not have to use the cumbersome &lt;code&gt;bundle exec&lt;/code&gt; or &lt;code&gt;./bin/rails&lt;/code&gt; when running scripts.&lt;/p&gt;

    &lt;h3&gt;level up your REPL&lt;/h3&gt;

    &lt;p&gt;You spend a decent amount of time in a Rails console, or &lt;abbr title="Interactive Ruby Shell"&gt;IRB&lt;/abbr&gt;. It&amp;rsquo;s worth configuring some bits to make it more enjoyable. First, just use &lt;a href="https://github.com/pry/pry"&gt;Pry&lt;/a&gt; &lt;em&gt;everywhere&lt;/em&gt;.&lt;/p&gt;

    &lt;pre&gt;&lt;code&gt;# ~/.irbrc

begin
  require &amp;quot;rubygems&amp;quot;
  require &amp;quot;pry&amp;quot;
  Pry.start
  exit
rescue LoadError =&amp;gt; e
  warn &amp;quot;=&amp;gt; Unable to load pry&amp;quot;
end&lt;/code&gt;&lt;/pre&gt;


    &lt;p&gt;Then you can manage how you want all your Ruby REPLs to work in one place, your &lt;code&gt;.pryrc&lt;/code&gt;. Here I make sure I always have &lt;a href="https://github.com/awesome-print/awesome_print"&gt;&lt;code&gt;awesome_print&lt;/code&gt;&lt;/a&gt; and toss in some examples for how you might extend your environment with methods you find helpful when hacking. I used to require &lt;a href="https://github.com/cldwalker/hirb"&gt;&lt;code&gt;hirb&lt;/code&gt;&lt;/a&gt; as well, but have not found I miss it enough to add it back (yet).&lt;/p&gt;

    &lt;pre&gt;&lt;code class="(null)"&gt;# ~/.pryrc

# awesome print
begin
  require &amp;apos;awesome_print&amp;apos;
  AwesomePrint.pry!
rescue LoadError =&amp;gt; err
  warn &amp;quot;Couldn&amp;apos;t load awesome_print: #{err}&amp;quot;
end

# See https://gist.github.com/807492
class Array
  def self.toy(n=10, &amp;amp;block)
    block_given? ? Array.new(n,&amp;amp;block) : Array.new(n) {|i| i+1}
  end
end

class Hash
  def self.toy(n=10)
    Hash[Array.toy(n).zip(Array.toy(n){|c| (96+(c+1)).chr})]
  end
end&lt;/code&gt;&lt;/pre&gt;


    &lt;p&gt;I am still early in my re-setup for active Rails development, but I would expect more Ruby links in the &lt;em&gt;interesting projects&lt;/em&gt; sections of upcoming posts. Here are some of the vim plugins I have adopted.&lt;/p&gt;

    &lt;h4&gt;&lt;a href="https://github.com/tpope/vim-rails"&gt;vim-rails&lt;/a&gt;&lt;/h4&gt;

    &lt;div class="card"&gt;&lt;p&gt;Ruby on Rails power tools&lt;/p&gt;&lt;/div&gt;

    &lt;h4&gt;&lt;a href="https://github.com/tpope/vim-endwise"&gt;vim-endwise&lt;/a&gt;&lt;/h4&gt;

    &lt;div class="card"&gt;&lt;p&gt;wisely add &amp;ldquo;end&amp;rdquo; in ruby, endfunction/endif/more in vim script, etc&lt;/p&gt;&lt;/div&gt;

    &lt;h4&gt;&lt;a href="https://github.com/ngmy/vim-rubocop"&gt;vim-rubocop&lt;/a&gt;&lt;/h4&gt;

    &lt;div class="card"&gt;&lt;p&gt;The Vim RuboCop plugin runs RuboCop and displays the results in Vim&lt;/p&gt;&lt;/div&gt;

    &lt;h2&gt;interesting projects&lt;/h2&gt;

    &lt;h4&gt;&lt;a href="https://franchise.cloud/"&gt;Franchise&lt;/a&gt;&lt;/h4&gt;

    &lt;div class="card"&gt;&lt;p&gt;🍟 a notebook SQL client. what you get when you have a lot of sequels.&lt;/p&gt;&lt;/div&gt;

    &lt;p&gt;Like &lt;a href="https://runkit.com/home"&gt;runkit&lt;/a&gt; but targeting SQL results, and very cool that you can share a visualization with a colleague who can then re-connect and explore further.&lt;/p&gt;

    &lt;h4&gt;&lt;a href="https://probot.github.io/"&gt;Probot&lt;/a&gt;&lt;/p&gt;&lt;/h4&gt;

    &lt;div class="card"&gt;&lt;p&gt;a trainable robot that responds to activity on GitHub&lt;/p&gt;&lt;/div&gt;

    &lt;p&gt;I want to start using a some of the example bots immediately, especially the &lt;a href="https://probot.github.io/apps/wip/"&gt;Work In Progress&lt;/a&gt; bot.&lt;/p&gt;

    &lt;h4&gt;&lt;a href="https://github.com/dmnd/dedent"&gt;dedent&lt;/a&gt;&lt;/h4&gt;

    &lt;div class="card"&gt;&lt;p&gt;⬅️ ES6 string tag that strips indentation from multi-line strings.&lt;/p&gt;&lt;/div&gt;

    &lt;p&gt;This simple function solves a common issue I have creating multi-line strings while in a closure.&lt;/p&gt;

    &lt;h4&gt;&lt;a href="https://github.com/mikeal/r2"&gt;r2&lt;/a&gt;&lt;/h4&gt;

    &lt;div class="card"&gt;&lt;p&gt;HTTP client. Spiritual successor to request.&lt;/p&gt;&lt;/div&gt;

    &lt;p&gt;This package is not published to npm yet, but I am very excited about its direction. Be sure to read the companion article, &lt;a href="https://medium.com/@mikeal/modern-modules-d99b6867b8f1"&gt;Modern Modules&lt;/a&gt;, for insight into Mikeal&amp;rsquo;s intentions.&lt;/p&gt;

    &lt;h4&gt;&lt;a href="https://github.com/smallwins/keystash"&gt;keystash&lt;/a&gt;&lt;/h4&gt;

    &lt;div class="card"&gt;&lt;p&gt;🔑💌 Save secrets in S3 using KMS envelope encryption&lt;/p&gt;&lt;/div&gt;

    &lt;p&gt;I&amp;rsquo;m not using it for anything, but I love reading the source for clever CLI scripts like this.&lt;/p&gt;

  &lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
</feed>
