<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>amdavidson.com</title>
        <description>amdavidson.com is a simple blog run by Andrew Davidson, a manufacturing engineer with a blogging habit.</description>
        <link>http://amdavidson.com/</link>
        
        
        <item>
            <title>Exporting to Wallpaper from Lightroom</title>
            <link>http://amdavidson.com/2012/04/exporting-to-wallpaper-from-lightroom</link>
            <guid>http://amdavidson.com/2012/04/exporting-to-wallpaper-from-lightroom</guid>
            <pubDate>Tue, 24 Apr 2012 02:33:41 -0000</pubDate>
            <description>
                <p>I have recently switched from Aperture to Lightroom and missed the ability to export straight from my photo tool to the desktop of my Mac.</p>

<p>If you're in the same boat I've figured out a way to get the desired feature wedged into Lightroom.</p>

<p>Create a folder that will store your exported images. Mine is located at <code>~/Pictures/Wallpapers</code>.</p>

<p>Create a post-processing filter that will take the exported file and set it as the wallpaper. Open AppleScript Editor and use the following code to create an application in <code>~/Library/Application Support/Adobe/Lightroom/Export Actions</code> mine is named <code>wallpaper</code>:</p>

<div class="codehilite"><pre><code><span class="k">on</span> <span class="nb">open</span> <span class="nv">theObjects</span>
    <span class="k">repeat</span> <span class="nv">with</span> <span class="nv">theObject</span> <span class="k">in</span> <span class="nv">theObjects</span>
        <span class="k">tell</span> <span class="nb">application</span> <span class="s2">&quot;Finder&quot;</span>
            <span class="k">set</span> <span class="nv">desktop</span> <span class="nv">picture</span> <span class="k">to</span> <span class="p">{</span><span class="nv">theObject</span> <span class="k">as </span><span class="nc">string</span><span class="p">}</span>
        <span class="k">end</span> <span class="k">tell</span>
    <span class="k">end</span> <span class="k">repeat</span>
<span class="k">end</span> <span class="nb">open</span>
</code></pre></div>

<p>Create a Lightroom Export preset. This is going to be customized based on your setup, but some things I did to make mine work better are:</p>

<ol>
<li>Export to a "Specific Folder", the one you created above.</li>
<li>I chose to overwrite without warning so that the files will be replaced if I edit and re-export them.</li>
<li>Resize to fit "Width &amp; Height" set W and H to your display size.</li>
<li>For Post-Processing choose your plugin, <code>wallpaper</code>.</li>
</ol>

<p>Enjoy!</p>

            </description>
        </item>
    
        <item>
            <title>Relaxing</title>
            <link>http://amdavidson.com/2012/04/relaxing</link>
            <guid>http://amdavidson.com/2012/04/relaxing</guid>
            <pubDate>Sat, 21 Apr 2012 18:45:31 -0000</pubDate>
            <description>
                <p style="text-align:center;"><a href="/images/posts/ccc1afae-5b40-4d4e-9feb-81fac73a8f3d.jpg"><img class="scale-with-grid" src="/images/posts/ccc1afae-5b40-4d4e-9feb-81fac73a8f3d_z.jpg" /></a></p>

            </description>
        </item>
    
        <item>
            <title>Almost Summer</title>
            <link>http://amdavidson.com/2012/04/almost-summer</link>
            <guid>http://amdavidson.com/2012/04/almost-summer</guid>
            <pubDate>Sat, 21 Apr 2012 02:02:30 -0000</pubDate>
            <description>
                <p style="text-align:center;"><a href="/images/posts/29b15481-2f50-430c-b0c2-235ba5cc8fe1.jpg"><img class="scale-with-grid" src="/images/posts/29b15481-2f50-430c-b0c2-235ba5cc8fe1_z.jpg" /></a></p>

