<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Gavin's Stuff</title><link href="https://gavinsstuff.com/" rel="alternate"></link><link href="https://gavinsstuff.com/feeds/all.atom.xml" rel="self"></link><id>https://gavinsstuff.com/</id><updated>2017-10-04T17:24:00-05:00</updated><entry><title>Books I’ve enjoyed so far in 2017</title><link href="https://gavinsstuff.com/books-2017.html" rel="alternate"></link><published>2017-10-04T17:24:00-05:00</published><updated>2017-10-04T17:24:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2017-10-04:/books-2017.html</id><summary type="html">&lt;p&gt;&lt;a href="https://www.amazon.com/Team-Rivals-Political-Abraham-Lincoln-ebook/dp/B000N2HBSO"&gt;Team of Rivals: The Political Genius of Abraham&amp;nbsp;Lincoln&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Very long, very interesting read of Lincoln and everyone in his cabinet and social circle. Lots of great details their politics, showing Lincoln as a great mediator during a time when the civil war wasn&amp;#8217;t the only thing tearing the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://www.amazon.com/Team-Rivals-Political-Abraham-Lincoln-ebook/dp/B000N2HBSO"&gt;Team of Rivals: The Political Genius of Abraham&amp;nbsp;Lincoln&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Very long, very interesting read of Lincoln and everyone in his cabinet and social circle. Lots of great details their politics, showing Lincoln as a great mediator during a time when the civil war wasn&amp;#8217;t the only thing tearing the nation apart. A movie or &lt;span class="caps"&gt;TV&lt;/span&gt; miniseries couldn&amp;#8217;t do justice to all the stories and characters here. Lots of the content comes directly from the letters and telegraph records they sent to each other, and the diaries of their&amp;nbsp;wives. &lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/Blood-Heroes-Struggle-Alamo-Sacrifice/dp/0316053732"&gt;The Blood of Heroes: The 13-Day Struggle for the Alamo&amp;#8212;and the Sacrifice That Forged a&amp;nbsp;Nation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I like this book because it gives a great snapshot of history, through the lens of this one struggle, which ended up being very important in the history of America. It&amp;#8217;s amazing how much detail the author was able to put together from all kinds of varying&amp;nbsp;accounts.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/Grid-Fraying-Between-Americans-Energy/dp/1632865688"&gt;The Grid: The Fraying Wires Between Americans and Our Energy&amp;nbsp;Future&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is from &lt;a href="https://www.gatesnotes.com/About-Bill-Gates/Best-Books-2016"&gt;Bill Gates&amp;#8217; 2016 list&lt;/a&gt; and I also found it to be pretty fascinating. I wish the book had been shorter, but more&amp;nbsp;technical. &lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/If-You-Survive-Normandy-American/dp/B00JV52VG6"&gt;If You Survive: From Normandy to the Battle of the Bulge to the End of World War &lt;span class="caps"&gt;II&lt;/span&gt; - One American Officer&amp;#8217;s Riveting True&amp;nbsp;Story&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If this were a ranked list, I would put this near the top. I saw somewhere that this was required reading for soldiers today. I can see why&amp;#8212;this first-hand account of many &lt;span class="caps"&gt;WWII&lt;/span&gt; battles tells every detail as the author saw it. I couldn&amp;#8217;t put it&amp;nbsp;down.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/Hero-Being-Strong-Father-Children-ebook/dp/B01N7Y68EW"&gt;Hero: Becoming the Strong Father Your Children&amp;nbsp;Need&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Good book for someone who needs to be reminded how important they are in their kids&amp;#8217; lives. Very basic stuff, in my&amp;nbsp;opinion.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/Product-Demos-That-Sell-Deliver/dp/151770782X"&gt;Product Demos That Sell: How to Deliver Winning SaaS&amp;nbsp;Demos&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$1 ebook with great tips for anyone in the software industry. I find that working toward a great demo is a really good&amp;nbsp;motivator.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/American-Assassin-Thriller-Mitch-Prequel-ebook/dp/B003UV8T9A"&gt;American Assassin: A Thriller (The Mitch Rapp Prequel Series Book&amp;nbsp;1)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Good bedtime novel about fighting terrorists. I guess there is a movie coming out with this&amp;nbsp;character.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/Ready-Player-One-Ernest-Cline-ebook/dp/B004J4WKUQ"&gt;Ready Player&amp;nbsp;One&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I love the take on &amp;#8216;80s nostalgia in this one. The writing isn&amp;#8217;t a 10/10, but who cares? This was the biggest page-turner on the whole&amp;nbsp;list.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/Seveneves-Novel-Neal-Stephenson-ebook/dp/B00LZWV8JO"&gt;Seveneves: A&amp;nbsp;Novel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If this were a ranked list, I would put this right at the top, and it would be an easy decision. Also from Bill Gates&amp;#8217; recommendations. Hard sci-fi novel about our reaction to the moon exploding, that quickly turns into much more. Pretty easy to see real-life figures as some of these&amp;nbsp;characters.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/Watership-Down-Novel-Puffin-Books-ebook/dp/B002NXOQF2"&gt;Watership Down: A&amp;nbsp;Novel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A classic story that was never assigned to me in middle school. I can see why; it&amp;#8217;s not very&amp;nbsp;good.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.com/Live-Night-Novel-Coughlin-Book-ebook/dp/B007HC3PUG"&gt;Live by Night: A&amp;nbsp;Novel&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Great fictional story about a fledgling mobster during prohibition. Made into a sub-par Ben Affleck movie, from what I hear. Book is riveting,&amp;nbsp;though.&lt;/p&gt;
&lt;p&gt;Hyperion Cantos&amp;nbsp;series:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/gp/product/B004G60EHS"&gt;Hyperion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/gp/product/B004G60FWM"&gt;The Fall of&amp;nbsp;Hyperion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/gp/product/B004G606I0/ref=series_rw_dp_sw"&gt;Endymion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/Rise-Endymion-Hyperion-Cantos-Book-ebook/dp/B004G60EKK"&gt;Rise of&amp;nbsp;Endymion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I made it through all four pretty quickly because they are a really good blend of approachable sci-fi with some philosophy mised in. Very very thought-provoking, especially from a Christian&amp;nbsp;perspective.&lt;/p&gt;</content></entry><entry><title>Creating NuGet Packages with WinJS</title><link href="https://gavinsstuff.com/creating-nuget-packages-with-winjs.html" rel="alternate"></link><published>2014-03-21T00:00:00-05:00</published><updated>2014-03-21T00:00:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2014-03-21:/creating-nuget-packages-with-winjs.html</id><summary type="html">&lt;p&gt;Let&amp;#8217;s say you&amp;#8217;ve developed a native Windows 8 app, using &lt;span class="caps"&gt;HTML&lt;/span&gt;, &lt;span class="caps"&gt;CSS&lt;/span&gt; and Javascript, working with the WinJS runtime. Let&amp;#8217;s also say that you&amp;#8217;re hoping to share many components of your app with another app, which you (or another developer) are going to create. With c …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Let&amp;#8217;s say you&amp;#8217;ve developed a native Windows 8 app, using &lt;span class="caps"&gt;HTML&lt;/span&gt;, &lt;span class="caps"&gt;CSS&lt;/span&gt; and Javascript, working with the WinJS runtime. Let&amp;#8217;s also say that you&amp;#8217;re hoping to share many components of your app with another app, which you (or another developer) are going to create. With c# or vb, you could create a shared class library; but that option isn&amp;#8217;t available with&amp;nbsp;WinJS. &lt;/p&gt;
&lt;p&gt;One of my favorite features recently introduced into the Microsoft ecosystem is NuGet. NuGet is package management for Visual Studio. Coming from a &lt;a href="http://cocoapods.org/"&gt;CocoaPods&lt;/a&gt; and &lt;a href="https://pypi.python.org/pypi/pip"&gt;&lt;span class="caps"&gt;PIP&lt;/span&gt;&lt;/a&gt; background, I find it very familiar and handy for making modular bits of code which can be pulled down into your projects and shared with others. Getting into the NuGet mentality encourages me to build modular, reusable components rather than one monolithic&amp;nbsp;codebase.&lt;/p&gt;
&lt;p&gt;I couldn&amp;#8217;t find a tutorial online for the best way to make a WinJS NuGet package, so I thought I might share my experience here. Keep in mind that a lot of this is subject to change in the near future, so just be aware of what your goals are, and research what you&amp;#8217;re running on the command-line before you actually run&amp;nbsp;it!&lt;/p&gt;
&lt;p&gt;My first step was to install &lt;a href="https://chocolatey.org/"&gt;Chocolatey&lt;/a&gt;. It&amp;#8217;s a great tool for installing &lt;a href="https://chocolatey.org/packages"&gt;all kinds of Windows software&lt;/a&gt; from the command-line, without going through a bunch of downloads and wizards. Think of it as NuGet for full-fledged apps. From the instructions on their site, all I had to do to install Chocolatey was run this&amp;nbsp;command: &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;C&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nl"&gt;\&lt;/span&gt;&lt;span class="c1"&gt;&amp;gt; @powershell -NoProfile -ExecutionPolicy unrestricted -Command &amp;quot;iex ((new-object net.webclient).DownloadString(&amp;#39;https://chocolatey.org/install.ps1&amp;#39;))&amp;quot; &amp;amp;&amp;amp; SET PATH=%PATH%;%systemdrive%\chocolatey\bin&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Now, we need the NuGet command-line tools. &lt;a href="https://chocolatey.org/packages/NuGet.CommandLine"&gt;Chocolatey has them&lt;/a&gt;, so we can run Chocolatey&amp;#8217;s &lt;code&gt;cinst&lt;/code&gt; command within&amp;nbsp;Powershell:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;cinst&lt;/span&gt; &lt;span class="n"&gt;NuGet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CommandLine&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Switch to your directory in which you store all of your code. For me, it&amp;#8217;s&amp;nbsp;this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$ENV:USERPROFILE&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Documents&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="n"&gt;Projects&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Make a new directory, with the name of your packages repository. I recommend this format, substituting CompanyName with your&amp;nbsp;own:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="n"&gt;CompanyName&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Packages&lt;/span&gt;
&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;CompanyName&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Packages&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Make another directory for the name of the package you want to create. For WinJS-related packages, I recommend this format, substituting PackageName for your&amp;nbsp;own:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="n"&gt;WinJS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PackageName&lt;/span&gt;
&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;WinJS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PackageName&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Make a &amp;#8216;Content&amp;#8217; directory. Anything you put in this folder will be copied to the target project&amp;#8217;s root&amp;nbsp;folder:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="n"&gt;Content&lt;/span&gt;
&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;Content&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Let&amp;#8217;s add a javascript file, and use the &lt;code&gt;Scripts&lt;/code&gt; folder as our&amp;nbsp;target:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="n"&gt;Scripts&lt;/span&gt;
&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;Scripts&lt;/span&gt;
&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;//my new javascript file&amp;quot;&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;myscript&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;js&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Now, we need to make the .nuspec file. Luckily, nuget will make a template for us if we start in the package&amp;#8217;s&amp;nbsp;directory:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="p"&gt;..\..\&lt;/span&gt;
&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;nuget&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Now, we&amp;#8217;ll have a Package.nuspec file. If you use &lt;a href="http://chocolatey.org/packages/SublimeText3"&gt;sublime text&lt;/a&gt;, and have the &lt;a href="http://chocolatey.org/packages/SublimeText3.PowershellAlias"&gt;command-line tools&lt;/a&gt; installed, you can launch it with this (otherwise, substitute &lt;code&gt;subl&lt;/code&gt; with &lt;code&gt;notepad&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;subl&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;Package&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nuspec&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;The default&amp;nbsp;contents:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;package&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;metadata&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;id&amp;gt;&lt;/span&gt;Package&lt;span class="nt"&gt;&amp;lt;/id&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.0.0&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;authors&amp;gt;&lt;/span&gt;your.user.name&lt;span class="nt"&gt;&amp;lt;/authors&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;owners&amp;gt;&lt;/span&gt;your.user.name&lt;span class="nt"&gt;&amp;lt;/owners&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;licenseUrl&amp;gt;&lt;/span&gt;http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE&lt;span class="nt"&gt;&amp;lt;/licenseUrl&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;projectUrl&amp;gt;&lt;/span&gt;http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE&lt;span class="nt"&gt;&amp;lt;/projectUrl&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;iconUrl&amp;gt;&lt;/span&gt;http://ICON_URL_HERE_OR_DELETE_THIS_LINE&lt;span class="nt"&gt;&amp;lt;/iconUrl&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;requireLicenseAcceptance&amp;gt;&lt;/span&gt;false&lt;span class="nt"&gt;&amp;lt;/requireLicenseAcceptance&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;Package description&lt;span class="nt"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;releaseNotes&amp;gt;&lt;/span&gt;Summary of changes made in this release of the package.&lt;span class="nt"&gt;&amp;lt;/releaseNotes&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;copyright&amp;gt;&lt;/span&gt;Copyright 2014&lt;span class="nt"&gt;&amp;lt;/copyright&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;tags&amp;gt;&lt;/span&gt;Tag1 Tag2&lt;span class="nt"&gt;&amp;lt;/tags&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;dependency&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;SampleDependency&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/metadata&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/package&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Change the details in that file to fit your needs, and then pack the whole thing when you&amp;#8217;re&amp;nbsp;ready:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;PS&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;nuget&lt;/span&gt; &lt;span class="n"&gt;pack&lt;/span&gt; &lt;span class="p"&gt;.\&lt;/span&gt;&lt;span class="n"&gt;Package&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nuspec&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Don&amp;#8217;t worry; it will give you a warning if you forget anything in the &lt;span class="caps"&gt;XML&lt;/span&gt;&amp;nbsp;metadata. &lt;/p&gt;
&lt;p&gt;Now, create a new project in Visual Studio, or open an existing project, in which you want to pull down the files in this package we just created. Then, follow &lt;a href="http://docs.nuget.org/docs/creating-packages/hosting-your-own-nuget-feeds"&gt;the instructions on docs.nuget.org for referencing a local package feed&lt;/a&gt;. One thing that I found was that adding a folder as a feed will automatically add packages within that folder&amp;#8217;s subfolders, so you can keep this directory organized however you&amp;nbsp;like. &lt;/p&gt;
&lt;p&gt;Hope this helps, let me know what your experience&amp;nbsp;is!&lt;/p&gt;</content></entry><entry><title>Apple and Tesla</title><link href="https://gavinsstuff.com/apple-and-tesla.html" rel="alternate"></link><published>2014-03-03T00:00:00-06:00</published><updated>2014-03-03T00:00:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2014-03-03:/apple-and-tesla.html</id><summary type="html">&lt;p&gt;I&amp;#8217;m coming around on&amp;nbsp;this.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tesla controls their entire &amp;#8220;stack,&amp;#8221; starting with the batteries, which they are the best at in the world, and which they are heavily investing in. Just like Apple controls all of their hardware, starting with the&amp;nbsp;processor.&lt;/li&gt;
&lt;li&gt;Tesla isn&amp;#8217;t trying to tackle the …&lt;/li&gt;&lt;/ol&gt;</summary><content type="html">&lt;p&gt;I&amp;#8217;m coming around on&amp;nbsp;this.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tesla controls their entire &amp;#8220;stack,&amp;#8221; starting with the batteries, which they are the best at in the world, and which they are heavily investing in. Just like Apple controls all of their hardware, starting with the&amp;nbsp;processor.&lt;/li&gt;
&lt;li&gt;Tesla isn&amp;#8217;t trying to tackle the low-end of the market. They are happy with being supply-constrained and at the high end, catering to the buyer with high standards and deep pockets. Given time, their hardware becomes more affordable, but still aggressively priced. Just like&amp;nbsp;Apple.&lt;/li&gt;
&lt;li&gt;Tesla has started curating their own ecosystem of chargers, a network only available to their customers, and much of the benefit is free once you&amp;#8217;ve bought the hardware (the car). Sounds just like the iTunes / App Store to&amp;nbsp;me.&lt;/li&gt;
&lt;li&gt;Tesla also writes all their own software for the cars, while making money off the hardware. The software is free, regularly-updated, and can change pretty much any of the behavior of the car, including its suspension height at highway speeds (&lt;a href="http://www.autoweek.com/article/20131119/CARNEWS/131119790"&gt;see sub-headline here&lt;/a&gt;). Sounds like every iOS device to&amp;nbsp;me.&lt;/li&gt;
&lt;li&gt;Every other car has a system of buttons and knobs, while the Tesla uses a giant touchscreen glass panel. Sounds like the iPhone compared to its competitors in 2007, which all used hardware-based keyboards and&amp;nbsp;styluses.&lt;/li&gt;
&lt;li&gt;Assembling commodity materials with a world-class design team to create something so advanced yet so obvious that it&amp;#8217;s a wonder why the competition is stuck with their complexities (solar electricity vs gas extracted from foreign crude oil) (aluminum and glass vs giant, complex mechanical hunks of iron requiring regular&amp;nbsp;maintenance).&lt;/li&gt;
&lt;li&gt;With self-driving cars, the auto industry is about to make a giant leap forward, just like the phone industry did with Apple as the&amp;nbsp;leader.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span class="caps"&gt;OK&lt;/span&gt;, so there are some similarities. Apple would only build cars, though, if it could help their entire product line. How would that&amp;nbsp;happen?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Most obviously, iOS in the car, running all of the best navigation and entertainment apps for the passengers. More ecosystem lock-in would mean their car customers would become iPhone and iPad&amp;nbsp;customers.&lt;/li&gt;
&lt;li&gt;Battery tech and materials used in the car would also be used in the phones, probably with a robust recycling system. Tim Cook likes green&amp;nbsp;things.&lt;/li&gt;
&lt;li&gt;When it comes to self-driving cars, deep integration with your iOS devices would let your robot car find you and pick you up at just the right&amp;nbsp;moment.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I guess the biggest mark against this would be the potential loss of focus for Apple. Like I said before, they take deep pride in having very few products, and doing them very well, and allowing their small executive team to stay tightly involved with all aspects of every product. The Tesla acquisition would have to make the company more focused for it to start making&amp;nbsp;sense.&lt;/p&gt;</content></entry><entry><title>The Next Microsoft</title><link href="https://gavinsstuff.com/the-next-microsoft.html" rel="alternate"></link><published>2014-02-07T00:00:00-06:00</published><updated>2014-02-07T00:00:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2014-02-07:/the-next-microsoft.html</id><summary type="html">&lt;p&gt;Now that Microsoft has a fresh &lt;span class="caps"&gt;CEO&lt;/span&gt;, let&amp;#8217;s think a little bit about the new possibilities this opens&amp;nbsp;up.&lt;/p&gt;
&lt;p&gt;Even though the &amp;#8220;new&amp;#8221; guy, Satya Nadella, is a 20-year veteran; he represents a meaningful committment to a fresh approach, since he is the only non-founder to be named &lt;span class="caps"&gt;CEO …&lt;/span&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Now that Microsoft has a fresh &lt;span class="caps"&gt;CEO&lt;/span&gt;, let&amp;#8217;s think a little bit about the new possibilities this opens&amp;nbsp;up.&lt;/p&gt;
&lt;p&gt;Even though the &amp;#8220;new&amp;#8221; guy, Satya Nadella, is a 20-year veteran; he represents a meaningful committment to a fresh approach, since he is the only non-founder to be named &lt;span class="caps"&gt;CEO&lt;/span&gt; since the beginning. Before now, you could argue that Gates and Ballmer have guided the company with the same authority and principles all along, which may have made its entry into new markets difficult for the company culture. I think it&amp;#8217;s evident by now that they aren&amp;#8217;t coming in 1st place anymore in the consumer space, with the failures of Windows Phone, Bing, and the Surface tablets. A new set of priorities, launched by a new &lt;span class="caps"&gt;CEO&lt;/span&gt;, could change the way Microsoft is perceived, both within and outside of the&amp;nbsp;company.&lt;/p&gt;
&lt;p&gt;It seems that one thing Microsoft &lt;em&gt;won&amp;#8217;t&lt;/em&gt; be doing anymore is listening to Steve Ballmer. From his sudden &amp;#8220;resignation&amp;#8221; during a restructuring, and his refusal to say exactly what his new role will be in the company (short-term or long-term), it seems obvious to me that he was pushed aside. The board, perhaps convinced by Gates, probably told him to set a date and promised dignity if he went gently into the&amp;nbsp;night. &lt;/p&gt;
&lt;p&gt;Also interesting is that Gates is giving up his role as chairman to take a position as advisor to Nadella, and he says he is doing this at Nadella&amp;#8217;s request. But we don&amp;#8217;t know what kind of a personality Nadella is, yet. I view the possibilities as a combination of these three&amp;nbsp;extremes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Gates will not actually be advising the new &lt;span class="caps"&gt;CO&lt;/span&gt;, but Nadella won&amp;#8217;t be making major changes anyway. The new Microsoft will be iterative and thoughtful, focusing on the enterprise first and slowly draw back its battle for consumer&amp;nbsp;mindshare.&lt;/li&gt;
&lt;li&gt;Gates has been itching to be back in a leadership role, and finally managed to get Ballmer out after witnessing his decade of mistakes from the sidelines. Gates picked Nadella because he will listen to his direction and be a fresh face for the company to rally around while he implements all of Gates&amp;#8217;&amp;nbsp;ideas.&lt;/li&gt;
&lt;li&gt;Nadella plans to make large, sweeping changes, and will rely on regular appearances from Gates to make employees and investors fall in line. Otherwise, the founder will stay out of the day-to-day and trust the new &lt;span class="caps"&gt;CEO&lt;/span&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The second option is the most fun to think about, but in reality, seems the most ridiculous to me. The Bill &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Melinda Gates Foundation is more than a full-time job, and one he clearly enjoys and sees as more important than anything Microsoft is doing. Besides, at the rate Gates is selling his own shares, he will soon no longer be the largest shareholder, reducing his influence even&amp;nbsp;more. &lt;/p&gt;
&lt;p&gt;We don&amp;#8217;t know much about the new &lt;span class="caps"&gt;CEO&lt;/span&gt;&amp;#8217;s style yet, but my guess is that the board wouldn&amp;#8217;t have allowed this arrangement if he plans on doing anything close to #3. Microsoft isn&amp;#8217;t a fast-moving company and a new &lt;span class="caps"&gt;CEO&lt;/span&gt; isn&amp;#8217;t going to change that&amp;nbsp;culture.&lt;/p&gt;
&lt;p&gt;That leaves the first scenario. Microsoft will continue soaring with their strengths, which right now is the Azure and enterprise services division. My guess is that the next major release of Windows under Satya Nadella will essentially be a hardware-accellerated portal into Azure, where everyone&amp;#8217;s information flows to and from their Microsoft account, and enterprises are married even deeper into Microsoft&amp;#8217;s&amp;nbsp;services.&lt;/p&gt;</content></entry><entry><title>Movie Critics Are the Worst</title><link href="https://gavinsstuff.com/movie-critics-are-the-worst.html" rel="alternate"></link><published>2014-01-06T00:00:00-06:00</published><updated>2014-01-06T00:00:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2014-01-06:/movie-critics-are-the-worst.html</id><summary type="html">&lt;p&gt;It’s tough to know if a new movie is going to be worth your time. The ritual of driving to a theater, paying for a ticket, finding a seat, and sitting through someone else’s story with a room full of strangers is a high demand, even with a …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It’s tough to know if a new movie is going to be worth your time. The ritual of driving to a theater, paying for a ticket, finding a seat, and sitting through someone else’s story with a room full of strangers is a high demand, even with a giant bowl of popcorn. If it&amp;#8217;s a brand-new movie, none of your friends can recommend it yet, so you&amp;#8217;re basing your choice on the trailers you saw on &lt;span class="caps"&gt;TV&lt;/span&gt;&amp;#8212;but these are shot and edited before the rest of the movie, and always have whole teams of marketers workshop it with test audiences, cutting and pasting until they achieve a polished, generically-pleasing spot designed to churn up interest from anyone with a set of&amp;nbsp;eyeballs.&lt;/p&gt;
&lt;p&gt;Thus, the hopeful planner might turn to a movie critic for advice. But to me,  reviewers typically fall into these two&amp;nbsp;categories:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Older men who watch movies as a&amp;nbsp;job&lt;/li&gt;
&lt;li&gt;Young men who are movie&amp;nbsp;geeks&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The seasoned, professional reviewer (#1 above) is only interested in two types of movies: generically audience-pleasing, all-around favorites, starting with the kids (i.e. anything from Pixar); and award-show fodder like &lt;em&gt;Lincoln&lt;/em&gt; or &lt;em&gt;The King&amp;#8217;s Speech&lt;/em&gt;. These movies are great for groups with kids or people who want to see a compelling performance by a famous actor. But what about the rest of us, who just want to go to a movie and have a good time, without having to think about it? Moviegoing is supposed to be a leisure activity, after&amp;nbsp;all.&lt;/p&gt;
&lt;p&gt;This might explain the sudden surge in comic book movies. When true to their roots as imaginative fantasy (for adults!), the latest Marvel and &lt;span class="caps"&gt;DC&lt;/span&gt; films can scare up huge crowds, starting with the most enthusiastic: the&amp;nbsp;geeks.&lt;/p&gt;
&lt;p&gt;Movie geeks, of course, come with their own movie geek reviewers, who come with their own set of personal standards. Left unchecked by an editor, they will either 100% love or 100% hate any comic book or nerd movie. See, for example, the reviews for &lt;em&gt;Star Trek Into Darkness&lt;/em&gt; and &lt;em&gt;The Dark Knight Rises&lt;/em&gt;. People loved it (both scored huge at the box office), experienced critics gave them high rankings, but the savvy young nerd fans hated it. While at the same time, this same group of snarky reviewers lifted up &lt;em&gt;Pacific Rim&lt;/em&gt;, a movie which scored lower on Rotten Tomatoes, and grossed much lower at the (domestic) box office. Both types of reviewers disliked &lt;em&gt;Man of Steel&lt;/em&gt;, yet it raked in huge piles of money and launched an even bigger sequel from the same&amp;nbsp;team.&lt;/p&gt;
&lt;p&gt;The problem with geek movie reviewers is expectations. The geeky reviewer is going to review the new &lt;em&gt;Star Trek&lt;/em&gt; as a &lt;em&gt;Star Trek&lt;/em&gt; fan, comparing it to the best from the series. Since &lt;em&gt;Into Darkness&lt;/em&gt; has so many parallels to &lt;em&gt;The Wrath Of Khan&lt;/em&gt;, this reviewer is going to measure it next to this movie, along with all of their conversations and endless fan theories about that movie. It was destined to fail among Star Trek geeks from the&amp;nbsp;start.  &lt;/p&gt;
&lt;p&gt;I would propose that the main problem is too much snark. (See also: this article’s title, which of course is meant to be ironic). These writers are always looking for something &lt;em&gt;wrong&lt;/em&gt; with things, it’s the very definition of the word that makes up their job description. The average moviegoer just wants to have a good time: find something pleasing for themselves and their date. When we leave a movie, most people don’t want to talk about what went wrong in the movie, that’s not very fun. But a much more fun discussion is reliving the best parts with our friends afterward. Critics are stacking a movie against all of the other ones they’ve seen that week, and writing about what sticks out. The rest of us, who watch movies less frequently, leave a movie with our eyes opened to the telling of a story in contrast with the rest of our&amp;nbsp;lives.&lt;/p&gt;
&lt;p&gt;I listen to Chris Hardwick’s podcast, &lt;em&gt;The Nerdist&lt;/em&gt;, and he refers to himself as a “lover of things.” It took me a while to get what he meant. But then I heard some hardcore reviewers at HitFix refer to Hardwick as a softball, and I got it: Chris Hardwick sees himself as the guy who is enthusiastic about pretty much any type of creativity, and how people film their expression of it. In other words, the &lt;em&gt;opposite&lt;/em&gt; of a critic. I think this mirrors my own experiences as well, and I suspect, many&amp;nbsp;others. &lt;/p&gt;
&lt;p&gt;Going to a movie theater should be a fun experience. Otherwise, why take the trouble to go to movies at&amp;nbsp;all?&lt;/p&gt;</content></entry><entry><title>Trust, and the NSA</title><link href="https://gavinsstuff.com/trust-and-the-nsa.html" rel="alternate"></link><published>2014-01-02T00:00:00-06:00</published><updated>2014-01-02T00:00:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2014-01-02:/trust-and-the-nsa.html</id><summary type="html">&lt;p&gt;Due to the Snowden revelations, we now know that anything stored in the cloud stands a pretty good chance of being duplicated on an &lt;span class="caps"&gt;NSA&lt;/span&gt; server. This includes email, SkyDrive / Google Documents files, and all of your phone texts and chat transcripts. They copy everything since this makes it easier …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Due to the Snowden revelations, we now know that anything stored in the cloud stands a pretty good chance of being duplicated on an &lt;span class="caps"&gt;NSA&lt;/span&gt; server. This includes email, SkyDrive / Google Documents files, and all of your phone texts and chat transcripts. They copy everything since this makes it easier for them to search later, across all services a target might employ. If the &lt;span class="caps"&gt;NSA&lt;/span&gt; needs to tap into Google&amp;#8217;s fiber lines to monitor one high-value target who uses Gmail, they may as well collect everything else that travels through that pipe, too, since they may need to run queries on an additional&amp;nbsp;target.&lt;/p&gt;
&lt;p&gt;Very soon, the White House is going to announce some compromises designed to appease the public outcry over this invasion of privacy. Here is what they need to effectively show &lt;span class="caps"&gt;U.S.&lt;/span&gt;&amp;nbsp;citizens:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;span class="caps"&gt;NSA&lt;/span&gt; does an important job fighting&amp;nbsp;terrorism. &lt;/li&gt;
&lt;li&gt;These tools are only used on&amp;nbsp;foreigners.&lt;/li&gt;
&lt;li&gt;You can trust the government to curb abuses, not that there have been&amp;nbsp;any.&lt;/li&gt;
&lt;li&gt;All we ask of you is your continued (involuntary and passive) participation in this secret&amp;nbsp;program.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In addition, the White House needs to use this moment to respond to the Snowden revelations in general, including future ones&amp;#8212;only a small fraction of the leaked documents have been published, and more damaging headlines are on their&amp;nbsp;way.&lt;/p&gt;
&lt;p&gt;If the administration doesn&amp;#8217;t communicate effectively in the coming weeks, the public&amp;#8217;s mistrust in the &lt;span class="caps"&gt;NSA&lt;/span&gt; will encroach on the rest of the federal&amp;nbsp;government.&lt;/p&gt;</content></entry><entry><title>AT&amp;T Is Paying Us To Switch To Verizon</title><link href="https://gavinsstuff.com/att-is-paying-us-to-switch-to-verizon.html" rel="alternate"></link><published>2012-09-19T17:24:00-05:00</published><updated>2012-09-19T17:24:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2012-09-19:/att-is-paying-us-to-switch-to-verizon.html</id><summary type="html">&lt;p&gt;I don&amp;#8217;t have many vices. But one thing I am guilty of is upgrading to
the latest iPhone every year. I&amp;#8217;ve owned the 4S, 4, &lt;span class="caps"&gt;3GS&lt;/span&gt;, 3G and even the
original phone. But there is always some sort of carrier penalty for
upgrading early, since they subsidize the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I don&amp;#8217;t have many vices. But one thing I am guilty of is upgrading to
the latest iPhone every year. I&amp;#8217;ve owned the 4S, 4, &lt;span class="caps"&gt;3GS&lt;/span&gt;, 3G and even the
original phone. But there is always some sort of carrier penalty for
upgrading early, since they subsidize the cost of the phone over the
duration of your&amp;nbsp;contract.&lt;/p&gt;
&lt;p&gt;This year, &lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T has determined my penalty for upgrading early is $450,
so the $299 &lt;span class="caps"&gt;32GB&lt;/span&gt; iPhone 5 will cost me a total of $750. Meainwhile,
the cost for me to just leave is $125. So the obvious thing to do is
pay the $125, then go to Verizon and pay $299,&amp;nbsp;right?&lt;/p&gt;
&lt;p&gt;I couldn&amp;#8217;t understand why they would structure it this way. I mean, in
economic terms, they are paying me $325 to switch carriers! So I called
up &lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T, waited on hold for 20 minutes, and asked the gentleman why, in
any universe, I would stay on &lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T,&amp;nbsp;when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Staying on &lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T would cost $750, while switching to Verizon would
    only cost $425 (to pay the penalty, and to buy a new&amp;nbsp;phone)&lt;/li&gt;
&lt;li&gt;I can keep the same number on&amp;nbsp;Verizon&lt;/li&gt;
&lt;li&gt;Verizon has much better 3G and &lt;span class="caps"&gt;LTE&lt;/span&gt; coverage in rural&amp;nbsp;areas&lt;/li&gt;
&lt;li&gt;In large cities, I&amp;#8217;ve found that &lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T coverage is actually worse: I
    couldn&amp;#8217;t make a phone call anywhere in downtown San Francisco last&amp;nbsp;year&lt;/li&gt;
&lt;li&gt;About 1/3 of my phone calls over 20 minutes are dropped on &lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T,
    even when I have five bars, am completely stationary and calling a
    land&amp;nbsp;line&lt;/li&gt;
&lt;li&gt;FaceTime works over cellular on Verizon, while &lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T is charging
    extra for&amp;nbsp;it&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hothardware.com/News/ATT-Clarifies-Data-Limitations-on-Unlimited-Data-Plans/"&gt;&lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T publicly and blatantly lies about their &amp;#8220;unlimited&amp;#8221; plan&lt;/a&gt;,
    so if you were grandfathered in with this, there&amp;#8217;s no point in
    staying on&amp;nbsp;it&lt;/li&gt;
&lt;li&gt;Internationally, &lt;a href="http://duncandavidson.com/blog/2012/09/which_iphone5"&gt;Verizon actually stacks up nicer than &lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I actively tried to help him. I wanted him to prove me wrong, to find a
flaw in my logic somewhere. He didn&amp;#8217;t have an answer, and politely said
that he couldn&amp;#8217;t &amp;#8220;mess with the numbers&amp;#8221; as long as I was buying an
iPhone. But he did mention that he could cut me a &lt;em&gt;sweet deal&lt;/em&gt; if I
wanted to switch to a Samsung Galaxy&amp;nbsp;S3.&lt;/p&gt;
&lt;p&gt;Yeah.&lt;/p&gt;</content></entry><entry><title>How to Scrape a Web Site with Node.js, JSDOM and jQuery</title><link href="https://gavinsstuff.com/how-to-scrape-a-web-site-with-node-js-jsdom-and-jquery.html" rel="alternate"></link><published>2012-07-05T18:35:00-05:00</published><updated>2012-07-05T18:35:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2012-07-05:/how-to-scrape-a-web-site-with-node-js-jsdom-and-jquery.html</id><summary type="html">&lt;p&gt;Scraping a web site has never been easier. &lt;a href="http://nodejs.org/"&gt;Node.js&lt;/a&gt; runs on any
platform, and if you&amp;#8217;re using Windows, you can install it with
&lt;a href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;Microsoft&amp;#8217;s Web Platform Installer&lt;/a&gt;. From there, it&amp;#8217;s as simple as
launching a command window and&amp;nbsp;typing:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;node myJavascriptFile.js
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;This executes the code …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Scraping a web site has never been easier. &lt;a href="http://nodejs.org/"&gt;Node.js&lt;/a&gt; runs on any
platform, and if you&amp;#8217;re using Windows, you can install it with
&lt;a href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;Microsoft&amp;#8217;s Web Platform Installer&lt;/a&gt;. From there, it&amp;#8217;s as simple as
launching a command window and&amp;nbsp;typing:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;node myJavascriptFile.js
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;This executes the code from the console, without the need for a browser.
Pretty cool, huh? Because it runs from the console, you can request all
sorts of web resources at once and log to any kind of database you&amp;nbsp;want.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s say you want to grab all the front page web links from reddit.com.
Here&amp;#8217;s the step-by-step process we would like our robot to&amp;nbsp;follow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Request the web&amp;nbsp;page&lt;/li&gt;
&lt;li&gt;Inject jQuery into the web&amp;nbsp;page&lt;/li&gt;
&lt;li&gt;Grab a bunch of stuff from the site using jQuery&amp;#8217;s syntax, since
    it&amp;#8217;s super&amp;nbsp;simple&lt;/li&gt;
&lt;li&gt;Log that stuff to a text&amp;nbsp;file&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With node and the jsdom package, we can do this in less than 20 lines of
code. First, open a command window, navigate to your working directory,
and use &lt;a href="http://npmjs.org/"&gt;npm&lt;/a&gt; to install &lt;a href="https://github.com/tmpvar/jsdom"&gt;jsdom&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;npm install jsdom
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Then, create a new file named ParseReddit.js and put this in&amp;nbsp;it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;jsdom&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;jsdom&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;jsdom&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="nx"&gt;html&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;http://reddit.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;scripts&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;http://code.jquery.com/jquery.js&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="nx"&gt;done&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="c1"&gt;// we&amp;#39;re interested in the title, subreddit, URL,&lt;/span&gt;
        &lt;span class="c1"&gt;// score, and the number of comments for each link&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;stories&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;#siteTable .thing&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;thing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a.title&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;thing&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
                &lt;span class="nx"&gt;subreddit&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a.subreddit&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;thing&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
                &lt;span class="nx"&gt;href&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a.title&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;thing&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;href&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="nx"&gt;score&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.score.unvoted&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;thing&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
                &lt;span class="nx"&gt;numComments&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a.comments&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;thing&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/^[0-9]*/&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
            &lt;span class="p"&gt;};&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;

        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stories&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;After that, just switch back to the command line and&amp;nbsp;run:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;node ParseReddit.js
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;You&amp;#8217;ll see a bunch of &lt;span class="caps"&gt;JSON&lt;/span&gt; show up in a few seconds, this is our parsed
home page. Pipe that into a file to recall it&amp;nbsp;later:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;node ParseReddit.js &amp;gt; stories.json
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;From there, you can look at it through &lt;a href="http://jsbeautifier.org/"&gt;&lt;span class="caps"&gt;JS&lt;/span&gt; Beautifier&lt;/a&gt; or open it in
Excel using &lt;a href="http://json-csv.com/"&gt;json-csv.com&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;The Code&amp;nbsp;Explained&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;jsdom.env&lt;/code&gt;&lt;/strong&gt;: This is the main function which takes care of most of
the legwork. It opens the specified &lt;span class="caps"&gt;URL&lt;/span&gt; and injects any scripts you
like, giving you a working &lt;span class="caps"&gt;DOM&lt;/span&gt;. Querying the &lt;span class="caps"&gt;DOM&lt;/span&gt; is the easiest way to
extract information from a web page, since jQuery was built for&amp;nbsp;this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The done() function&lt;/strong&gt;: This is fired when the web page is finished.
The window object is the exact same object you would use if you opened
the javascript console (Ctrl+Shift+I in Chrome, Cmd+Shift+I in Chrome
for&amp;nbsp;Mac).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$&lt;/strong&gt;: We&amp;#8217;re mapping window.$ to just $ to save us some work in this&amp;nbsp;function.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$.map&lt;/strong&gt;: This is a &lt;a href="http://api.jquery.com/jQuery.map/"&gt;super handy function&lt;/a&gt; for transforming one
array into another. I could have used &lt;code&gt;.each()&lt;/code&gt;, but using non-iterative
code is always better. In this case, we&amp;#8217;re translating each div with a
class of &amp;#8220;thing&amp;#8221; on the site into our custom array, which consists of
objects we are defining. These objects have &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;category&lt;/code&gt;, &lt;code&gt;href&lt;/code&gt;,
&lt;code&gt;score&lt;/code&gt; and &lt;code&gt;numComments&lt;/code&gt; properties, but really, we can use any
terminology we want. For each of those properties, we&amp;#8217;re querying inside
the &amp;#8220;thing&amp;#8221; div for more information (yes, reddit&amp;#8217;s &lt;span class="caps"&gt;HTML&lt;/span&gt; code really
calls each story a &amp;#8220;thing&amp;#8221;). In Chrome, I used the &amp;#8220;Inspect Element&amp;#8221;
feature to show the &lt;span class="caps"&gt;DOM&lt;/span&gt; and help me craft&amp;nbsp;these.&lt;/p&gt;
&lt;p&gt;Another hint: I plugged in the entire line after &amp;#8220;&lt;code&gt;var stories =&lt;/code&gt;&amp;#8221; into
Chrome&amp;#8217;s javascript console to help me quickly test these out. Chrome is
great about letting us inspect each of the returned objects to make sure
everything is working &lt;span class="caps"&gt;OK&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What&amp;#8217;s with that .match()? Oh no&amp;#8230; are you using a regular
expression?&lt;/strong&gt;: Yep. And I&amp;#8217;m really sorry. I&amp;#8217;m using it here to translate
&amp;#8220;29 comments&amp;#8221; into just &amp;#8220;29&amp;#8221;, since the &amp;#8220;comments&amp;#8221; is redundant. I
dropped an &amp;#8220;&lt;code&gt;|| 0&lt;/code&gt;&amp;#8221; on there since reddit just says &amp;#8220;comment&amp;#8221; if there
are no comments yet, so if there are no matches, &lt;code&gt;.match&lt;/code&gt; returns
&lt;code&gt;undefined&lt;/code&gt; and &amp;#8220; is used for the numComments&amp;nbsp;property.&lt;/p&gt;
&lt;h3&gt;A Word of&amp;nbsp;Caution&lt;/h3&gt;
&lt;p&gt;If you automate this to pull down more than a couple pages on a site,
you might get caught and your &lt;span class="caps"&gt;IP&lt;/span&gt; address could be blacklisted. Web sites
implicitly trust all users until they start pulling down more than their
fair share of resources, and bandwidth costs money. Don&amp;#8217;t be&amp;nbsp;mean.&lt;/p&gt;
&lt;h3&gt;Site&amp;nbsp;Owners&lt;/h3&gt;
&lt;p&gt;It&amp;#8217;s important to recognize the reality of scrapers. With the right
configuration, it&amp;#8217;s not hard to imagine a script similar to this one
pulling down the entire content of reddit by following every link. And
with a little more effort, a programmer could make a scraper look just
like regular traffic, by simply changing the user agent, carefully
timing the web requests, and spreading the requests across a rented
server farm. I don&amp;#8217;t think it would take a B-level programmer longer
than a weekend to pull down a site like&amp;nbsp;Amazon.&lt;/p&gt;
&lt;p&gt;In the past, I worked with a company which dedicated umpteen programmer
hours to preventing this. &lt;span class="caps"&gt;IP&lt;/span&gt; address limits, user agent sniffing and
even honeypots (hidden links which only scrapers could find, which would
immediately blacklist their &lt;span class="caps"&gt;IP&lt;/span&gt; address) were employed on a regular
basis, as well as CAPTCHAs at every turn. Regular users were incorrectly
identified as scrapers every day, and at one point, Google de-listed
them after their bot (which is just another type of scraper) triggered
their filters. Preventing scrapers is probably impossible and even
dangerous, because it defies the open nature of the web. Instead, try
and figure out the other party&amp;#8217;s motivations&amp;#8212;maybe a paid &lt;span class="caps"&gt;API&lt;/span&gt; or a
referral program could crack open a new revenue stream for&amp;nbsp;you.&lt;/p&gt;</content></entry><entry><title>How to Successfully Negotiate A New Car</title><link href="https://gavinsstuff.com/how-to-successfully-negotiate-a-new-car.html" rel="alternate"></link><published>2012-02-15T13:53:00-06:00</published><updated>2012-02-15T13:53:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2012-02-15:/how-to-successfully-negotiate-a-new-car.html</id><summary type="html">&lt;p&gt;Two weeks ago I test drove a beautiful new car and bought it the same
night, doing only about 20 minutes of research that very night. Oh, and
I saved $1300+ off the dealer&amp;#8217;s &amp;#8220;best price.&amp;#8221; Here&amp;#8217;s how I did&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stage One: Have a price range in …&lt;/strong&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Two weeks ago I test drove a beautiful new car and bought it the same
night, doing only about 20 minutes of research that very night. Oh, and
I saved $1300+ off the dealer&amp;#8217;s &amp;#8220;best price.&amp;#8221; Here&amp;#8217;s how I did&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stage One: Have a price range in mind.&lt;/strong&gt; You have to know what you
want to spend before you test drive anything. At this point you can
optionally start researching cars, I used Consumer Reports and bought a
3-month online subscription for&amp;nbsp;cheap.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step Two: Test drive.&lt;/strong&gt; Politely listen to the sales rep, but insist
on a test drive as early as possible on any or all the cars you want to
drive. Is the seat comfortable? Do you bang your head against the
ceiling? Will your family fit into the back seat? Does it merge onto the
interstate well? How about rear-end visibility? These things are
important. Don&amp;#8217;t let the rep influence you: you&amp;#8217;re testing how the
manufacturer built the car, not his ability to sell it to you. He didn&amp;#8217;t
design the&amp;nbsp;car.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step Three: Make a decision.&lt;/strong&gt; You now know exactly which car you
want, and it is roughly in line with your budget. Make it abundantly
clear to the sales rep that &lt;strong&gt;this is the car&lt;/strong&gt; and that you want the
&lt;strong&gt;lowest possible price&lt;/strong&gt;. Sometimes they will try to steer you toward
another model during negotiations. Don&amp;#8217;t fall for&amp;nbsp;this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step Four: Get their no-negotiation price.&lt;/strong&gt; Get him or her to call
over their sales manager by insisting that you want the &lt;strong&gt;absolute,
rock-bottom, lowest price&lt;/strong&gt;. Tell them that you &lt;strong&gt;don&amp;#8217;t want to
negotiate&lt;/strong&gt;. But you&amp;#8217;re going to negotiate because they will not give
you their lowest price right&amp;nbsp;away.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step Five: Negotiate.&lt;/strong&gt; Leave the dealership and go to TrueCar.com and
figure out where to start. You can also purchase a $14 price report
from ConsumerReports.com which will give you the TrueCar rates and a
whole lot more. $14 is nothing compared to the amount you will save
with this knowledge. Look at the rock-bottom rate on TrueCar and go back
to the dealership. Proudly tell their sales manager that you will pay
this price and &lt;span class="caps"&gt;NO&lt;/span&gt; &lt;span class="caps"&gt;MORE&lt;/span&gt;. That is the absolute maximum you can pay. If he
asks how you got that price, tell him. No reason to be anything but
completely honest about which price you&amp;nbsp;want.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A side note about politeness&lt;/strong&gt;: You need to be polite but insistent
this entire process. At the negotiating table, your politeness will cost
you actual money. Think about it this way: if I paid you $1300 to be
only 80% polite to a stranger for 20 minutes, would you do it? Of course
you would. This is your chance to make $1300 in one conversation. It&amp;#8217;s
called doing business: they are professionals and they will respect you
more if you give them blunt answers. They may try to make you feel bad
for this, as if they were some sort of charity you are funding. Don&amp;#8217;t
fall for&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step Six: Wait for them to come down in price.&lt;/strong&gt; Even though they said
they didn&amp;#8217;t, they will. Just sit there and stare at whatever piece of
paper they offered you with the price on it. This will make them
insecure if you do it&amp;nbsp;right.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step Seven: Walk out.&lt;/strong&gt; Seriously. Thank them for their time, state
that you are sorry that you didn&amp;#8217;t come to an agreement, and tell them
that you are happy to resume negotiating &amp;#8220;first thing tomorrow morning.&amp;#8221;
Get up and leave, shaking their hands and thanking them by name. There
is a good chance they will either agree to your rate right before you
head out the door, or at least give you a better offer. You can choose
whether you want to stay or continue the walk-out at that point, but
&lt;strong&gt;they are professionals and will know if you do a fake walk-out&lt;/strong&gt;. So
make sure you mean it or you will be embarrassed when they call your
bluff (I say this from&amp;nbsp;experience).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step Eight: Extras&lt;/strong&gt;. When the dealer comes down to a price that you
are happy with, tell them you will agree to pay $100 lower than that
price, &lt;strong&gt;but only if they throw in three oil changes&lt;/strong&gt;. For my last
purchase, I asked for three oil changes and an auto-dimming mirror (a
$450+ value in total) at this stage, and got it. You know your&amp;#8217;ve
reached a good price when they leave the room to &amp;#8220;check with their&amp;nbsp;boss.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Happy car&amp;nbsp;hunting!&lt;/p&gt;</content></entry><entry><title>Windows 8</title><link href="https://gavinsstuff.com/windows-8.html" rel="alternate"></link><published>2011-09-17T10:39:00-05:00</published><updated>2011-09-17T10:39:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2011-09-17:/windows-8.html</id><summary type="html">&lt;p&gt;I like what Microsoft is doing with Windows 8 and I look forward to
using it on a tablet. A lot of apps are going to come out for it and a
lot of developers will become very rich. The frameworks are easy,
flexible, and designed to make very consistent …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I like what Microsoft is doing with Windows 8 and I look forward to
using it on a tablet. A lot of apps are going to come out for it and a
lot of developers will become very rich. The frameworks are easy,
flexible, and designed to make very consistent apps which integrate very
well with what Microsoft has&amp;nbsp;invented.&lt;/p&gt;
&lt;p&gt;But two things come to&amp;nbsp;mind:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I don&amp;#8217;t think people will like using this for their desktop
    machines. No one wants to hold their arm up to touch their screen, a
    mouse is just better when you&amp;#8217;re at your desk. Your arm will get
    tired if you have to move it all around just to work with a
    spreadsheet or scroll a web page. The problem gets bigger when
    you&amp;#8217;re talking about 21 and 24-inch monitors. So, people will either
    use only the &amp;#8220;legacy&amp;#8221; interface for a long time or deal with the
    Metro interface with a mouse, which it wasn&amp;#8217;t designed&amp;nbsp;for.&lt;/li&gt;
