<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>The Why and The How &#187; Uncategorized</title> <atom:link href="http://www.thewhyandthehow.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" /><link>http://www.thewhyandthehow.com</link> <description>Just another WordPress weblog</description> <lastBuildDate>Fri, 09 Jul 2010 02:32:51 +0000</lastBuildDate> <generator>http://wordpress.org/?v=2.8.4</generator> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Thesis 1.6 User Customization Guide</title><link>http://www.thewhyandthehow.com/thesis-1-6-user-customization-guide/</link> <comments>http://www.thewhyandthehow.com/thesis-1-6-user-customization-guide/#comments</comments> <pubDate>Tue, 09 Feb 2010 23:35:28 +0000</pubDate> <dc:creator>admin</dc:creator> <category><![CDATA[Uncategorized]]></category> <category><![CDATA[thesis]]></category><guid
isPermaLink="false">http://www.thewhyandthehow.com/?p=772</guid> <description><![CDATA[As an avid fan of the Thesis theme for Wordpress, I thought I&#8217;d pass on a little news about a new eBook specifically focused on Thesis theme customizations. If you&#8217;re just getting started with Thesis or if you&#8217;re considering the theme but haven&#8217;t decided if you need it yet, check out this guide: Thesis 1.6 [...]]]></description> <content:encoded><![CDATA[<p><img
src="http://www.thewhyandthehow.com/wp-content/uploads/2010/02/book1-e1264776924783.png" alt="book1-e1264776924783" title="book1-e1264776924783" width="150" height="176" class="alignleft size-full wp-image-774" />As an avid fan of the <a
href="http://diythemes.com/thesis/?a_aid=pointe&#038;a_bid=47c5a620">Thesis theme for Wordpress</a>, I thought I&#8217;d pass on a little news about a new eBook specifically focused on Thesis theme customizations. If you&#8217;re just getting started with Thesis or if you&#8217;re considering the theme but haven&#8217;t decided if you need it yet, check out this guide: <a
class="track-download" alt="Thesis 1.6 User Customization Guide" rel="PDF" href='http://www.thewhyandthehow.com/wp-content/uploads/2010/02/Thesis-Theme-Customization-book.pdf'>Thesis 1.6 User Customization Guide</a>.</p><p>Honestly the guide isn&#8217;t the prettiest eBook I&#8217;ve ever seen, but it really is packed with information. You&#8217;ll want to read it online as it links to YouTube for video tutorials and other online resources.</p> ]]></content:encoded> <wfw:commentRss>http://www.thewhyandthehow.com/thesis-1-6-user-customization-guide/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Building a Twitter mashup</title><link>http://www.thewhyandthehow.com/building-a-twitter-mashup/</link> <comments>http://www.thewhyandthehow.com/building-a-twitter-mashup/#comments</comments> <pubDate>Fri, 22 May 2009 16:46:50 +0000</pubDate> <dc:creator>Blake Schwendiman</dc:creator> <category><![CDATA[Uncategorized]]></category><guid
isPermaLink="false">http://www.thewhyandthehow.com/?p=714</guid> <description><![CDATA[This week at Squidoo we released a new Twitter tool that provides a way to aggregate, archive and evangelize the best tweets by topic. We call it TwttrList. Having been a part of its development I wanted to write a brief post about the experience.
TwttrList is deeply integrated with the Twitter API, taking advantage of [...]]]></description> <content:encoded><![CDATA[<p>This week at <a
href="http://www.squidoo.com">Squidoo</a> we released a new Twitter tool that provides a way to aggregate, archive and evangelize the best tweets by topic. We call it <a
href="http://www.squidoo.com/twttrlist/hq">TwttrList</a>. Having been a part of its development I wanted to write a brief post about the experience.</p><p>TwttrList is deeply integrated with the <a
href="http://apiwiki.twitter.com/Twitter-API-Documentation">Twitter API</a>, taking advantage of the search, timeline, status, and favorites interfaces. Because of the timing of our release relative to the release, subsequent <a
href="http://www.thewhyandthehow.com/twitter-oauth-vulnerability-and-service-interconnectedness/">unrelease</a> and re-release of <a
href="http://apiwiki.twitter.com/OAuth-FAQ">OAuth for Twitter</a>, we built almost all of the API requests to support both OAuth and username/password. The code for any Twitter request looks like this (slightly simplified):</p><div
id="wp_codebox_msgheader"><span
class="right"><a
href="javascript:;" onclick="toggle_collapse('p7142');">[<span
id="p7142_symbol">-</span>]</a><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p714code2'); return false;">View Code</a> PHP</span><div
class="codebox_clear"></div></div><div
id="wp_codebox"><table
width="100%" ><tr
id="p7142"><td
class="code" id="p714code2"><pre class="php"><span style="color: #666666; font-style: italic;">/**
 * Return favorite tweets list for user specified by OAuth or user/pass.
 *   doc: http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-favorites
 *
 * @param MemberTwitterData object
 * @return list of favorites or null
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <a href="http://www.php.net/static"><span style="color: #990000;">static</span></a> <span style="color: #000000; font-weight: bold;">function</span> getUserFavorites<span style="color: #009900;">&#40;</span><span style="color: #000033;">$client_twitter_data</span><span style="color: #339933;">,</span> <span style="color: #000033;">$page</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000033;">$cache_key</span> <span style="color: #339933;">=</span> internal_hash<span style="color: #009900;">&#40;</span><span style="color: #000033;">$client_twitter_data</span><span style="color: #339933;">,</span> <span style="color: #339933;">...</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$res</span> <span style="color: #339933;">=</span> ApplicationHelper<span style="color: #339933;">::</span><span style="color: #004000;">memcacheGet</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$cache_key</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$res</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'none'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">return</span> <span style="color: #000033;">$res</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>self<span style="color: #339933;">::</span><span style="color: #000033;">$use_oauth</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000033;">$curl_options</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>CURLOPT_POST <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
                          CURLOPT_HTTPHEADER <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Expect:'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
                          CURLOPT_USERPWD <span style="color: #339933;">=&gt;</span> <span style="color: #000033;">$client_twitter_data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">screen_name</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">':'</span> <span style="color: #339933;">.</span> <span style="color: #000033;">$client_twitter_data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">twitter_password</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000033;">$results</span> <span style="color: #339933;">=</span> ApplicationHelper<span style="color: #339933;">::</span><span style="color: #004000;">rest_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'https://twitter.com/favorites.json'</span><span style="color: #339933;">,</span> <span style="color: #339933;">...,</span>  <span style="color: #000033;">$curl_options</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$results</span> <span style="color: #339933;">===</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000033;">$results</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000033;">$oauth</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> TwitterOAuth<span style="color: #009900;">&#40;</span>self<span style="color: #339933;">::</span><span style="color: #000033;">$app_token</span><span style="color: #339933;">,</span> self<span style="color: #339933;">::</span><span style="color: #000033;">$app_secret</span><span style="color: #339933;">,</span> <span style="color: #000033;">$client_twitter_data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">oauth_token</span><span style="color: #339933;">,</span> <span style="color: #000033;">$client_twitter_data</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">oauth_secret</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000033;">$results</span> <span style="color: #339933;">=</span> <span style="color: #000033;">$oauth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">OAuthRequest</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'https://twitter.com/favorites.json'</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'page'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000033;">$page</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'GET'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$oauth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lastStatusCode</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">200</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000033;">$results</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">null</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000033;">$results</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000033;">$results</span> <span style="color: #339933;">=</span> json_decode<span style="color: #009900;">&#40;</span><span style="color: #000033;">$results</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    ApplicationHelper<span style="color: #339933;">::</span><span style="color: #004000;">memcacheSet</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$cache_key</span><span style="color: #339933;">,</span> <span style="color: #000033;">$results</span><span style="color: #339933;">,</span> <span style="color: #339933;">...</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    ApplicationHelper<span style="color: #339933;">::</span><span style="color: #004000;">memcacheSet</span><span style="color: #009900;">&#40;</span><span style="color: #000033;">$cache_key</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'none'</span><span style="color: #339933;">,</span> <span style="color: #339933;">...</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> <span style="color: #000033;">$results</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div><p>The Twitter OAuth library I chose is the one provided by <a
href="http://twitter.abrah.am/">Abraham Williams</a> and despite the warnings in the comments about not using the library in production code, I found the library to be very stable and usable.</p><p>With this structure in place, we were able to switch between using OAuth and Twitter usernames/passwords by simply setting a single boolean value in the Twitter helper class. With the boolean <em>use_oauth</em> set to false, the authentication popup screen we developed displays a username/password form. When true, the popup screen goes through the actual OAuth process. Switching mid-stream is possible as well because each time authentication is required we can simply re-request the new user credentials.</p><p>TwttrList obviously uses a lot of <a
href="http://www.thewhyandthehow.com/memcache-memcache-memcache/">request caching</a>. We cache everything we possibly can using timeouts for each type of data based on our best judgment. Search requests are cached for a shorter time than user favorites, for example.</p><p>The final large coding piece was to develop a reusable Javascript class to provide consistent display and AJAX functionality on all the pages that are involved in the TwttrList lens display. This class is mostly agnostic to any framework (<a
href="http://jquery.com/">jQuery</a>, <a
href="http://www.prototypejs.org/">Prototype</a>) because Squidoo is transitioning between frameworks at the moment. The JS for TwttrList is lightweight and very reusable.</p><p>The real magic of TwttrList is in its usability, concept and design which is a group effort by the whole <a
href="http://www.squidoo.com/squidoo">Squidoo team</a>. It takes a village to create a great software application and I&#8217;m part of one of the best villages around. The creative elements of the design and the constant attention to usability details throughout the application make TwttrList something more than just the nuts and bolts of the code.</p><p>Take a look at <a
href="http://www.squidoo.com/twttrlist/hq">TwttrList</a> today and let me know what you think. I&#8217;d love to answer questions about the implementation (within reason), so ask away!</p> ]]></content:encoded> <wfw:commentRss>http://www.thewhyandthehow.com/building-a-twitter-mashup/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Stretch</title><link>http://www.thewhyandthehow.com/stretch/</link> <comments>http://www.thewhyandthehow.com/stretch/#comments</comments> <pubDate>Tue, 10 Mar 2009 13:37:32 +0000</pubDate> <dc:creator>Blake Schwendiman</dc:creator> <category><![CDATA[Uncategorized]]></category><guid
isPermaLink="false">http://www.thewhyandthehow.com/?p=292</guid> <description><![CDATA[Sometimes the thought of taking on a new project is so overwhelming that it&#8217;s hard to even get started. You may want to start a blog or write an article or build your business online, but you just can&#8217;t seem to get past the first step. Maybe you need to redefine what you think is [...]]]></description> <content:encoded><![CDATA[<p>Sometimes the thought of taking on a new project is so overwhelming that it&#8217;s hard to even get started. You may want to start a blog or write an article or build your business online, but you just can&#8217;t seem to get past the first step. Maybe you need to redefine what you think is the first step.</p><p>Stretch yourself just a little bit by doing something differently. Maybe today you start by <a
href="http://www.mozilla.com/en-US/firefox/">downloading a new browser</a>, or by learning <a
href="http://170spoons.com/setting-up-a-rss-reader-google-reader/">how to use an RSS Reader</a>. If you spend too much time worrying about how to do something, you may never do it at all. There&#8217;s no absolute right way to write a blog or design a web site &#8212; dive in and see for yourself.</p><p>The first step is often the hardest, but you&#8217;ll never get to your destination if you don&#8217;t take it. There&#8217;s a lot of room on the internet for your ideas. Heaven knows that there are already enough blogs about blogging and web sites about how to make new web sites. I want to read your blog about investing, buying insurance, retirement planning, gardening, or whatever you&#8217;re best at. If you&#8217;re still unsure about getting started, drop me a line and I help you get pointed in the right direction. Or read a little from <a
href="http://sethgodin.typepad.com/">Seth</a>, <a
href="http://www.copyblogger.com/">Brian</a>, <a
href="http://www.problogger.net/">Darren</a>, <a
href="http://170spoons.com/">Rob</a>, <a
href="http://www.studiosb3.com/">Spencer</a>, or <a
href="http://www.joelcomm.com/">Joel</a> and learn more about how they do what they do.</p> ]]></content:encoded> <wfw:commentRss>http://www.thewhyandthehow.com/stretch/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Help me get back</title><link>http://www.thewhyandthehow.com/help-me-get-back/</link> <comments>http://www.thewhyandthehow.com/help-me-get-back/#comments</comments> <pubDate>Fri, 27 Feb 2009 13:43:09 +0000</pubDate> <dc:creator>Blake Schwendiman</dc:creator> <category><![CDATA[Uncategorized]]></category><guid
isPermaLink="false">http://www.thewhyandthehow.com/?p=231</guid> <description><![CDATA[Today I visited your website and I liked it. It looks great and I really like what you have to offer, but I just don&#8217;t have time for it right now. I&#8217;ll come back later &#8230; if I can remember where to find you &#8230; or if Google can help me find you again &#8230; [...]]]></description> <content:encoded><![CDATA[<p>Today I visited your website and I liked it. It looks great and I really like what you have to offer, but I just don&#8217;t have time for it right now. I&#8217;ll come back later &#8230; if I can remember where to find you &#8230; or if Google can help me find you again &#8230; assuming I can remember what exactly made me like your page. Hmm&#8230; If only I had some way to quickly keep your site on a list that worked no matter which computer and browser I use.</p><p>Oh, yeah. There is. It&#8217;s called <a
href="http://delicious.com/help/learn">Delicious</a> and I use it. I&#8217;ve been keeping all of my tastiest bookmarks on delicious.com for years &#8212; and so have <a
href="http://www.techcrunch.com/2006/09/25/delicious-reports-1-million-users-post-yahoo-growth-tops-all-of-digg/">millions of other people</a>. Using Delicious, I can access my saved web sites from any browser on any computer anywhere. I don&#8217;t bother with the bookmarks feature of my browser because I use two browsers on this computer, four on my laptop and I also access the web from my phone, my wife&#8217;s computer and when I&#8217;m on the road. It&#8217;s so much easier to just go to my personal bookmarks list at <a
href="http://delicious.com/RealNerd">delicious.com/RealNerd</a> and browse/search there.</p><p>While you&#8217;re working on <a
href="http://www.thewhyandthehow.com/unlisted/">making yourself more accessible</a>, make sure you do the same thing for your web site. Make bookmarking your site a single click option. Just put a little link with a graphic on your site and give me one-click access to save your site for later. If you&#8217;re not really the figure-it-out-and-write-the-code person, don&#8217;t worry, Delicious has even done the work for you.</p><h4>Do it yourself &#8212; no assembly required</h4><p>All you need to do is grab the HTML code from the first box on the <a
href="http://delicious.com/help/savebuttons">Save Buttons page on Delicious</a>. I&#8217;ve copied the same code below so you can see what I&#8217;m talking about.</p><div
id="wp_codebox_msgheader"><span
class="right"><a
href="javascript:;" onclick="toggle_collapse('p2314');">[<span
id="p2314_symbol">-</span>]</a><sup><a
href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span
style="color: #99cc00">?</span></a></sup></span><span
class="left"><a
href="javascript:;" onclick="javascript:showCodeTxt('p231code4'); return false;">View Code</a> HTML</span><div
class="codebox_clear"></div></div><div
id="wp_codebox"><table
width="100%" ><tr
id="p2314"><td
class="code" id="p231code4"><pre>&lt;img src=&quot;http://static.delicious.com/img/delicious.small.gif&quot; 
  height=&quot;10&quot; width=&quot;10&quot; alt=&quot;Delicious&quot; /&gt;
&lt;a href=&quot;http://delicious.com/save&quot; 
  onclick=&quot;window.open(
  'http://delicious.com/save?v=5&amp;amp<SEMI>noui&amp;amp<SEMI>jump=close&amp;amp<SEMI>url=' + 
  encodeURIComponent(location.href) + '&amp;amp<SEMI>title=' + 
  encodeURIComponent(document.title),
  'delicious', 'toolbar=no, width=550, height=550')<SEMI> 
  return false<SEMI>&quot;&gt; Bookmark this on Delicious&lt;/a&gt;</pre></td></tr></table></div><p>All you need to do is put that little bit of HTML code on each page of your site and you&#8217;ll have a nice little link that looks and works just like this:</p><p
align="center"><img
src="http://static.delicious.com/img/delicious.small.gif" height="10" width="10" alt="Delicious" /><a
href="http://delicious.com/save" onclick="window.open('http://delicious.com/save?v=5&amp;noui&amp;jump=close&amp;url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=550,height=550'); return false;"> Bookmark this on Delicious</a></p><p>If you&#8217;re not directly responsible for updating your site, pass this along to the person who is. It only takes a few minutes for you and it will really make my life easier (not to mention the other few million Delicious users). Thanks!</p> ]]></content:encoded> <wfw:commentRss>http://www.thewhyandthehow.com/help-me-get-back/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss><!--
This site's performance optimized by W3 Total Cache:

W3 Total Cache improves the user experience of your blog by caching
frequent operations, reducing the weight of various files and providing
transparent content delivery network integration.

Learn more about our WordPress Plugins: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached
Page Caching using memcached
Database Caching 10/17 queries in 0.008 seconds using memcached

Served from: a2.c0.354a.static.theplanet.com @ 2010-09-07 02:08:22 -->