<p>This is a BBQ kind of night. </p>

            </description>
        </item>
    
        <item>
            <title>Sparkle Shoes</title>
            <link>http://amdavidson.com/2012/04/sparkle-shoes</link>
            <guid>http://amdavidson.com/2012/04/sparkle-shoes</guid>
            <pubDate>Sat, 14 Apr 2012 01:40:50 -0000</pubDate>
            <description>
                <p style="text-align:center;"><a href="/images/posts/a008102b-dc64-46c7-8202-cf12f538d6e7.jpg"><img class="scale-with-grid" src="/images/posts/a008102b-dc64-46c7-8202-cf12f538d6e7_z.jpg" /></a></p>

            </description>
        </item>
    
        <item>
            <title>Chicks</title>
            <link>http://amdavidson.com/2012/04/chicks</link>
            <guid>http://amdavidson.com/2012/04/chicks</guid>
            <pubDate>Sat, 07 Apr 2012 18:55:37 -0000</pubDate>
            <description>
                <p style="text-align:center;"><a href="/images/posts/8df1ecd1-6618-4464-a945-a0b226f4a5e4.jpg"><img class="scale-with-grid" src="/images/posts/8df1ecd1-6618-4464-a945-a0b226f4a5e4_z.jpg" /></a></p>

<p>This one is named "Car Alarm".</p>

            </description>
        </item>
    
        <item>
            <title>Cliff Edges are Dangerous</title>
            <link>http://amdavidson.com/2012/04/cliff-edges-are-dangerous</link>
            <guid>http://amdavidson.com/2012/04/cliff-edges-are-dangerous</guid>
            <pubDate>Mon, 02 Apr 2012 19:46:00 -0000</pubDate>
            <description>
                <p style="text-align:center;"><a href="/images/posts/4614b8f3-84bf-44ec-9903-8ccebe50c4e9.jpg"><img class="scale-with-grid" src="/images/posts/4614b8f3-84bf-44ec-9903-8ccebe50c4e9_z.jpg" /></a></p>

            </description>
        </item>
    
        <item>
            <title>Boardwalk</title>
            <link>http://amdavidson.com/2012/04/boardwalk</link>
            <guid>http://amdavidson.com/2012/04/boardwalk</guid>
            <pubDate>Mon, 02 Apr 2012 03:13:46 -0000</pubDate>
            <description>
                <p style="text-align:center;"><a href="/images/posts/15626ba5-3554-4c15-9dca-273431aebd86.jpg"><img class="scale-with-grid" src="/images/posts/15626ba5-3554-4c15-9dca-273431aebd86_z.jpg" /></a></p>

<p style="text-align:center;"><a href="/images/posts/1af6c7e1-7c16-42ea-a2f9-5a53f2ad9082.jpg"><img class="scale-with-grid" src="/images/posts/1af6c7e1-7c16-42ea-a2f9-5a53f2ad9082_z.jpg" /></a></p>

<p style="text-align:center;"><a href="/images/posts/1ef3e421-a6c8-4e2a-9728-e5929dcfd95f.jpg"><img class="scale-with-grid" src="/images/posts/1ef3e421-a6c8-4e2a-9728-e5929dcfd95f_z.jpg" /></a></p>

            </description>
        </item>
    
        <item>
            <title>Lillies</title>
            <link>http://amdavidson.com/2012/03/lillies</link>
            <guid>http://amdavidson.com/2012/03/lillies</guid>
            <pubDate>Mon, 26 Mar 2012 19:50:08 -0000</pubDate>
            <description>
                <p style="text-align:center;"><a href="/images/posts/b3f57665-302d-4bbe-af16-43a9727b2bbe.jpg"><img class="scale-with-grid" src="/images/posts/b3f57665-302d-4bbe-af16-43a9727b2bbe_z.jpg" /></a></p>

            </description>
        </item>
    
        <item>
            <title>Scarlett's Fourth</title>
            <link>http://amdavidson.com/2012/03/scarletts-fourth</link>
            <guid>http://amdavidson.com/2012/03/scarletts-fourth</guid>
            <pubDate>Thu, 15 Mar 2012 05:15:08 -0000</pubDate>
            <description>
                <p style="text-align:center;"><a href="/images/posts/0d9be6f1-102a-4d60-9b77-8ff8cb01d870.jpg"><img class="scale-with-grid" src="/images/posts/0d9be6f1-102a-4d60-9b77-8ff8cb01d870_z.jpg" /></a></p>