&lt;li&gt;This stuff is all such a long ways from coming out. At least a year.
    Lots can change in a year—Google will no doubt start their copying
    machines and have a workable competitor by then (since their tablet
    strategy is pretty much doomed right now), and we have no idea what
    Apple has in the works because they only announce it when it&amp;#8217;s
    ready. When Windows 8 comes out maybe enough people will already
    have tablets that no one will want to&amp;nbsp;switch.&lt;/li&gt;
&lt;/ol&gt;</content></entry><entry><title>Can you build a better App Store?</title><link href="https://gavinsstuff.com/can-you-build-a-better-app-store.html" rel="alternate"></link><published>2011-08-31T18:19:00-05:00</published><updated>2011-08-31T18:19:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2011-08-31:/can-you-build-a-better-app-store.html</id><summary type="html">&lt;p&gt;The App Store has always confused&amp;nbsp;me.&lt;/p&gt;
&lt;p&gt;Browsing apps today seems more like browsing the yellow pages. For users
to get the best experience, they should be able to look around in a more
immersive interface, without so much text. You go to Foot Locker to try
on the shoes …&lt;/p&gt;</summary><content type="html">&lt;p&gt;The App Store has always confused&amp;nbsp;me.&lt;/p&gt;
&lt;p&gt;Browsing apps today seems more like browsing the yellow pages. For users
to get the best experience, they should be able to look around in a more
immersive interface, without so much text. You go to Foot Locker to try
on the shoes. People don&amp;#8217;t&amp;nbsp;read.&lt;/p&gt;
&lt;p&gt;Maybe we need a full-screen carousel of app interfaces, with videos,
demos and other interactive content, instead of lists and lists of icons
tucked inside a single &amp;#8220;App Store&amp;#8221; icon. Maybe the app store should be
integrated with Safari better. But one thing is for sure: for it to
succeed, we need to be able to install apps as easily as visiting a&amp;nbsp;website.&lt;/p&gt;
&lt;p&gt;Ripping the user out of the app store and making her type in a password,
and then making her wait for the entire app to download, and then tap
again before using it, is about the most disruptive experience possible.
That is no way to sell&amp;nbsp;shoes.&lt;/p&gt;</content></entry><entry><title>Local Newspaper Paywalls</title><link href="https://gavinsstuff.com/local-newspaper-paywalls.html" rel="alternate"></link><published>2011-07-01T08:45:00-05:00</published><updated>2011-07-01T08:45:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2011-07-01:/local-newspaper-paywalls.html</id><summary type="html">&lt;p&gt;Newspapers such as my local &lt;a href="http://omaha.com"&gt;Omaha World Herald&lt;/a&gt; are starting to
experiment with paywalls. The basic premise is that print subscribers
get free online access, while everyone else needs to pay $10/month for
access. This raises a number of questions and has been analyzed by&lt;a href="http://www.niemanlab.org/?s=paywall&amp;amp;post_type=encyclo&amp;amp;site_section=encyclo"&gt;lots
of smart people …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Newspapers such as my local &lt;a href="http://omaha.com"&gt;Omaha World Herald&lt;/a&gt; are starting to
experiment with paywalls. The basic premise is that print subscribers
get free online access, while everyone else needs to pay $10/month for
access. This raises a number of questions and has been analyzed by&lt;a href="http://www.niemanlab.org/?s=paywall&amp;amp;post_type=encyclo&amp;amp;site_section=encyclo"&gt;lots
of smart people&lt;/a&gt;. Here are the questions I have for&amp;nbsp;Omaha.com:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What does Omaha.com offer that I can&amp;#8217;t get on a combination of free
    sources, such as the &lt;span class="caps"&gt;AP&lt;/span&gt; (for national news), JournalStar.com (local
    news and commentary) and over-the-air &lt;span class="caps"&gt;TV&lt;/span&gt; (local/national news)?
    Bonus points if the answer doesn&amp;#8217;t include the words, &amp;#8220;Cindy
    Lange-Kubick.&amp;#8221; Local commentary is not a business model by&amp;nbsp;itself.&lt;/li&gt;
