<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>Beau Smith</title>
        <link>http://beausmith.com/</link>
        <description>Find me...</description>
        <language>en</language>
        <copyright>Copyright 2010</copyright>
        <lastBuildDate>Mon, 21 Dec 2009 17:54:42 -0800</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>Custom Date Sorting for jQuery TableSorter Plugin</title>
            <description><![CDATA[<p>The <a href="http://jquery.com">jQuery</a> <a href="http://tablesorter.com/">TableSorter plugin</a> comes with built-in support for two ISO date formats via RegEx:</p>

<ol>
<li><p><strong>Long</strong> such as: January 6, 1978 9:12 AM or Jan. 6, 2001 9:12 AM</p>

<pre><code>^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$
</code></pre></li>
<li><p><strong>Short</strong> such as: 1/6/78</p>

<pre><code>\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}
</code></pre></li>
</ol>

<p>Because I wanted to use the format of &#8220;Jan 6, 1978&#8221; I had to write my own parser. I could have just modified the default RegEx, but since I could guarantee the format of the input date, I could create a simpler RegEx:</p>

<pre><code>// TableSort parser for date format: Jan 6, 1978
$.tablesorter.addParser({
  id: 'monthDayYear',
  is: function(s) {
      return false;
  },
  format: function(s) {
      var date = s.match(/^(\w{3})[ ](\d{1,2}),[ ](\d{4})$/);
      var m = monthNames[date[1]];
      var d = String(date[2]);
      if (d.length == 1) {d = "0" + d;}
      var y = date[3];
      return '' + y + m + d;
  },
  type: 'numeric'
});
var monthNames = {};
monthNames["Jan"] = "01";
monthNames["Feb"] = "02";
monthNames["Mar"] = "03";
monthNames["Apr"] = "04";
monthNames["May"] = "05";
monthNames["Jun"] = "06";
monthNames["Jul"] = "07";
monthNames["Aug"] = "08";
monthNames["Sep"] = "09";
monthNames["Oct"] = "10";
monthNames["Nov"] = "11";
monthNames["Dec"] = "12";
</code></pre>

<p>This can be easily adapted for other date formats. To assist with testing with <a href="http://getfirebug.com/">Firebug</a>, place these two lines at the end of the &#8220;format&#8221; function to output input date and created string:</p>

<pre><code>console.log(date);
console.log('' + y + m + d);
</code></pre>

<p>Enjoy.</p>
]]></description>
            <link>http://beausmith.com/blog/custom-date-sorting-for-jquery-tablesorter-plugin/</link>
            <guid>http://beausmith.com/blog/custom-date-sorting-for-jquery-tablesorter-plugin/</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Code</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">date</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">javascript</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">jquery</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">sort</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">tablesorter</category>
            
            <pubDate>Mon, 21 Dec 2009 17:54:42 -0800</pubDate>
        </item>
        
        <item>
            <title>Omnigraffle Date &amp; Time Formatting</title>
            <description><![CDATA[<p>I did a few searches for <a href="http://bit.ly/1QcFpQ">Omnigraffle date time format</a> and didn&#8217;t find any conclusive results. So I created block of <a href="#testing-code">test code containing every letter of the alphabet</a> and then used the search results to document each code. There were a few I wasn&#8217;t 100% sure of, so please leave a comment if you know more.</p>

<h2>Examples</h2>

<p>To get <code>Last modified on Friday, September 4 at 01:42 AM</code>, use:</p>

<pre><code>Last modified on &lt;%ModificationDate %A, %B %e at %I:%M %p %&gt;
</code></pre>

<p>To get <code>2005-10-07 01:48</code>, use:</p>

<pre><code>&lt;%Date %Y-%m-%d %H:%M%&gt;
</code></pre>

<p>To get <code>Oct 07, 2005</code>, use:</p>

<pre><code>&lt;%Date %b %d, %Y%&gt;
</code></pre>

<h2>General Codes</h2>

<ul>
<li><h3>%c</h3>

<p>Preferred local format</p>

<p>&lt;%Date %c%>
Fri Sep 04 01:50:02 US/Pacific 2009</p></li>
<li><h3>%x</h3>

<p>The language-aware standard date representation.</p>

<pre><code>&lt;%ModificationDate %x %&gt;
Thu Sep 03 2009
</code></pre></li>
<li><h3>%X</h3>

<p>The language-aware time representation.</p>

<pre><code>&lt;%ModificationDate %X %&gt;
15:36:49 US/Pacific
</code></pre></li>
</ul>

<h3>Time Codes</h3>

<ul>
<li><h3>%I</h3>

<p>The two-digit hour on a 12-hour clock padded with a zero if applicable.</p>

<pre><code>&lt;%ModificationDate %I %&gt;
03
</code></pre></li>
<li><h3>%i</h3>

<p>Seems to be an alias of %I (Halp?)</p></li>
<li><h3>%H</h3>

<p>The two-digit 24-hour clock padded with a zero if applicable.</p>

<pre><code>&lt;%ModificationDate %H %&gt;
16
</code></pre></li>
<li><h3>%M</h3>

<p>The two-digits minute padded with a leading zero if applicable.</p>

<pre><code>&lt;%ModificationDate %M %&gt;
02
</code></pre></li>
<li><h3>%S</h3>

<p>The two-digit second padded with a zero if applicable.</p>

<pre><code>&lt;%ModificationDate %S %&gt;
04
</code></pre></li>
<li><h3>%p</h3>

<p>Either AM or PM. Language dependent.</p>

<pre><code>&lt;%ModificationDate %p %&gt;
AM
</code></pre></li>
<li><h3>%F</h3>

<p>Three digit miliseconds, range from 000 to 999.</p>

<pre><code>&lt;%ModificationDate %F %&gt;
845
</code></pre></li>
<li><h3>%Z</h3>

<p>Time zone.</p>

<pre><code>&lt;%Date %Z%&gt;
US/Pacific
</code></pre></li>
<li><h3>%z</h3>

<p>Timezone offset.</p>

<pre><code>&lt;%Date %z%&gt;
-0700
</code></pre></li>
</ul>

<h3>Date Codes</h3>

<ul>
<li><h3>%A</h3>

<p>The full weekday name.</p>

<pre><code>&lt;%ModificationDate %A %&gt;
Thursday
</code></pre></li>
<li><h3>%a</h3>

<p>The abbreviated weekday name.</p>

<pre><code>&lt;%ModificationDate %a %&gt;
Thu
</code></pre></li>
<li><h3>%B</h3>

<p>The full month name.</p>

<pre><code>&lt;%ModificationDate %B %&gt;
September
</code></pre></li>
<li><h3>%b</h3>

<p>The abbreviated month name.</p>

<pre><code>&lt;%ModificationDate %b %&gt;
Sep
</code></pre></li>
<li><h3>%m</h3>

<p>The two-digit month padded with a leading zero if applicable.</p>

<pre><code>&lt;%ModificationDate %m %&gt;
09
</code></pre></li>
<li><h3>%e</h3>

<p>The day of the month.</p>

<pre><code>&lt;%ModificationDate %e %&gt;
9
</code></pre></li>
<li><h3>%Y</h3>

<p>The four-digit year.</p>

<pre><code>&lt;%ModificationDate %Y %&gt;
2009
</code></pre></li>
<li><h3>%y</h3>

<p>The two-digit year padded with a leading zero if applicable.</p>

<pre><code>&lt;%ModificationDate %y %&gt;
01
</code></pre></li>
<li><h3>%j</h3>

<p>The three-digit day of the year (ranging from 000 to 364) padded with leading zeroes if applicable.</p>

<pre><code>&lt;%ModificationDate %j %&gt;
040
</code></pre></li>
<li><h3>%w</h3>

<p>The numeric day of the week ranging from 0 to 6 where 0 is Sunday.</p>

<pre><code>&lt;%ModificationDate %w %&gt;
0
</code></pre></li>
</ul>

<hr />

<h2>Testing Code</h2>

<pre><code>a: &lt;%ModificationDate %a %&gt;  A: &lt;%ModificationDate %A %&gt;
b: &lt;%ModificationDate %b %&gt;  B: &lt;%ModificationDate %B %&gt;
c: &lt;%ModificationDate %c %&gt;  C: &lt;%ModificationDate %C %&gt;
d: &lt;%ModificationDate %d %&gt;  D: &lt;%ModificationDate %D %&gt;
e: &lt;%ModificationDate %e %&gt;  E: &lt;%ModificationDate %E %&gt;
f: &lt;%ModificationDate %f %&gt;  F: &lt;%ModificationDate %F %&gt;
g: &lt;%ModificationDate %g %&gt;  G: &lt;%ModificationDate %G %&gt;
h: &lt;%ModificationDate %h %&gt;  H: &lt;%ModificationDate %H %&gt;
i: &lt;%ModificationDate %i %&gt;  I: &lt;%ModificationDate %I %&gt;
j: &lt;%ModificationDate %j %&gt;  J: &lt;%ModificationDate %J %&gt;
k: &lt;%ModificationDate %k %&gt;  K: &lt;%ModificationDate %K %&gt;
l: &lt;%ModificationDate %l %&gt;  L: &lt;%ModificationDate %L %&gt;
m: &lt;%ModificationDate %m %&gt;  M: &lt;%ModificationDate %M %&gt;
n: &lt;%ModificationDate %n %&gt;  N: &lt;%ModificationDate %N %&gt;
o: &lt;%ModificationDate %o %&gt;  O: &lt;%ModificationDate %O %&gt;
p: &lt;%ModificationDate %p %&gt;  P: &lt;%ModificationDate %P %&gt;
q: &lt;%ModificationDate %q %&gt;  Q: &lt;%ModificationDate %Q %&gt;
r: &lt;%ModificationDate %r %&gt;  R: &lt;%ModificationDate %R %&gt;
s: &lt;%ModificationDate %s %&gt;  S: &lt;%ModificationDate %S %&gt;
t: &lt;%ModificationDate %t %&gt;  T: &lt;%ModificationDate %T %&gt;
u: &lt;%ModificationDate %u %&gt;  U: &lt;%ModificationDate %U %&gt;
v: &lt;%ModificationDate %v %&gt;  V: &lt;%ModificationDate %V %&gt;
w: &lt;%ModificationDate %w %&gt;  W: &lt;%ModificationDate %W %&gt;
x: &lt;%ModificationDate %x %&gt;  X: &lt;%ModificationDate %X %&gt;
y: &lt;%ModificationDate %y %&gt;  Y: &lt;%ModificationDate %Y %&gt;
z: &lt;%ModificationDate %z %&gt;  Z: &lt;%ModificationDate %Z %&gt;
</code></pre>
]]></description>
            <link>http://beausmith.com/blog/omnigraffle-date-time-format/</link>
            <guid>http://beausmith.com/blog/omnigraffle-date-time-format/</guid>
            
            
            <pubDate>Fri, 04 Sep 2009 11:47:24 -0800</pubDate>
        </item>
        
        <item>
            <title>Vote for Six Apart-related SXSW Panels</title>
            <description><![CDATA[<p>My current and past co-workers and well as myself have submitted panels to SXSW Interactive 2010 and we need your votes!</p>

<ul>
<li>Beau Smith - <a href="http://panelpicker.sxsw.com/ideas/view/2891">CSS Frameworks Shootout</a></li>
<li>Leah Culver - <a href="http://panelpicker.sxsw.com/ideas/view/2795">Web Framework Battle Royale</a></li>
<li>Mike Malone - <a href="http://panelpicker.sxsw.com/ideas/view/2351">Design for Engineers: Making Your App Work for Normal Users</a></li>
<li>Jay Allen - <a href="http://panelpicker.sxsw.com/ideas/view/4416">Building the Foundations for Open Source Success</a></li>
<li>Byrne Reese - <a href="http://panelpicker.sxsw.com/ideas/view/4487">Web Design and Development for Non-Programmers</a></li>
</ul>

<p>I&#8217;m sure there are a few I&#8217;ve missed as well. Please comment if you know of any.</p>
]]></description>
            <link>http://beausmith.com/blog/six-apart-sxsw-2010/</link>
            <guid>http://beausmith.com/blog/six-apart-sxsw-2010/</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">conference</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">six apart</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">sxsw</category>
            
            <pubDate>Mon, 17 Aug 2009 14:06:40 -0800</pubDate>
        </item>
        
        <item>
            <title>Change iPhone Notes font to Helvetica</title>
            <description><![CDATA[<p>I&#8217;m stoked that Notes now sync between my iPhone and Apple Mail. But for some reason Marker Felt (which kinda sucks as much as <a href="http://bancomicsans.com/home.html">Comic Sans</a>) is still the default font.</p>

<p>After searching and not finding how to permanently change the font, I tinkered around with the few tips I did find and stumbled on to a solution which requires one small hack to allow use of Helvetica in all iPhone Notes instead of Marker Felt whether you are creating the note in Apple Mail or on the iPhone.</p>

<p><em>Tested on iPhone 3GS but should work on any iPhone running 3.0+ software.</em></p>
]]></description>
            <link>http://beausmith.com/blog/change-iphone-notes-font-to-helvetica/</link>
            <guid>http://beausmith.com/blog/change-iphone-notes-font-to-helvetica/</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">apple</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">apple mail</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">font</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">hack</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">iphone</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">mac</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">notes</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">tip</category>
            
            <pubDate>Mon, 29 Jun 2009 19:09:59 -0800</pubDate>
        </item>
        
        <item>
            <title>Data Detectors</title>
            <description><![CDATA[<p>Data Detectors is the best feature from upgrading to Leopard 10.5.2 this week.</p>

<p>Hover over an event, phone number, or address and you&#8217;ll have an option to add to Address Book or iCal.</p>

<p>Watch this video to learn more:</p>

<p><embed src="http://movies.apple.com/movies/us/apple/business/tips/apple_business_tips_maildatadetectors_r640-10cie.mov" width="640" height="416" controller="true" autoplay="false" showlogo="false" cache="true"></p>

<p><a href="http://www.apple.com/business/theater/#maildatadetectors">Source</a></p>

<p>Creating this post I learned:</p>

<ul>
<li>Quicktime controller has height of 16px which must be added to the movie&#8217;s actual height in the embed tag <code>height</code> attribute.</li>
<li><code>autoplay</code> embed tag attribute is set in user Quicktime prefs, but can be overridden in embed tag. I&#8217;ve set autoplay to true so that you don&#8217;t have to click the video to get it to play.</li>
<li><code>showlogo</code> embed tag attribute set to <code>false</code> will hide Quicktime logo while movie is loading.</li>
</ul>
]]></description>
            <link>http://beausmith.com/blog/data-detectors/</link>
            <guid>http://beausmith.com/blog/data-detectors/</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">apple</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">data detector</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">leopard</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">movie</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">tip</category>
            
            <pubDate>Wed, 09 Apr 2008 18:16:49 -0800</pubDate>
        </item>
        
        <item>
            <title>Alan Cooper - An Insurgency of Quality</title>
            <description><![CDATA[<p>I was invited to join an <a href="http://www.ixda.org/">IxDA</a> event at <a href="http://www.hotstudio.com/">HotStudio</a> last night by some members whom I met at <a href="http://sxsw.org/">SXSW</a>. </p>

<p>I wasn&#8217;t quite sure what to expect (and didn&#8217;t do my research about the speaker&#8230; Alan Cooper is the author of <a href="http://www.amazon.com/exec/obidos/ASIN/0672316498/">The Inmates Are Running the Asylum</a> and <a href="http://www.amazon.com/About-Face-Essentials-Interaction-Design/dp/0470084111/">About Face</a>), but I really wish that I&#8217;d invited my collegues to join as Alan&#8217;s speech was full of tips and concepts that we&#8217;ve been doing at Six Apart&#8230; having the process defined is very helpful.</p>

<p>Here&#8217;s the video. It&#8217;s 40 minutes, but chock full of great insights about success in the digital age.</p>

<p><embed src='http://www.brightcove.tv/playerswf' bgcolor='#FFFFFF' flashVars='initVideoId=1416866797&amp;servicesURL=http://www.brightcove.tv&amp;viewerSecureGatewayURL=https://www.brightcove.tv&amp;cdnURL=http://admin.brightcove.com&amp;autoStart=false' base='http://admin.brightcove.com' name='bcPlayer' width='486' height='412' allowFullScreen='true' allowScriptAccess='always' seamlesstabbing='false' type='application/x-shockwave-flash' swLiveConnect='true' pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash'></embed></p>
]]></description>
            <link>http://beausmith.com/blog/alan-cooper-an-insurgency-of-quality/</link>
            <guid>http://beausmith.com/blog/alan-cooper-an-insurgency-of-quality/</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">alan cooper</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">design</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">design engineering</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">hot studio</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">interaction design</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">ixda</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">process</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">programming</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">six apart</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">video</category>
            
            <pubDate>Wed, 26 Mar 2008 17:04:20 -0800</pubDate>
        </item>
        
    </channel>
</rss>