<p>I took a <a href="/galleries/scarlettsfourth/">few pictures</a> at Scarlett's 
fourth birthday party, but I think most of the ones in the gallery ended 
up being Naomi's shots including the one above.</p>

            </description>
        </item>
    
        <item>
            <title>Speedy "Dynamic" Elements on a Static Page</title>
            <link>http://amdavidson.com/2012/02/speedy-dynamic-elements-on-a-static-page</link>
            <guid>http://amdavidson.com/2012/02/speedy-dynamic-elements-on-a-static-page</guid>
            <pubDate>Wed, 29 Feb 2012 17:23:31 -0000</pubDate>
            <description>
                <p>Moving to a <a href="https://github.com/amdavidson/crunch">custom static site 
generator</a> killed my <a href="/2010/10/server-side-dynamic-elements">old 
solution</a> for 
<a href="http://twitter.com/amdavidson">Twitter</a> and 
<a href="http://pinboard.in/u:amdavidson">Pinboard</a> integration.</p>

<p>To mitigate this I came up with the following <code>javascript</code> that would 
pull the information from publicly accessible <code>JSON</code> feeds and integrate 
it on the client side:</p>

<div class="codehilite"><pre><code><span class="nx">$</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nx">ready</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>

     <span class="c1">// using jquery built in get json method with twitter api, return only one result</span>
     <span class="nx">$</span><span class="p">.</span><span class="nx">getJSON</span><span class="p">(</span><span class="s1">&#39;http://api.twitter.com/1/statuses/user_timeline.json?screen_name=amdavidson&amp;count=1&amp;callback=?&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>      <span class="p">{{</span>

         <span class="c1">// get the date and make it pretty</span>
         <span class="kd">var</span> <span class="nx">date</span> <span class="o">=</span> <span class="nx">Zepto</span><span class="p">.</span><span class="nx">timeago</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">created_at</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mi">11</span><span class="p">)</span> <span class="o">+</span>
           <span class="nx">data</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">created_at</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="mi">30</span><span class="p">)</span> <span class="o">+</span>
           <span class="nx">data</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">created_at</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">19</span><span class="p">)</span> <span class="o">+</span>
           <span class="nx">data</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">created_at</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">19</span><span class="p">,</span><span class="mi">25</span><span class="p">));</span>

         <span class="c1">// result returned</span>
         <span class="kd">var</span> <span class="nx">tweet</span> <span class="o">=</span> <span class="nx">data</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">;</span>

         <span class="c1">// process links and @replies</span>
         <span class="nx">tweet</span> <span class="o">=</span> <span class="nx">tweet</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/(\b(https?):\/\/[-A-Z0-9+&amp;@#\/%?=~_|!:,.;]*[-A-Z0-9+&amp;@#\/%=~_|])/ig</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
             <span class="k">return</span> <span class="s1">&#39;&lt;a href=&quot;&#39;</span><span class="o">+</span><span class="nx">url</span><span class="o">+</span><span class="s1">&#39;&quot;&gt;&#39;</span><span class="o">+</span><span class="nx">url</span><span class="o">+</span><span class="s1">&#39;&lt;/a&gt;&#39;</span><span class="p">;</span>
         <span class="p">}).</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/@([_a-z0-9]+)/ig</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">reply</span><span class="p">)</span> <span class="p">{</span>
             <span class="k">return</span>  <span class="nx">reply</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="s1">&#39;&lt;a href=&quot;http://twitter.com/&#39;</span><span class="o">+</span><span class="nx">reply</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="s1">&#39;&quot;&gt;&#39;</span><span class="o">+</span><span class="nx">reply</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="s1">&#39;&lt;/a&gt;&#39;</span><span class="p">;</span>
         <span class="p">});</span>

         <span class="c1">// output the result</span>
         <span class="nx">$</span><span class="p">(</span><span class="s2">&quot;#tweet&quot;</span><span class="p">).</span><span class="nx">html</span><span class="p">(</span><span class="s1">&#39;&quot;&#39;</span><span class="o">+</span><span class="nx">tweet</span><span class="o">+</span><span class="s1">&#39;&quot;&#39;</span><span class="p">);</span>
         <span class="nx">$</span><span class="p">(</span><span class="s2">&quot;#tweet-date&quot;</span><span class="p">).</span><span class="nx">html</span><span class="p">(</span><span class="nx">date</span><span class="p">);</span>

         <span class="c1">// display the twitter block</span>
         <span class="nx">$</span><span class="p">(</span><span class="s2">&quot;#twitter&quot;</span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="s1">&#39;display&#39;</span><span class="p">,</span> <span class="s1">&#39;block&#39;</span><span class="p">);</span>
     <span class="p">});</span>

    <span class="c1">// using jquery built in get json method with pinboard api,</span>
   <span class="nx">$</span><span class="p">.</span><span class="nx">getJSON</span><span class="p">(</span><span class="s1">&#39;http://feeds.pinboard.in/json/v1/u:amdavidson?format=json&amp;cb=?&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>      <span class="p">{</span>

         <span class="c1">// get the title.</span>
         <span class="nx">title</span> <span class="o">=</span> <span class="nx">data</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">d</span><span class="p">;</span>

         <span class="c1">// get the url.</span>
         <span class="nx">url</span> <span class="o">=</span> <span class="nx">data</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">u</span><span class="p">;</span>

         <span class="c1">// get the description.</span>
         <span class="nx">description</span> <span class="o">=</span> <span class="nx">data</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">n</span><span class="p">;</span>

         <span class="c1">// get the date and make it pretty.</span>
         <span class="nx">date</span> <span class="o">=</span> <span class="nx">Zepto</span><span class="p">.</span><span class="nx">timeago</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">dt</span><span class="p">);</span>

         <span class="c1">// output the result</span>
         <span class="nx">$</span><span class="p">(</span><span class="s2">&quot;#pin-title&quot;</span><span class="p">).</span><span class="nx">html</span><span class="p">(</span><span class="nx">title</span><span class="p">);</span>
         <span class="nx">$</span><span class="p">(</span><span class="s2">&quot;#pin-description&quot;</span><span class="p">).</span><span class="nx">html</span><span class="p">(</span><span class="nx">description</span><span class="p">);</span>
         <span class="nx">$</span><span class="p">(</span><span class="s2">&quot;#pin-link&quot;</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;href&#39;</span><span class="p">,</span> <span class="nx">url</span><span class="p">);</span>
         <span class="nx">$</span><span class="p">(</span><span class="s2">&quot;#pin-date&quot;</span><span class="p">).</span><span class="nx">html</span><span class="p">(</span><span class="nx">date</span><span class="p">);</span>

         <span class="nx">$</span><span class="p">(</span><span class="s2">&quot;#pinboard&quot;</span><span class="p">).</span><span class="nx">css</span><span class="p">(</span><span class="s1">&#39;display&#39;</span><span class="p">,</span> <span class="s1">&#39;block&#39;</span><span class="p">);</span>
     <span class="p">});</span>

<span class="p">});</span>
</code></pre></div>

<p>Unfortunately, this was very slow, especially for Pinboard. Adding 1-1.5 
seconds to my page loads. In an effort to alleviate this I started 
caching the <code>JSON</code> files on my server with these <code>cron</code> jobs, not 
wanting to put too much additional load on my server, I only pull them 
every half hour.</p>

<pre><code>0,30 * * * * /usr/bin/curl -s -o
pinboard.json
'http://feeds.pinboard.in/json/v1/u:amdavidson?format=json&amp;count=1'
0,30 * * * * /usr/bin/curl -s -o
twitter.json
'http://api.twitter.com/1/statuses/user_timeline.json?screen_name=amdavidson&amp;count=1'
</code></pre>

<p>Then changed the <code>.getJSON</code> lines to this:</p>

<div class="codehilite"><pre><code><span class="nx">$</span><span class="p">.</span><span class="nx">getJSON</span><span class="p">(</span><span class="s1">&#39;/dynamic/twitter.json&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>

<span class="c1">//and</span>

<span class="nx">$</span><span class="p">.</span><span class="nx">getJSON</span><span class="p">(</span><span class="s1">&#39;/dynamic/pinboard.json&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
</code></pre></div>

<p>Enjoy the faster page load times.</p>

            </description>
        </item>
    
        
    </channel>
</rss>
        