&lt;li&gt;How did you settle on $10/month? This invites the comparison to
    Netflix and Wall Street Journal, both of which charge around&amp;nbsp;$8/month.&lt;/li&gt;
&lt;li&gt;Will you distinguish your digital offering, or are you sticking to a
    &amp;#8220;print first&amp;#8221; approach for all articles? For example, do you plan on
    having interactive infographics, long-form articles, blogs, wikis,
    an enhanced taxonomy and social content to make use of the medium?
    Or will you be following the inverted pyramid, strictly enforcing
    article word counts, and tacking on comments/discussion as an&amp;nbsp;afterthought?&lt;/li&gt;
&lt;li&gt;Right now reading Omaha.com is a chore. The layout is not easy to
    navigate, there is a lot of scrolling to get to the narrow channel
    of content down the middle, and it is dominated by ads. How will
    this change when the paywall comes up? The type of readers who pay
    for content are the type who care about the experience of reading&amp;nbsp;it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The internet is changing the distribution methods for intellectual
property. In the same way that Apple is succeeding with iPod and iTunes,
Amazon is succeeding because they make it easy to purchase books and
pleasant to read them on their device. Maybe newspapers could learn a
thing or two from these&amp;nbsp;models.&lt;/p&gt;</content></entry><entry><title>What is Yahoo doing, exactly?</title><link href="https://gavinsstuff.com/what-is-yahoo-doing-exactly.html" rel="alternate"></link><published>2011-06-27T17:48:00-05:00</published><updated>2011-06-27T17:48:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2011-06-27:/what-is-yahoo-doing-exactly.html</id><summary type="html">&lt;p&gt;Yahoo has been flailing for quite a while now in the traffic numbers and
they are having problems focusing. Google stole their search and
advertising traffic, Facebook is de facto home of social connections,
both are stealing their best employees and no one is interested in
creating a personalized home …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Yahoo has been flailing for quite a while now in the traffic numbers and
they are having problems focusing. Google stole their search and
advertising traffic, Facebook is de facto home of social connections,
both are stealing their best employees and no one is interested in
creating a personalized home page&amp;nbsp;anymore.&lt;/p&gt;
&lt;p&gt;Yahoo mail is doing great, but who cares? You can get free email
anywhere, and people are using less and less of it now that Facebook is
getting serious about their Messages feature. Besides, putting ads next
to personal emails is not a respectable business model, and it just
won&amp;#8217;t work if your core business isn&amp;#8217;t&amp;nbsp;advertising.&lt;/p&gt;
&lt;p&gt;Why hasn&amp;#8217;t more attention been brought to Flickr, a service that many
people are happy to pay for? Does Yahoo&amp;#8217;s &lt;span class="caps"&gt;CEO&lt;/span&gt; even use it? (She seems
more like a Snapfish user to me.) People with iPhones have snatched up
Instagram in record time. Flickr for iPhone would be more popular if
they had actually put some effort into making it useful. Right now it&amp;#8217;s
great for browsing my own photos but that&amp;#8217;s about&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;How about Delicious? Just as Flickr used to be the de-facto photo
sharing site on the web, Delicious used to be the best way to store, tag
and share your bookmarks. But just like Flickr, they stopped innovating
five years ago and have festered while competitors (like Pinboard)
snatch up their most important&amp;nbsp;users.&lt;/p&gt;
&lt;p&gt;So what&amp;#8217;s left for Yahoo? I think their main users see it as a &amp;#8220;web
portal,&amp;#8221; a home page with a bunch of ever-changing links they can click
on when they get bored. Does the world need a web portal anymore? Do
people need their hand held or can they type in a &lt;span class="caps"&gt;URL&lt;/span&gt; all by themselves?
Isn&amp;#8217;t this why &lt;span class="caps"&gt;AOL&lt;/span&gt; went&amp;nbsp;under?&lt;/p&gt;</content></entry><entry><title>How To Do To-Do Lists</title><link href="https://gavinsstuff.com/how-to-do-to-do-lists.html" rel="alternate"></link><published>2011-02-04T23:13:00-06:00</published><updated>2011-02-04T23:13:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2011-02-04:/how-to-do-to-do-lists.html</id><summary type="html">&lt;p&gt;This is the simplest and, to me, the most effective way to manage
priorities. You already have this program installed and you already know
how to use it. It’s called Notepad, and it’s all you&amp;nbsp;need.&lt;/p&gt;
&lt;p&gt;Every time you discover something that needs to be on your to-do …&lt;/p&gt;</summary><content type="html">&lt;p&gt;This is the simplest and, to me, the most effective way to manage
priorities. You already have this program installed and you already know
how to use it. It’s called Notepad, and it’s all you&amp;nbsp;need.&lt;/p&gt;
&lt;p&gt;Every time you discover something that needs to be on your to-do list,
just enter it into a file (I call mine “todo.txt”), and make it easily
accessible and open all day. I like to use an outline format for this,
using spaces and tabs to indent and make things look nice. You can copy
and paste to reorder things and group your priorities by weekday in
order to set goals. When something is done, just delete&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;This seems ridiculously simple, there is really no trick to it. But
keeping it in a text file gives you complete control over the format,
rather than some random program. And keeping it separate from your inbox
allows you to set your own priorities, rather than listen to everyone
else’s. It’s all about finding what works best for&amp;nbsp;you.&lt;/p&gt;</content></entry><entry><title>How To Do Email</title><link href="https://gavinsstuff.com/how-to-do-email.html" rel="alternate"></link><published>2011-01-30T23:08:00-06:00</published><updated>2011-01-30T23:08:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2011-01-30:/how-to-do-email.html</id><summary type="html">&lt;p&gt;I get around 250 messages per day, and it’s tough to manage all of that
and still get other stuff done. Email, to me, is something that has to
be wresled with on a constant basis to keep it from taking over. Here’s
what I do to keep …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I get around 250 messages per day, and it’s tough to manage all of that
and still get other stuff done. Email, to me, is something that has to
be wresled with on a constant basis to keep it from taking over. Here’s
what I do to keep it from creeping into the rest of my&amp;nbsp;life:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ignore&lt;/strong&gt; as much of it as possible. Look back at last Tuesday’s
messages: how many of them were critical, or &lt;em&gt;really needed&lt;/em&gt; your
response? Lower your threshold for replying to messages, and shorten
your replies. If something requires extra communication that can’t be
done quickly, there’s an app for that: it’s called&amp;nbsp;“Phone.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Have a routine&lt;/strong&gt; for handling each one of your messages. Here’s&amp;nbsp;mine:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Can this be ignored? If so, move on to the next&amp;nbsp;message.&lt;/li&gt;
&lt;li&gt;Do I need to do something with this information? If so, flag the
    message and immediately move on to the next&amp;nbsp;one.&lt;/li&gt;
