<?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>Adam Roderick blog</title>
	<atom:link href="http://blog.adamroderick.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.adamroderick.com</link>
	<description>thoughts, observations, opinions</description>
	<lastBuildDate>Thu, 01 Dec 2011 18:18:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Announcing IframeActivityMonitor</title>
		<link>http://blog.adamroderick.com/2011/12/announcing-iframeactivitymonitor/</link>
		<comments>http://blog.adamroderick.com/2011/12/announcing-iframeactivitymonitor/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 18:18:21 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/2011/12/announcing-iframeactivitymonitor/</guid>
		<description><![CDATA[The IframeActivityMonitor is available on github. Iframes have serious tradeoffs you have to consider when building an application. But I see them in use frequently, and sometimes they are even appropriate. A difficult scenario is when the parent window needs &#8230; <a href="http://blog.adamroderick.com/2011/12/announcing-iframeactivitymonitor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="https://github.com/aroder/IframeActivityMonitor" target="_blank">The IframeActivityMonitor is available on github.</a></p>
<p>Iframes have serious tradeoffs you have to consider when building an application. But I see them in use frequently, and sometimes they are even appropriate.</p>
<p>A difficult scenario is when the parent window needs to track user activity within a child iframe, when the child iframe contains content from a different domain. </p>
<p>In a nutshell, browsers’ <a href="http://en.wikipedia.org/wiki/Same_origin_policy" target="_blank">same origin policy</a> comes into effect, and JavaScript from the parent is blocked from making function calls, sending events, or adding event listeners to the child iframe content. The iframe’s <a href="http://www.nczonline.net/blog/2009/09/15/iframes-onload-and-documentdomain/" target="_blank">onload event</a> is sufficient for many needs. But if the iframe itself is a single-page AJAX application, then the onload event will not fire after the first load.</p>
<p>The IframeActivityMonitor is a simple JavaScript object that allows you to receive an event periodically while the user maintains activity within any iframe on the page.</p>
<p><a href="https://github.com/aroder/IframeActivityMonitor" target="_blank">Check out the IframeActivityMonitor on github!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/12/announcing-iframeactivitymonitor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery in a Windows 8 Application. Oh Yes You Can!</title>
		<link>http://blog.adamroderick.com/2011/09/jquery-in-a-windows-8-application/</link>
		<comments>http://blog.adamroderick.com/2011/09/jquery-in-a-windows-8-application/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 02:53:50 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[windows 8]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/?p=207</guid>
		<description><![CDATA[Microsoft is really trying to entice the web developers to jump in and develop apps on Windows 8 devices. They allow apps to be written fully in HTML5 and JavaScript, and they have even included a JavaScript API that provides &#8230; <a href="http://blog.adamroderick.com/2011/09/jquery-in-a-windows-8-application/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Microsoft is really trying to entice the web developers to jump in and develop apps on Windows 8 devices. They allow apps to be written fully in HTML5 and JavaScript, and they have even included a JavaScript API that provides a bridge directly to the Windows Runtime (WinRT). Think PhoneGap for Windows 8.</p>
<p>You will need to install the <a href="http://msdn.microsoft.com/en-us/windows/apps/br229516" target="_blank">Windows 8 Developer Preview</a> on an physical machine, or you can install it on a virtual machine by following the instructions I provide in <a href="http://blog.adamroderick.com/2011/09/installing-windows-8-on-vmware-workstation-8-0/" target="_blank">a previous post</a>. The install includes “Visual Studio 11 Express for Windows Developer Preview.” How’s that for a mouthful? The start screen looks pretty familiar:</p>
<p><a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image4.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb4.png" border="0" alt="image" width="644" height="331" /></a></p>
<p>I do remember in one of the sessions at BUILD the emphasis on the simplification of the menu bar. Looks nice. Once you click “New Project…” you will see the template selection. We will be creating a blank application for our purposes, but there are several other templates.</p>
<p><a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image5.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb5.png" border="0" alt="image" width="644" height="447" /></a></p>
<p>I found the dozens of sample applications particularly useful in learning the new WinRT API. Click the “Online” section for access to those. You can also <a href="http://code.msdn.microsoft.com/windowsapps/site/search?f[0].Type=ProgrammingLanguage&amp;f[0].Value=JavaScript&amp;f[0].Text=JavaScript" target="_blank">browse them online</a>.</p>
<p>Below you can see that I expanded out the project hierarchy, with the addition of the jQuery file. Upon inspection, I found it to be a true web application. There are several additional JavaScript files that provide the WinRT JavaScript API and the Windows 8 application framework. Other than that stuff, the core files to the app are default.html, default.css, and default.js.</p>
<p><a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image6.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb6.png" border="0" alt="image" width="205" height="484" /></a></p>
<p>In default.html, I added a script reference to jQuery, a button, and a div.</p>
<p><a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image7.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb7.png" border="0" alt="image" width="572" height="484" /></a></p>
<p>In default.js, I added a little code to confirm that jQuery indeed works in a Windows 8 app. The existing code from the template I did not modify. What’s happening in there is essentially an event handler for the app’s launch event. Since we are technically building a Windows 8 app and not a web site, the idea of a “launch” event makes sense.</p>
<p><a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image8.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb8.png" border="0" alt="image" width="644" height="384" /></a></p>
<p>Hitting F5 launches the app in debug mode. Apps run full screen, so the button and div show up at the top left. The default.css provides the Metro look and feel for free. Below is a screenshot after clicking the button, which runs the jQuery-dependent button click handler.</p>
<p><a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image9.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb9.png" border="0" alt="image" width="501" height="349" /></a></p>
<p>External libraries in Windows 8 applications! <strong><span style="text-decoration: underline;">What excites me most about this is we can continue to leverage all the web innovation that is occurring outside of Microsoft</span></strong>, not just the framework that Microsoft provides. And there is a lot of it going on. Check out <a href="http://microjs.com/" target="_blank">MicroJS.com</a> to see a sampling.</p>
<p>If you are interested in downloading the source code, it is available in <a href="https://github.com/aroder/win8demo1" target="_blank">a github repository</a>. Don’t worry if you aren’t familiar with github; you can <a href="https://github.com/aroder/Win8Demo1/zipball/master" target="_blank">download the code in a zip file</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/09/jquery-in-a-windows-8-application/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Installing Windows 8 on VMWare Workstation 8.0</title>
		<link>http://blog.adamroderick.com/2011/09/installing-windows-8-on-vmware-workstation-8-0/</link>
		<comments>http://blog.adamroderick.com/2011/09/installing-windows-8-on-vmware-workstation-8-0/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 05:57:22 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/2011/09/installing-windows-8-on-vmware-workstation-8-0/</guid>
		<description><![CDATA[I was excited to try out what I saw in several posts—installing Windows 8 as a bootable VHD. Unfortunately, it would not work for me. The installer would just give me the message that the hard drive was not bootable. &#8230; <a href="http://blog.adamroderick.com/2011/09/installing-windows-8-on-vmware-workstation-8-0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was excited to try out what I saw in <a href="http://blog.concurrency.com/infrastructure/dual-boot-windows-8-from-vhd-using-windows-setup/" target="_blank">several</a> <a href="http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx" target="_blank">posts</a>—installing Windows 8 as a bootable VHD. Unfortunately, it would not work for me. The installer would just give me the message that the hard drive was not bootable. </p>
<p>So I opted for VMWare after a little searching showed that someone had that working. I did not have an ISO &#8211; I had the bootable USB key that I received at Microsoft’s BUILD conference. So that may be a little different from other experiences.</p>
<ol>
<li><a href="http://www.vmware.com/products/workstation/index.html" target="_blank">Download VMWare 8.0</a> and run the installer.
<li>Create a virtual machine, and choose the option to install the operating system later.<a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image.png"><img style="background-image: none; border-right-width: 0px; margin: 25px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb.png" width="446" height="405"></a>
<li>When given the option to choose an operating system, choose Windows 7.<a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image1.png"><img style="background-image: none; border-right-width: 0px; margin: 25px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb1.png" width="446" height="405"></a>
<li>VMWare requires a license key to boot the virtual machine. After clicking the button to get the license key, one of the available options is a key for a 30 day free trial.
<li>Now the problem with the USB key. VMWare BIOS cannot boot from USB. So I downloaded a <a href="http://www.plop.at/en/bootmanager.html#download" target="_blank">handy little boot manager from plop.at</a>. Put in this ISO file as the CD/DVD drive for the virtual machine, and the boot manager takes over the boot sequence. Don’t forget to stare at the flying stars for a moment, and wonder how fast you are going through virtual space.<a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image2.png"><img style="background-image: none; border-right-width: 0px; margin: 25px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb2.png" width="650" height="512"></a>
<li>Insert the USB key and attach it to the running virtual machine. Choose to boot from USB.
<li>The Windows 8 installer takes over from there.<a href="http://blog.adamroderick.com/wp-content/uploads/2011/09/image3.png"><img style="background-image: none; border-right-width: 0px; margin: 25px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/09/image_thumb3.png" width="644" height="480"></a></li>
</ol>
<p>P.S. Don’t install the VMWare tools. The result will be a black screen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/09/installing-windows-8-on-vmware-workstation-8-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Information Architecture is Baloney</title>
		<link>http://blog.adamroderick.com/2011/05/information-architecture-is-baloney/</link>
		<comments>http://blog.adamroderick.com/2011/05/information-architecture-is-baloney/#comments</comments>
		<pubDate>Wed, 25 May 2011 15:06:06 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/?p=184</guid>
		<description><![CDATA[I gave a presentation at SharePoint Fest Denver on Friday that was very well received.  In a conference full of “click here” and “scripted demo” presentations, my presentation stood out because of its focus on the philosophy behind why and &#8230; <a href="http://blog.adamroderick.com/2011/05/information-architecture-is-baloney/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I gave a presentation at SharePoint Fest Denver on Friday that was very well received.  In a conference full of “click here” and “scripted demo” presentations, my presentation stood out because of its focus on the philosophy behind why and how we do things in SharePoint.  It stemmed from the frustrations I hear from all my SharePoint clients about how difficult it is to remember where anything is in SharePoint.  I have felt the same frustrations, even though I work at a 25-person company and really don’t have a lot of SP content.  Why, if we all spend so much time creating such good hierarchies of information on our SP sites, are we so frustrated with it?</p>
<p>In my preparations for the presentation, I spent a lot of time thinking about analogies.  The waterfall vs. agile software development methodology analogy was very relevant.  Another one that I liked was comparing IA to moving into a house.  With certain pieces of furniture, you know where you are going to put before you even move in.  But other things—like the best place to put your keys so you know where to find them—are decisions better left until well after you move in.  It is not until you observe your behavior, how you interact with the house, where you naturally look for your keys, that you can really be confident that a specific location is where your keys “should” go.</p>
<p>My goal was to explain that there are other perspectives in IA, and that SharePoint has features that can contribute to IA in unexpected ways.  My main points were:</p>
<ol>
<li>We do not have to do as much planning up front as we think we do.</li>
<li>IA is not a perfect science, but it has its roots in psychology, library science, and design.</li>
<li>Every individual is different, and there is no one-size-fits-all way of organizing information.  We should embrace this instead of fighting it.</li>
<li>SharePoint has various features that can contribute to a grassroots-driven taxonomy and IA.</li>
</ol>
<p>Some of the suggestions of features that could be used to individualize SP and allow IA to develop in a grassroots way:</p>
<ul>
<li>Search honing – People naturally move to search when they tire from browsing for content.  Use this to our advantage, and really pay attention to the search logs.  As we learn what users are searching for, configure Best Bets, Keywords, and search scopes to match the search behavior we see.</li>
<li>Tagging – SharePoint 2010 has great support for tagging.  Why not allow users to tag content, and as we see trends, pull the most popular tags into Managed Term Stores?</li>
<li>Individualized pages – this is such a simple feature, but allowing users to organize pages the way they want to can create a lot of user buy in.</li>
<li>Control to the business units – I believe that we should embrace governance plans that allow a gradual relinquishing of control from IT to the business units.</li>
<li>Publish/Subscribe model – Some of our most successful SharePoint engagements have involved a model where we separate the content creators from the content consumers.  Rather than send everyone to the Marketing tab, create a place where the marketing department can create and publish content.  Allow consumption of the content to be opt-in for the most part, and allow the content to be consumed in various locations, depending on context.</li>
</ul>
<p>Check out <a href="http://aspenware.posterous.com/big-turnout-for-adam-rodericks-information-ar" target="_blank">Aspenware’s post</a> of the session.  I was happy so many people came!</p>
<p>Here are some <a href="https://www.evernote.com/shard/s18/sh/867fe2f8-ee27-4d25-896c-e9451653cabf/0cd265e146501e4c7dc375e7a2b8ce2c" target="_blank">disorganized notes</a> that may give you more insight into my thoughts.</p>
<p><a href="http://www.slideshare.net/aroder/information-architecture-is-baloney" target="_blank">My slides</a> are all but useless as a reference, but available if you want them.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/05/information-architecture-is-baloney/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best Practice does not mean Great</title>
		<link>http://blog.adamroderick.com/2011/05/best-practice-does-not-mean-great/</link>
		<comments>http://blog.adamroderick.com/2011/05/best-practice-does-not-mean-great/#comments</comments>
		<pubDate>Wed, 11 May 2011 22:36:31 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/?p=183</guid>
		<description><![CDATA[My belief about what is good coding and what is poor is continually evolving. I have a much broader appreciation for creative solutions than I have in the past. Plunkit is being realized only because everyone involved is so open &#8230; <a href="http://blog.adamroderick.com/2011/05/best-practice-does-not-mean-great/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My belief about what is good coding and what is poor is continually evolving. I have a much broader appreciation for creative solutions than I have in the past. Plunkit is being realized only because everyone involved is so open to crazy, it&#8217;ll-never-work ideas. A lot of things I am seeing lately, like some of the javascript libraries I have been researching, are becoming acceptable, even though when they were invented they were hacks. </p>
<p>Here is a wonderful example. It describes how today&#8217;s Martha Graham animation was created by Google. Go to google.com and watch it. Then go to <a href="http://www.acumenholdings.com/blog/how-the-martha-grahm-google-logo-is-animated-short-explanation/">http://www.acumenholdings.com/blog/…</a> and read about it. You might have to refresh a few times&#8211;the site is under load. </p>
<p>Conceptually, it&#8217;s pretty easy to understand how the thing works. But before today, when it became a thing that GOOGLE did, you could have shown that code to 90% of the developers in the world and been laughed at. Because of how hacky it is. Because of how non-standard it is. There are times that out-of-the-box solutions while coding are bad&#8211;where it is essential to follow patterns. And there are times when only by being original and creative that you can accomplish what you set out to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/05/best-practice-does-not-mean-great/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript CacheProvider</title>
		<link>http://blog.adamroderick.com/2011/03/javascript-cacheprovider/</link>
		<comments>http://blog.adamroderick.com/2011/03/javascript-cacheprovider/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 19:05:29 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/?p=170</guid>
		<description><![CDATA[Yesterday I posted about a simplified interface to Dustin Diaz&#8217;s JavaScript CacheProvider. Here is the gist and a jsfiddle]]></description>
			<content:encoded><![CDATA[<p>
Yesterday I posted about a <a href="http://blog.adamroderick.com/2011/03/javascript-cache-provider-with-simplified-interface/">simplified interface to Dustin Diaz&#8217;s JavaScript CacheProvider</a>.  Here is the <a href="https://gist.github.com/871234">gist</a> and a <a href="http://jsfiddle.net/aroder/sg88Y/">jsfiddle</a>
</p>
<p><script src="https://gist.github.com/871234.js"> </script></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/03/javascript-cacheprovider/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript Cache Provider with Simplified Interface</title>
		<link>http://blog.adamroderick.com/2011/03/javascript-cache-provider-with-simplified-interface/</link>
		<comments>http://blog.adamroderick.com/2011/03/javascript-cache-provider-with-simplified-interface/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 18:26:51 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/?p=141</guid>
		<description><![CDATA[After reviewing Dustin Diaz’s “JavaScript Cache Provider,” I was unsatisfied with the interface.&#160; It required the caller to explicitly state the desire for local storage, as well as remember whether each key stored a string or an object. I created &#8230; <a href="http://blog.adamroderick.com/2011/03/javascript-cache-provider-with-simplified-interface/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After reviewing Dustin Diaz’s “<a href="http://www.dustindiaz.com/javascript-cache-provider/" target="_blank">JavaScript Cache Provider</a>,” I was unsatisfied with the interface.&nbsp; It required the caller to explicitly state the desire for <a href="https://developer.mozilla.org/en/DOM/Storage" target="_blank">local storage</a>, as well as remember whether each key stored a string or an object.</p>
<p>I created a simpler interface.&nbsp; Callers can store an object in the cache with only a key and value, and retrieve that value with only the key.&nbsp; By default it uses local storage, if available.</p>
<p>The constructor function takes an optional parameter, so that every call to the CacheStorage instance will either use local storage, or not</p>
<pre>[js]

/**
 * {Boolean} useLocalStorageIfAvailable - optional, defaults to true.  The CacheProvider object will
 * use the HTML5 localStorage object, if available
 */
function CacheProvider(useLocalStorageIfAvailable) {
    // values will be stored here
    this._cache = {};

    this._useLocalStorage = 'undefined' == typeof(useLocalStorageIfAvailable) ? true : useLocalStorageIfAvailable;
}

[/js]
</pre>
<p>Usage is much simpler.  For getting an object from cache, just pass the key.  CacheProvider will determine whether the saved item was a string or object, all under the covers.  To save an item to the cache, just pass in the key and value.  </p>
<pre>
[js]

var cache = new CacheProvider();

// a complex object to test object caching
var obj1 = {
    dogs: [
        'fido',
        'rufus'
    ],
    owner: {
        name: 'arod'
    }
};

cache.set('key1', obj1);
var obj2 = cache.get('key1');
console.log(obj2);

cache.set('key2', 'asdfasdfasdfd');
var obj3 = cache.get('key2');
console.log(obj3);

cache.clear('key1');
cache.clear('key2');

[/js]
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/03/javascript-cache-provider-with-simplified-interface/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The JavaScript Revue: Patterns and Frameworks</title>
		<link>http://blog.adamroderick.com/2011/03/the-javascript-revue-patterns-and-frameworks/</link>
		<comments>http://blog.adamroderick.com/2011/03/the-javascript-revue-patterns-and-frameworks/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 16:03:26 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/2011/03/the-javascript-revue-patterns-and-frameworks/</guid>
		<description><![CDATA[Thanks to everyone who attended my session at the Rocky Mountain Tech Trifecta, “The JavaScript Revue: Patterns and Frameworks.”&#160; It was a packed room, and the participation level was fantastic!&#160; In case you missed it, I will be giving the &#8230; <a href="http://blog.adamroderick.com/2011/03/the-javascript-revue-patterns-and-frameworks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone who attended my session at the Rocky Mountain Tech Trifecta, “The JavaScript Revue: Patterns and Frameworks.”&nbsp; It was a packed room, and the participation level was fantastic!&nbsp; In case you missed it, I will be giving the same presentation to the <a href="http://www.southcolorado.net/" target="_blank">South Colorado .NET User Group</a> in at the Olympic Training Center in Colorado Springs on Tuesday, 3/8 at 5:30 pm.&nbsp; <a href="http://scdnug.squarespace.com/meeting-location/" target="_blank">Directions here</a>.&nbsp; Tell your friends!</p>
<p>As for resources from the presentation, I uploaded the slides to slideshare.&nbsp; See the embedded presentation below, or <a href="http://www.slideshare.net/aroder/the-javascript-revue-patterns-frameworks" target="_blank">click here</a> to go to slideshare.&nbsp; </p>
<p>We spent a good amount of time reviewing some core constructs of JavaScript, the language itself.&nbsp; The sample code is available on <a href="https://github.com/aroder/jsrevue" target="_blank">github</a>.&nbsp; Or you can <a href="https://github.com/aroder/jsrevue/zipball/master" target="_blank">download the zip</a> directly.</p>
<p>One thing we discussed but did not have time to demonstrate is a sample app written once without a framework, once in dojo, and started in jQuery.&nbsp; I hope to cover some of this tomorrow (Tuesday, 3/8).&nbsp; If you are interested, it is also available <a href="https://github.com/aroder/RouteFinder" target="_blank">via github</a>.</p>
<div style="width: 425px" id="__ss_7178279"><strong style="margin: 12px 0px 4px; display: block"><a title="The JavaScript Revue: Patterns &amp; Frameworks" href="http://www.slideshare.net/aroder/the-javascript-revue-patterns-frameworks">The JavaScript Revue: Patterns &amp; Frameworks</a></strong><object id="__sse7178279" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thejavascriptrevue-110307095601-phpapp01&amp;stripped_title=the-javascript-revue-patterns-frameworks&amp;userName=aroder" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed name="__sse7178279" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thejavascriptrevue-110307095601-phpapp01&amp;stripped_title=the-javascript-revue-patterns-frameworks&amp;userName=aroder" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/aroder">Adam Roderick</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/03/the-javascript-revue-patterns-and-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dojo’s twitterverse up and running quickly on windows</title>
		<link>http://blog.adamroderick.com/2011/02/dojos-twitterverse-up-and-running-quickly-on-windows/</link>
		<comments>http://blog.adamroderick.com/2011/02/dojos-twitterverse-up-and-running-quickly-on-windows/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 22:07:09 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/2011/02/dojos-twitterverse-up-and-running-quickly-on-windows/</guid>
		<description><![CDATA[&#160; Twitterverse is a dojo sample app developed by Peter Higgins.&#160; It demonstrates several features of dojo.&#160; These steps are for you if you do not have git for Windows installed and want to get a local version of twitterverse &#8230; <a href="http://blog.adamroderick.com/2011/02/dojos-twitterverse-up-and-running-quickly-on-windows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><font size="4">Twitterverse is a dojo sample app developed by <a href="http://twitter.com/#!/phiggins" target="_blank">Peter Higgins</a>.&nbsp; It demonstrates several features of dojo.&nbsp; These steps are for you if you do not have git for Windows installed and want to get a local version of twitterverse up quickly.</font></p>
<p><font size="4">First thing, you are going to need to get subversion installed.&nbsp; Don’t worry, it’s easy.&nbsp; Get the latest subversion for Windows download from </font><a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91"><font size="4">http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91</font></a><font size="4">.&nbsp; I used </font><a href="http://subversion.tigris.org/files/documents/15/47848/Setup-Subversion-1.6.6.msi" target="_blank"><font size="4">version 1.6.6</font></a><font size="4">.</font> </p>
<p><font size="4">Now go get the twitterverse source from </font><a href="https://github.com/phiggins42/twitterverse" target="_blank"><font size="4">https://github.com/phiggins42/twitterverse</font></a><font size="4"> Click Downloads and choose the .zip version.</font></p>
<p><a href="http://blog.adamroderick.com/wp-content/uploads/2011/02/image.png"><font size="4"><a href="http://blog.adamroderick.com/wp-content/uploads/2011/02/image.png"><font size="4"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/02/image_thumb.png" width="545" height="437"></font></a></font></a></p>
<p><font size="4"></font>&nbsp;</p>
<p><font size="4">Extract the zip file to a directory (I extracted to C:).&nbsp; The contents should look like this:</font></p>
<p><a href="http://blog.adamroderick.com/wp-content/uploads/2011/02/image1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/02/image_thumb1.png" width="570" height="321"></a></p>
<p><font size="4"></font>&nbsp;</p>
<p><font size="4">Drill down into the src folder and download this file: <a href="http://adamroderick.com/reference/getdojo.bat.zip" target="_blank">getdojo.bat</a>.&nbsp; Put it next to getdojo.sh.&nbsp; </font></p>
<p><a href="http://blog.adamroderick.com/wp-content/uploads/2011/02/image2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.adamroderick.com/wp-content/uploads/2011/02/image_thumb2.png" width="440" height="324"></a></p>
<p><font size="4"></font>&nbsp;</p>
<p><font size="4">Run getdojo.bat.&nbsp; It will download all the dependencies.&nbsp; Go back up one directory, and open index.html in a browser.&nbsp; You done!</font></p>
<p><font size="4">Have fun digging into the source code to see how dojo works.</font></p>
<p>&nbsp;</p>
<p><font size="4"></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/02/dojos-twitterverse-up-and-running-quickly-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Habits Make the Man</title>
		<link>http://blog.adamroderick.com/2011/01/habits-make-the-man/</link>
		<comments>http://blog.adamroderick.com/2011/01/habits-make-the-man/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 07:01:10 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.adamroderick.com/?p=121</guid>
		<description><![CDATA[I am reading Benjamin Franklin&#8217;s autobiography, and came across an observation that reminded me of new year resolutions.  You know, the attempts people make to change themselves, but invariably fail at: It was about this time I conceiv&#8217;d the bold &#8230; <a href="http://blog.adamroderick.com/2011/01/habits-make-the-man/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am reading Benjamin Franklin&#8217;s autobiography, and came across an observation that reminded me of new year resolutions.  You know, the attempts people make to change themselves, but invariably fail at:</p>
<blockquote><p>It was about this time I conceiv&#8217;d the bold and arduous project of arriving at moral perfection&#8230;But I soon found I had undertaken a task of more difficulty than I bad imagined. While my care was employ&#8217;d in guarding against one fault, I was often surprised by another; habit took the advantage of inattention; inclination was sometimes too strong for reason.</p>
<p>I concluded, at length, that <span style="text-decoration: underline;">the mere speculative conviction that it was our interest to be completely virtuous, was not sufficient to prevent our slipping</span>; and that the contrary habits must be broken, and good ones acquired and established, before we can have any dependence on a steady, uniform rectitude of conduct.</p></blockquote>
<p>I believe that our habits are an important part of who we are and the type of people we become.  I&#8217;ve always liked this quote about the cascading effects of our thoughts and habits&#8211;for better or for worse:</p>
<blockquote>
<div id="_mcePaste">Watch your thoughts, they become words.<br />
Watch your words, they become actions.<br />
Watch your actions, they become habits.<br />
Watch your habits, they become your character.<br />
Watch your character, it becomes your destiny.</div>
</blockquote>
<blockquote>
<div><span style="font-style: normal;"><br />
</span><span style="font-style: normal; font-size: 13px; line-height: 19px;"> </span></div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.adamroderick.com/2011/01/habits-make-the-man/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