&lt;li&gt;Can I quickly reply to this message, to ask for clarification or to
    provide some critical information to somebody? If so, do it, but
    keep it to &lt;a href="http://three.sentenc.es/" title="three.sentenc.es"&gt;three sentences&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now that you’ve cleared out your unread messages, take a look at your
&lt;strong&gt;flagged messages&lt;/strong&gt;, and act on them accordingly. Each one of them
should be quickly handled by re-entering the info somewhere else, such&amp;nbsp;as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your to-do list (you have one of these, right?) (And don’t even try
    to tell me that your inbox is your to-do&amp;nbsp;list)&lt;/li&gt;
&lt;li&gt;Your&amp;nbsp;calendar&lt;/li&gt;
&lt;li&gt;Someone else’s inbox (in the case of forwarded&amp;nbsp;messages)&lt;/li&gt;
&lt;li&gt;Any other program where you file&amp;nbsp;information&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As soon as you have re-entered the flagged information somewhere useful,
un-flag&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Close it&lt;/strong&gt; for a full 60 minutes, and don’t check it again before that
60 minutes is up. Disable any “new message” popups and resist the urge
to crack it open “just to check in.” Constantly allowing for
interruptions is a sign of procrastination and you will not get anything
done. Of all the tips here, this is the one I am worst at, and probably
the most important. I’ve &lt;a href="http://gavinsstuff.com/2010/06/how-to-get-stuff-done-at-work/" title="How To Get Stuff Done at Work"&gt;written about this before&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Frequently Asked Questions&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lots of people ask me questions all day and expect immediate
repsonses! Whatever shall I do?&lt;/strong&gt;&lt;br&gt;
They are only doing this because you have trained them this way. You’re
going to have to do the opposite: encourage them to rely less on you for
quick responses by delaying or just not responding. Allowing a colleague
to figure something out on their own is a sign of respect and trust.
Your newfound productivity gain will speak for&amp;nbsp;itself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What if I have to write a long reply?&lt;/strong&gt;&lt;br&gt;
You probably don’t, but if you do, enter it on your to-do list, where
you are already managing all of your other&amp;nbsp;priorities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Do you ever delete messages?&lt;/strong&gt;&lt;br&gt;
No. Why should I have to delete messages? Storage is dirt cheap, my
time is much, much more expensive. It takes time to delete messages and
causes stress whenever I worry about whether or not I deleted something
I once thought was&amp;nbsp;unimportant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why don’t you use folders?&lt;/strong&gt;&lt;br&gt;
Folders are poison. It takes much longer to file and categorize things
than it does to simply search for them later, when I need them. Your
email program has a fast search function, right? Besides, if you’re
using your email program as a documentation tool, you’re doing it wrong.
Use &lt;a href="http://www.evernote.com/" title="Evernote"&gt;Evernote&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Microsoft_OneNote" title="OneNote"&gt;OneNote&lt;/a&gt;. My inbox has tens of thousands of
messages and I’m &lt;span class="caps"&gt;OK&lt;/span&gt; with that, the only ones I need to act on are the
ones I have flagged. You should be able to sort so that the flagged ones
are always at the&amp;nbsp;top.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why don’t you use your inbox as a to-do list?&lt;/strong&gt;&lt;br&gt;
My inbox is a raw stream if random thoughts that anybody in the world
can put in front of my eyes. Using it as a to-do list is a great way to
screw up my own priorities by mixing them in with everyone&amp;nbsp;else’s.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I flagged too many messages!&lt;/strong&gt;&lt;br&gt;
It’s time to process each and every one of them, like you should have
been doing all along. If this list gets too long, it becomes daunting
and you will be afraid of it, rendering it useless. Remember: your
flagged messages are not a to-do list. That’s what your to-do list is&amp;nbsp;for.&lt;/p&gt;</content></entry><entry><title>How To Get Stuff Done at Work</title><link href="https://gavinsstuff.com/how-to-get-stuff-done-at-work.html" rel="alternate"></link><published>2010-06-20T15:43:00-05:00</published><updated>2010-06-20T15:43:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2010-06-20:/how-to-get-stuff-done-at-work.html</id><summary type="html">&lt;p&gt;Entire blogs are dedicated to the idea that you shouldn&amp;#8217;t let technology
get in the way of actually doing work. The philosophy is to use software
as a tool, as a means to an end, not an end in&amp;nbsp;itself.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s say you&amp;#8217;re not interested in reading …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Entire blogs are dedicated to the idea that you shouldn&amp;#8217;t let technology
get in the way of actually doing work. The philosophy is to use software
as a tool, as a means to an end, not an end in&amp;nbsp;itself.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s say you&amp;#8217;re not interested in reading hundreds of productivity
blogs, which is decidedly not very productive. Let&amp;#8217;s also say that
you&amp;#8217;re ready to admit that you&amp;#8217;re an easily distracted human and have
tons of small interruptions throughout the day which prevent you from
getting anything meaningful done and leave you with a general feeling of
unsatisfaction at the end of the workday until you find yourself
consuming copious amounts of boxed wine and chocolate ice cream in front
of your &lt;span class="caps"&gt;DVR&lt;/span&gt; recording of Mad Chef and crying at the lack of purpose in
your professional life. Let&amp;#8217;s also say that you stumbled upon this blog
post and are interested in learning the details promised by its title,
but may be a little bit overwhelmed by the curious attention to detail
of this introduction. Well, you&amp;#8217;re in the right place - you&amp;#8217;ve made it
through the introduction, and may now proceed on to the actual&amp;nbsp;tips.&lt;/p&gt;
&lt;h2&gt;The Actual&amp;nbsp;Tips&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Remove all icons from the desktop, except for the Recycle Bin.
    Remove that, too, if you think you can remember where the &amp;#8220;delete&amp;#8221;
    key is on your keyboard whenever you want to delete a file. If
    you&amp;#8217;re on &lt;span class="caps"&gt;OSX&lt;/span&gt;, the Trash icon is already on the dock, so you&amp;#8217;re all
    set. Icons on the desktop are shiny little distractions that your
    brain has to process every time your desktop comes into view. Make
    it a blank slate and put up a pretty landscape or something in the
    background. There&amp;#8217;s a reason mechanics use a toolbox instead of
    leaving their tools strewn about the workshop&amp;nbsp;floor.&lt;/li&gt;
&lt;li&gt;Remove all icons from the Quick Launch bar / doc / taskbar, except
    for the 5-6 you actually use. If on a Mac, set the dock to auto-hide
    and put it on the side of the screen. Anything else can be launched
    very quickly by searching for it - just hit the Windows key (or
    Command-Space on &lt;span class="caps"&gt;OSX&lt;/span&gt;) and start&amp;nbsp;typing.&lt;/li&gt;
&lt;li&gt;Map a mouse button to your task switcher. If you have a 5-button
    mouse, this is super handy. On &lt;span class="caps"&gt;OSX&lt;/span&gt;, map it to Expose. Lots of times,
    a task will require several programs to be open, and it&amp;#8217;s important
    that they&amp;#8217;re all at your fingertips so you don&amp;#8217;t have to think about
    how to switch to&amp;nbsp;them.&lt;/li&gt;
&lt;li&gt;Remove all desktop widgets and notifications. Anything that pops up
    randomly as a quick &amp;#8220;For Your Information&amp;#8221; causes you to break your
    concentration from your current task, which is incredibly harmful to
    your productivity and work ethic. This includes all mail
    notifications (we&amp;#8217;ll get to that in a bit). The goal is to let &lt;em&gt;you&lt;/em&gt;
    control &lt;em&gt;your environment&lt;/em&gt;, not to let technology tell you what to&amp;nbsp;do.&lt;/li&gt;
&lt;li&gt;Turn off vibrate-only mode on your phone, so that it is either
    completely silent or ringing. There is no halfway point: if you are
    in a situation where you can&amp;#8217;t answer calls or respond to text
    messages, why even read them? And for pete&amp;#8217;s sake, turn off that
    little *ding* your phone makes when you get an email. Your friends
    and family will thank you for it. &lt;strong&gt;A true friend is one who never
    shows their cell phone in your&amp;nbsp;presence.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Hide your browser&amp;#8217;s bookmarks bar. Make the &amp;#8220;New Tab&amp;#8221; page load a
    blank page. Nothing distracts me more than wanting to go to a web
    site and being presented with a bunch of toys to click on instead
    (see: the default &amp;#8220;New Tab&amp;#8221; page on Chrome and&amp;nbsp;Safari).&lt;/li&gt;
&lt;li&gt;Close everything - everything - besides the one thing you&amp;#8217;re working
    on. Music? If you need it (you don&amp;#8217;t), choose an album, hit &amp;#8220;play&amp;#8221;,
    minimize iTunes and leave it alone. Everything you see on your
    screen should relate to the &lt;em&gt;one&lt;/em&gt; task at&amp;nbsp;hand.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Regarding&amp;nbsp;Email&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Close it down&lt;/strong&gt;. Close it down and hide the icon. Why? Because you
can&amp;#8217;t let everyone else run your day. Check it every two hours or so, on
your own schedule. That stuff people send you all the time can wait. I
work in a highly collaborative environment in which managers and
programmers need my input 15-20 times per day. Handling all of them in a
batch every few hours allows me to concentrate on my work at hand, and
they quickly learn not to expect immediate responses. You&amp;#8217;ll be
surprised at how often you won&amp;#8217;t actually be needed (the thing someone
emailed you about resolved itself), is no longer relevant, or was never
relevant (that thing never applied to you in the first place). Look
through all the email you sent yesterday, and see if there were any that
actually needed responses as fast as you sent them. By the way, I didn&amp;#8217;t
come up with this radical idea myself, and this is just the tip of the
iceberg. Find out more about it via the &amp;#8220;Inbox Zero&amp;#8221; link&amp;nbsp;below.&lt;/p&gt;
&lt;h2&gt;Three Rules to Work&amp;nbsp;By&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;There&amp;#8217;s no such thing as multitasking&lt;/strong&gt; (see link below). All
    those little distractions add up. You don&amp;#8217;t text and drive, do you?
    Then why do you answer emails while concentrating on a task? Handle
    them in batches and delegate everything you&amp;nbsp;can.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don&amp;#8217;t spend your day responding to everyone else&lt;/strong&gt;. Actually
    *do* something with your time. Build a legacy of work, not a
    mountain of email&amp;nbsp;responses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Take breaks&lt;/strong&gt;. No need to do a marathon, you&amp;#8217;ll get exhausted.
    Your brain probably needs to breathe a little bit, depending on how
    technical your profession is. That&amp;#8217;s what Twitter&amp;#8217;s for.&amp;nbsp;;)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Addendum: A few more tips on&amp;nbsp;email&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Respond in 3 sentences or less. If it&amp;#8217;s longer, stare at it for a
    while, then chop it up or delete it altogether. You&amp;#8217;ll get good
    after a while. &lt;strong&gt;I&amp;#8217;m terrible at this and need to try harder.&lt;/strong&gt;
    Writing a concise email is a sign of respect to the&amp;nbsp;recipient.&lt;/li&gt;
&lt;li&gt;After the initial introduction, don&amp;#8217;t put a salutation or manually
    sign your emails. No one cares. It helps to have an automatic
    signature, but keep it tiny, tiny, tiny (name, company, role, phone
    number) and make sure it isn&amp;#8217;t included in your responses. Every
    time someone&amp;#8217;s signature has more than two lines, I get distracted
    and forget everything your email was&amp;nbsp;about.&lt;/li&gt;
&lt;li&gt;To avoid typing out multiple long emails, schedule a quick meeting,
    just you and one other person, to handle whatever you&amp;#8217;re emailing
    about. Pick a time in the next couple of hours to meet, while it&amp;#8217;s
    still fresh in your minds. Of course, meetings are usually awful,
    too, but that&amp;#8217;s another&amp;nbsp;post.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style="padding-bottom:0px;margin-bottom:0px;"&gt;Links referenced by this&amp;nbsp;post:&lt;/h3&gt;
&lt;p&gt;(I put &amp;#8216;em at the bottom so you wouldn&amp;#8217;t be distracted while&amp;nbsp;reading)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://productiveblog.tumblr.com/"&gt;http://productiveblog.tumblr.com/&lt;/a&gt; - The Ultimate Productivity
    Blog. Worth a quick&amp;nbsp;read.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://inboxzero.com/inboxzero/"&gt;http://inboxzero.com/inboxzero/&lt;/a&gt; - I recommend watching the
    &amp;#8220;Internet Famous&amp;#8221; video featured&amp;nbsp;here.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lateralaction.com/articles/multitasking/"&gt;http://lateralaction.com/articles/multitasking/&lt;/a&gt; - There&amp;#8217;s No Such
    Thing as&amp;nbsp;Multitasking&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry><title>Why doesn’t the iPhone have flash?</title><link href="https://gavinsstuff.com/why-doesnt-the-iphone-have-flash.html" rel="alternate"></link><published>2010-03-01T05:24:00-06:00</published><updated>2010-03-01T05:24:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2010-03-01:/why-doesnt-the-iphone-have-flash.html</id><summary type="html">&lt;p&gt;&lt;em&gt;Why doesn&amp;#8217;t my iPhone have Flash?&lt;br&gt;
&lt;/em&gt; Why should&amp;nbsp;it?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Games! Videos! The Dr. Phil sound board!&lt;br&gt;
&lt;/em&gt; I hate to say it, but for every one of those, there&amp;#8217;s an app for&amp;nbsp;that.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span class="caps"&gt;OK&lt;/span&gt;, fine. But there&amp;#8217;s still lots of websites that use flash. Most of my
favorite …&lt;/em&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Why doesn&amp;#8217;t my iPhone have Flash?&lt;br&gt;
&lt;/em&gt; Why should&amp;nbsp;it?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Games! Videos! The Dr. Phil sound board!&lt;br&gt;
&lt;/em&gt; I hate to say it, but for every one of those, there&amp;#8217;s an app for&amp;nbsp;that.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span class="caps"&gt;OK&lt;/span&gt;, fine. But there&amp;#8217;s still lots of websites that use flash. Most of my
favorite local restaurants do! 99% of computers have it installed, and
Apple ships &lt;span class="caps"&gt;OS&lt;/span&gt; X with it!&lt;br&gt;
&lt;/em&gt; Flash is all over the place on computers. But mobile flash has several
challenges. For example, dragging the slider on a YouTube video with
your mouse is easy - hold down the button and move the mouse. But on an
iPhone, dragging your finger just scrolls one&amp;nbsp;direction.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;So what? Apple has solved problems like that before - look at what they
did with copy and paste! It&amp;#8217;s really good!&lt;br&gt;
&lt;/em&gt; Wow, you&amp;#8217;re really enthusiastic about this! You must be a fanboy. Why
don&amp;#8217;t you just marry Apple and get it over&amp;nbsp;with?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You&amp;#8217;re the one who has dedicated 40% of his posts so far to them.&lt;br&gt;
&lt;/em&gt; You&amp;#8217;re&amp;#8230; you&amp;#8217;re right. I&amp;#8217;ve come to a sad&amp;nbsp;realization.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Here&amp;#8217;s the thing: if Apple allowed flash, all sorts of new games would
be instantly usable, and it would be easier to make something in Flash
than learning Objective-C.&lt;br&gt;
&lt;/em&gt; Possibly. But look at the performance of Flash on the Mac - it&amp;#8217;s
terrible. If you&amp;#8217;re on YouTube, your &lt;span class="caps"&gt;CPU&lt;/span&gt; will skyrocket, your computer
gets really hot and your battery life suffers. Do you want that to
happen to your&amp;nbsp;phone?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But they&amp;#8217;re solving problems like that already! Android is getting
flash. Sounds like you&amp;#8217;re just making excuses for Apple. What do they
say when people ask about this?&lt;br&gt;
&lt;/em&gt; Not a whole lot. But I don&amp;#8217;t think their issue is with&amp;nbsp;performance.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;So if flash ran a lot better, Apple would still reject it?&lt;br&gt;
&lt;/em&gt; Yes. It&amp;#8217;s all about&amp;nbsp;control.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You mean, Steve Jobs wants to control Adobe?&lt;br&gt;
&lt;/em&gt; Not exactly. Apple wants to own the entire device from top to bottom.
They design the hardware, manufacture the chips and can change any part
of the software they want. They can reject any app for any reason just
to &amp;#8220;control the experience&amp;#8221;. They can fix any bugs that crop up, too.
Browser plugins like flash cause the vast majority of crashes on desktop
computers, and Microsoft and Apple can&amp;#8217;t do a whole lot about&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span class="caps"&gt;OK&lt;/span&gt;, interesting. That&amp;#8217;s why the iPhone is really stable and there
aren&amp;#8217;t any viruses affecting them - Apple has to approve every piece of
code that runs on it.&lt;br&gt;
&lt;/em&gt; Pretty much. Flash would allow you to write something and run it
without Apple&amp;#8217;s&amp;nbsp;blessing.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You can still write an app in javascript, though, and anyone can use it
without Apple&amp;#8217;s approval.&lt;br&gt;
&lt;/em&gt; You sure&amp;nbsp;can.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;So what happens when javascript gets as fast as flash?&lt;br&gt;
&lt;/em&gt; That will be pretty sweet! I&amp;#8217;ll bet the next iPhone will have a faster
processor, so this could happen really&amp;nbsp;soon.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You&amp;#8217;ll be able to run all kinds of useful webapps still, right? Like
you can now, only faster?&lt;br&gt;
&lt;/em&gt; Yeah, it will be neat. You&amp;#8217;ll see games and stuff that are webapps
instead of native apps, and you won&amp;#8217;t be able to tell the&amp;nbsp;difference.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But won&amp;#8217;t that &amp;#8220;hurt the experience&amp;#8221; if people no longer need the app
store? Apple can&amp;#8217;t control every website.&lt;br&gt;
&lt;/em&gt; That&amp;#8217;s&amp;#8230; a good point. I guess we&amp;#8217;ll wait and see on that&amp;nbsp;one.&lt;/p&gt;</content></entry><entry><title>The Apple Tablet</title><link href="https://gavinsstuff.com/the-apple-tablet.html" rel="alternate"></link><published>2010-01-24T15:52:00-06:00</published><updated>2010-01-24T15:52:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2010-01-24:/the-apple-tablet.html</id><summary type="html">&lt;p&gt;If there&amp;#8217;s one thing I enjoy it&amp;#8217;s thinking about future Apple products.
Not only is the company good at revolutionizing the tech industry with
every one of their recent ventures (iPod Touch, iPhone, new Macbooks),
but they are the only company able to launch a product with almost …&lt;/p&gt;</summary><content type="html">&lt;p&gt;If there&amp;#8217;s one thing I enjoy it&amp;#8217;s thinking about future Apple products.
Not only is the company good at revolutionizing the tech industry with
every one of their recent ventures (iPod Touch, iPhone, new Macbooks),
but they are the only company able to launch a product with almost
complete obscurity. I like to think of them as the anti-Google since
Google releases projects in early beta with great fanfare (see: Google
Wave). Maybe their secrecy explains their ability to launch products
above and beyond what the competition has to offer, but I digress -
analyzing this is above my pay grade. At the risk of grouping myself
with all the Apple rumor sites and being instantly and exhaustively
wrong this Wednesday when Apple releases a product completely different
from the one advertised here, I&amp;#8217;ll try my hand at predicting what we&amp;#8217;re
going to see from Cupertino in&amp;nbsp;2010.&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s a tablet computer, anyway? Didn&amp;#8217;t Microsoft try this a decade
ago? Also, aren&amp;#8217;t the iPhone / iPod Touch just mini-tablets? Lots of
people seem to think there&amp;#8217;s a space that needs to be filled between the
iPhone and &lt;span class="caps"&gt;PC&lt;/span&gt;, hence the &amp;#8220;netbook&amp;#8221; category. I don&amp;#8217;t understand these,
and I don&amp;#8217;t think Apple does, either - they&amp;#8217;re not going to release
something that does less than a laptop for less money.  So what would a
tablet do that a laptop, netbook or iPod Touch couldn&amp;#8217;t? And how is it
going to appeal to Jim Bob&amp;nbsp;McAmerica?&lt;/p&gt;
&lt;p&gt;We know a little bit about the hardware and software thanks to leaks
from companies Apple is working with - &lt;a href="http://pogue.blogs.nytimes.com/2010/01/23/the-apple-guessing-game/"&gt;David Pogue has a good
roundup&lt;/a&gt;. As far as the finer details of the software, though, we&amp;#8217;re
on our own. Apple has reportedly been trying to make The Tablet work for
years, with Steve Jobs noting that tablets weren&amp;#8217;t good for much besides
&amp;#8220;&lt;a href="http://www.nytimes.com/2009/10/05/technology/05tablet.html?_r=1"&gt;surfing the web in the bathroom&lt;/a&gt;&amp;#8220;. When you think about it, he&amp;#8217;s
right - tablets are too large for carrying in your pocket, but too small
to have a useful keyboard, so what&amp;#8217;s&amp;nbsp;left?&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s examine Apple&amp;#8217;s strengths. They revolutionized the music industry
by offering an online store that let you buy music by the track and do
whatever you wanted with it. Then they started doing the same with the
movie and television industry, offering &lt;span class="caps"&gt;TV&lt;/span&gt; shows and movie downloads.
Most recently, they launched the app store, a massive undertaking that
allows developers to profit from the &amp;#8220;walled garden&amp;#8221; of the iPhone
environment. Apple is a hardware company that partners with content
creators to bring services to consumers. After music, &lt;span class="caps"&gt;TV&lt;/span&gt;, movies and
applications, what&amp;#8217;s next in line in their strategy? I say newspapers.
Paying $0.25 per article makes sense to me, and I’d do it all the time
if given the chance. Buying a subscription to a paper, on the other
hand, locks you into them for all your news. Micropayments seems to be
the future, the papers just need a unifying strategy. Apple can give it
to&amp;nbsp;them.&lt;/p&gt;
&lt;p&gt;If The Tablet needs to offer more than a sophisticated e-reader. I’d
like to finally see handheld iChat. The iPod Touch and iPhone don’t do
it yet, probably because they don’t have front-facing cameras which
would be cool for video chatting, but maybe The Tablet&amp;nbsp;will.&lt;/p&gt;
&lt;p&gt;Beyond reading and chatting, the device is going to appeal to us because
it will have incredible video capabilities. I wouldn’t put it past Apple
to offer 720p streaming movie rentals on this thing. Watching a movie
while holding the screen doesn’t appeal to everybody, but it’s better
than watching it on your iPod, which people for some reason do all the&amp;nbsp;time.&lt;/p&gt;
&lt;p&gt;The core operating system has to be radically different from what we’ve
seen before. Apple changed &lt;span class="caps"&gt;OSX&lt;/span&gt; dramatically for the iPhone, they’ll do
it again for The Tablet. It’s going to be gesture-based to the extreme
since it will require your whole hand to operate. &lt;span class="caps"&gt;OSX&lt;/span&gt; on the desktop is
designed for the mouse, a single pixel which allows for clicking and
dragging. &lt;span class="caps"&gt;OSX&lt;/span&gt; on the iPhone is designed for one or two fingers, which
allow for some gestures (for things like zooming) but means the
touchable interface elements (buttons, etc) have to be “blown up”. &lt;span class="caps"&gt;OSX&lt;/span&gt;
on The Tablet will probably need you to use two, three or four fingers,
plus your thumb, to do anything but has much more space and better
hardware to work with than an iPhone. I think this alone is going to
make people want to give up their laptops for a tablet just because
using it will look&amp;nbsp;“fun”.&lt;/p&gt;
&lt;p&gt;One issue they’re going to have to work around is text input. On the
desktop, you’ve got a full keyboard, which is the most universal and
fastest way of getting data from your head onto your screen. On the
iPhone, you’ve got a virtual keyboard which is pretty good but I
wouldn’t want to type a novel on it. On the tablet, a virtual keyboard
seems less practical since most peoples’ thumbs can’t reach each other
on a 10” screen. It wouldn’t surprise me if Apple brought back the
stylus. Then again, no one thought the virtual keyboard on the iPhone
would work, so I’m ready to let them challenge my assumptions and
release something entirely different from what I’m&amp;nbsp;expecting.&lt;/p&gt;
&lt;p&gt;I know I’m missing a lot here, but I don’t think anyone can guess
accurately what exactly Apple is going to offer without inside
knowledge. In order to keep score, here’s a list of predictions I
outlined above - maybe after it’s announced I’ll do a follow-up and
we’ll see what I&amp;nbsp;missed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Tablet will offer newspaper content and micropayments via your
    iTunes&amp;nbsp;account&lt;/li&gt;
&lt;li&gt;It will have strong support for video&amp;nbsp;iChat&lt;/li&gt;
&lt;li&gt;720p streaming movie&amp;nbsp;rentals&lt;/li&gt;
&lt;li&gt;Text input will be with a stylus or split-screen keyboard (left-hand
    keys on the left side, right-hand keys on the right so your thumbs
    can reach&amp;nbsp;them)&lt;/li&gt;
&lt;li&gt;Gestures that require all 5 of your&amp;nbsp;fingers&lt;/li&gt;
&lt;li&gt;Trickle-down of new features from The Tablet to the iPhone’s
    operating system (new home screen, new theme, new multitouch
    gestures,&amp;nbsp;etc.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And here’s a list of things I &lt;strong&gt;don’t&lt;/strong&gt; expect The Tablet to&amp;nbsp;have:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Support for bluetooth&amp;nbsp;keyboards&lt;/li&gt;
&lt;li&gt;Support for non-apple-approved apps (I’m predicting everything must
    go through the App Store, and has Apple’s&amp;nbsp;approval)&lt;/li&gt;
&lt;li&gt;E-ink screen (definitely going to be&amp;nbsp;full-color)&lt;/li&gt;
&lt;li&gt;A virtual keyboard that requires both&amp;nbsp;hands&lt;/li&gt;
&lt;li&gt;A roaming data plan that has anything to do with &lt;span class="caps"&gt;AT&lt;/span&gt;&amp;amp;T&lt;/li&gt;
&lt;li&gt;A browser that has anything to do with Adobe&amp;nbsp;Flash&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Oh, and one more thing… if I was going to bet on a name for The Tablet,
it would be&amp;nbsp;“Canvas”.&lt;/p&gt;</content></entry><entry><title>2001: An HD Odyssey</title><link href="https://gavinsstuff.com/2001-an-hd-odyssey.html" rel="alternate"></link><published>2009-12-13T17:33:00-06:00</published><updated>2009-12-13T17:33:00-06:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2009-12-13:/2001-an-hd-odyssey.html</id><summary type="html">&lt;p&gt;I jumped on the Blu-Ray bandwagon this week
after noticing the nicely priced 2001: A Space Odyssey on Amazon (it’s
now &lt;a href="https://www.amazon.com/dp/B000Q66J1M?tag=gavsstu-20&amp;amp;camp=0&amp;amp;creative=0&amp;amp;linkCode=as4&amp;amp;creativeASIN=B000Q66J1M&amp;amp;adid=1QRK46ME0FQH2TXSVWWV&amp;amp;"&gt;$9.49&lt;/a&gt;). Besides being a deeply philosophical film, this movie
notable to me because of its attention to detail in all of the props
Stanley Kubrick used. In …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I jumped on the Blu-Ray bandwagon this week
after noticing the nicely priced 2001: A Space Odyssey on Amazon (it’s
now &lt;a href="https://www.amazon.com/dp/B000Q66J1M?tag=gavsstu-20&amp;amp;camp=0&amp;amp;creative=0&amp;amp;linkCode=as4&amp;amp;creativeASIN=B000Q66J1M&amp;amp;adid=1QRK46ME0FQH2TXSVWWV&amp;amp;"&gt;$9.49&lt;/a&gt;). Besides being a deeply philosophical film, this movie
notable to me because of its attention to detail in all of the props
Stanley Kubrick used. In this format, you can’t help but notice that the
screens, ships and space itself are as much characters in this movie as
the cast, and that the industrial design of the minute details is
remarkable for any movie, let alone one released in 1968. Each shot is
now finally devoid of flicker, warping and color degradation, exposing
us every lighting nuance, lens flare and screen reflection the eccentric
director intended, presenting us the story in its purest format&amp;nbsp;yet.&lt;/p&gt;
&lt;p&gt;One thing that I thought about in this latest viewing was the
de-humanization of the characters. The astronauts are reduced to infants
when it comes to sleeping (or hibernating) in cribs, eating a mush
similar to baby food, and learning to use a complicated restroom. But
when it comes to their actual duties, they simply carry out &lt;span class="caps"&gt;HAL&lt;/span&gt;’s orders
– he’s able to see and process everything, but needs Dave and Frank to
perform the physical work. After delegating the higher-level thinking to
&lt;span class="caps"&gt;HAL&lt;/span&gt;, does man become the tool? This is exemplified by Frank’s birthday
message from his parents: he shows no emotion at their enthusiastic
video greeting, yet the artificial &lt;span class="caps"&gt;HAL&lt;/span&gt; expresses good will to him.
What’s left for Frank to do in this environment if &lt;span class="caps"&gt;HAL&lt;/span&gt; imitates even his
feelings? Man’s tools now challenge man himself, making him nearly
obsolete. At the same time, &lt;span class="caps"&gt;HAL&lt;/span&gt; fails at reaching an entirely human
level of emotion, running berserk when asked by his makers to hide
information from the astronauts – contradicting his prerogative to be
“as reliable as&amp;nbsp;possible”.&lt;/p&gt;
&lt;p&gt;It’s sporadic realizations like this that make this movie so rewarding
on repeat&amp;nbsp;viewings.&lt;/p&gt;</content></entry><entry><title>Very Specific Dating Advice… for Men!</title><link href="https://gavinsstuff.com/very-specific-dating-advice-for-men.html" rel="alternate"></link><published>2009-10-30T18:12:00-05:00</published><updated>2009-10-30T18:12:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2009-10-30:/very-specific-dating-advice-for-men.html</id><summary type="html">&lt;p&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;: Men who are in their mid 20s, are
interested in women, are getting ready to host one in their home, and
normally spend their evenings playing my roommate&amp;#8217;s copy of a Batman
video game because I won&amp;#8217;t pay $40 for something I only use for one …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;strong&gt;Target Audience&lt;/strong&gt;: Men who are in their mid 20s, are
interested in women, are getting ready to host one in their home, and
normally spend their evenings playing my roommate&amp;#8217;s copy of a Batman
video game because I won&amp;#8217;t pay $40 for something I only use for one&amp;nbsp;week.&lt;/p&gt;
&lt;p&gt;Some tips for getting your house&amp;nbsp;ready:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Leave the toy helicopter in the drawer. Your man friends all
    probably find this fascinating, and will play with it for hours on
    end, but to the ladies, you may as well have pulled out your baby
    tooth&amp;nbsp;collection.&lt;/li&gt;
&lt;li&gt;If it is around Halloween, don&amp;#8217;t worry about cleaning up those
    cobwebs. They are &amp;#8220;good&amp;nbsp;decorations&amp;#8221;.&lt;/li&gt;
&lt;li&gt;15 minutes before she comes over, don&amp;#8217;t drop a wine glass, attempt
    to catch it, spear the webbing between your thumb and forefinger and
    get blood and broken glass all over your kitchen&amp;nbsp;floor.&lt;/li&gt;
&lt;li&gt;Clean well, but don&amp;#8217;t overdo it. There is &amp;#8220;clean&amp;#8221; and then there is
    &amp;#8220;creepy clean&amp;#8221;. Leave a few cheetos between the couch&amp;nbsp;cushions.&lt;/li&gt;
&lt;li&gt;Buy an acoustic guitar and leave it propped up against the couch,
    even if you don&amp;#8217;t play. This will make you look&amp;nbsp;sensitive.&lt;/li&gt;
&lt;li&gt;Leave a few books lying around with bookmarks in random places.
    Minimum of 300 pages, with no pictures on the cover. This will make
    you look educated. Leaving a chess set out, with a game &amp;#8220;in
    progress&amp;#8221;, would have a similar&amp;nbsp;effect.&lt;/li&gt;
&lt;li&gt;Hang a map of a foreign country no one cares about on your wall. For
    example, Nepal. Then, memorize one fact about it (&amp;#8220;Last year, they
    became a republic after 239 years of monarchy&amp;#8221;). Practice staring
    longingly at it with a drink in your hand, as if you are reminiscing
    about an extended vacation there. This will make you look&amp;nbsp;cultured.&lt;/li&gt;
&lt;li&gt;Have an obscure wine on hand. Complement its &amp;#8220;rustic, venison-like
    piercing&amp;#8221; with &amp;#8220;flashes of boysenberry&amp;#8221;. This will make you look
    refined. Follow this up with a comment on sports so that you don&amp;#8217;t
    appear&amp;nbsp;snobby.&lt;/li&gt;
&lt;li&gt;Try to limit the time spent discussing your latest&amp;nbsp;tweets.&lt;/li&gt;
&lt;li&gt;Keep the discussion away from any conspiracy theories you might
    subscribe to. For one night, pretend the moon landings were&amp;nbsp;real.&lt;/li&gt;
&lt;/ul&gt;</content></entry><entry><title>There’s Nothing Routine About ‘Paranormal Activity’</title><link href="https://gavinsstuff.com/theres-nothing-routine-about-paranormal-activity.html" rel="alternate"></link><published>2009-10-04T23:03:00-05:00</published><updated>2009-10-04T23:03:00-05:00</updated><author><name>Gavin Koehler</name></author><id>tag:gavinsstuff.com,2009-10-04:/theres-nothing-routine-about-paranormal-activity.html</id><summary type="html">&lt;p&gt;This weekend I had the chance to catch &lt;em&gt;Paranormal Activity&lt;/em&gt;, and since
it has only appeared in 14 theaters and I enjoyed it, I had better do my
part to generate some&amp;nbsp;buzz.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not going to give away the plot, and for full effect, you shouldn&amp;#8217;t
read …&lt;/p&gt;</summary><content type="html">&lt;p&gt;This weekend I had the chance to catch &lt;em&gt;Paranormal Activity&lt;/em&gt;, and since
it has only appeared in 14 theaters and I enjoyed it, I had better do my
part to generate some&amp;nbsp;buzz.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not going to give away the plot, and for full effect, you shouldn&amp;#8217;t
read any review that does. This film is about surprises - not plot
twists, since there isn&amp;#8217;t a plot in the traditional sense (nor would you
want there to be), but elements in the timeline which you somehow find
plausible in a terrifying way. I was in a theater full of skeptical
college students and movie buffs, and not one of them disrupted the
show, whether it be by shouting out an inconsistency (tends to happen at
horror movies) or even strolling out for a bathroom break. It&amp;#8217;s subtle
and transfixing and the polar opposite of whatever &lt;span class="caps"&gt;ADD&lt;/span&gt;-infused
abomination the Rob Zombie remake factory is churning out this&amp;nbsp;year.&lt;/p&gt;
&lt;p&gt;This is a unique breed of film, and it has to be, because of its
lower-five-figure budget. And it’s nothing like &lt;em&gt;Blair Witch&lt;/em&gt;, if that’s
what you’re thinking – the camera isn’t shaky, and the events unfold
entirely inside the confines of a modern home, starring the
sophisticated and rational-thinking couple Mikah and Katie. Katie makes
bead necklaces while Mikah knows his way around a computer as a
day-trader who just brought a camera home. They don&amp;#8217;t follow a script
and are often times hilarious in their banter, with relatable fears,
reactions, curiosities and vigilance. They’re just two people poking the
camera around the house to prove or disprove Katie’s vivid ideas on what
has been bothering her since her last home mysteriously burned down.
They&amp;#8217;re not trapped, but you&amp;#8217;ll eventually feel that way as they fumble
in the dark over and over only to be horrified after they find a light&amp;nbsp;switch.&lt;/p&gt;
&lt;p&gt;After a few escalating rounds of this, you&amp;#8217;ll be dreading the next
segment of the story, which is bookended by time-lapse footage of them
sleeping. When it’s interrupted by a freakish incident, you’re as
unglued out as they are and you’ll beg for the them to turn the shut the
door, call the police or even leave - all of which they consider at one
point or another before realizing it might be&amp;nbsp;hopeless.&lt;/p&gt;
&lt;p&gt;If you haven’t caught &lt;a href="http://www.easternecho.com/index.php/article/2009/10/paranormal_activity_a_genuinely_terrifying_horror_film"&gt;some of the buzz&lt;/a&gt;, I’ll just warn you right
here: expect to be scared out of your pants as the rest of it unfolds.
No one even spoke as we left the theater. My advice? Don’t come home to
a dark house after seeing this. Leave the lights on beforehand, or spend
the night at the nearest Denny’s. At least there, the night demons are&amp;nbsp;predictable.&lt;/p&gt;</content></entry></feed>