<?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>Jon Kragh - Digital Craftsman &#124; Programming, Music &#38; Photography</title>
	<atom:link href="http://www.jonkragh.com/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jonkragh.com</link>
	<description>I think I can, I know I can</description>
	<lastBuildDate>Thu, 02 May 2013 11:20:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Amazon CloudFront with IIS7</title>
		<link>http://www.jonkragh.com/index.php/amazon-cloudfront-with-iis7/</link>
		<comments>http://www.jonkragh.com/index.php/amazon-cloudfront-with-iis7/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 14:03:53 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/amazon-cloudfront-with-iis7/</guid>
		<description><![CDATA[Recently I have been working on a CSS &#38; Javascript bundle called “Jon Kragh Starter” that I created as a starting point for all of my web projects. I turned to Amazon’s CloudFront service as a CDN for my JS &#38; CSS files.&#160; Amazon won for me because I need SSL, and their offering was [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I have been working on a CSS &amp; Javascript bundle called “<a href="http://www.jonkragh.com/starter">Jon Kragh Starter</a>” that I created as a starting point for all of my web projects.</p>
<p>I turned to Amazon’s CloudFront service as a CDN for my JS &amp; CSS files.&#160; Amazon won for me because I need SSL, and their offering was the cheapest in that regard.</p>
<p>My site is hosted on Windows Server 2008 R2 Standard with IIS 7.5.&#160; Setting up Cloud Front was easy.&#160; I simply pointed it to my site as a “Custom Origin” and then 10 minutes later, I was about to view my content under the URL that CloudFront generates.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/image4.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 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://www.jonkragh.com/wp-content/uploads/image_thumb2.png" width="550" height="70" /></a></p>
<p>The biggest challenge was to get CloudFront to serve my gzipped css and JavaScript.&#160; CloudFront will serve Gzipped content if your origin server returns gzipped content to CloudFront, when CloudFront requests it with the user’s headers.</p>
<p>So first and foremost you need to ensure your origin server serves Gzipped content.&#160; Here is an example at my origin.&#160; Using Firebug’s network tab you can inspect the response headers:</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/SNAGHTML138c082a.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML138c082a" border="0" alt="SNAGHTML138c082a" src="http://www.jonkragh.com/wp-content/uploads/SNAGHTML138c082a_thumb.png" width="579" height="660" /></a></p>
<p>The trick is to get CloudFront to serve the same Gzipped content.&#160; It turns out that IIS will not return gzipped content to CloudFront in its default configuration.</p>
<p>Many thanks <a href="https://forums.aws.amazon.com/thread.jspa?threadID=60812">to this thread</a> for pointing me to the correct solution.&#160; What worked for me was to add the flags noCompressionForHttp10=&quot;false&quot; noCompressionForProxies=&quot;false&quot; to the server’s applicationHost.config file followed by a global “iisreset” from the command line.</p>
<p>Keep in mind during your testing, you will need to add new files to your server when you retry to see if you get your gzipped content from CloudFront.&#160; This is because CloudFront caches your content.&#160; There is a way to invalidate it through their API, but it’s much simpler to just add another js file (e.g. test with test1.js, then copy it &amp; rename, and test with test2.js etc).</p>
<p>File:&#160; C:\Windows\System32\inetsrv\config\applicationHost.config</p>
<p>(Unfortunately this did not work for me in a regular application level web.config and it needed to be done at the server level).</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/image5.png"><img style="background-image: none; border-right-width: 0px; margin: 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://www.jonkragh.com/wp-content/uploads/image_thumb3.png" width="550" height="137" /></a></p>
<pre class="brush: csharp; gutter: false;">&lt;httpCompression directory=&quot;%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files&quot; noCompressionForHttp10=&quot;false&quot; noCompressionForProxies=&quot;false&quot;&gt;
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;scheme name=&quot;gzip&quot; dll=&quot;%Windir%\system32\inetsrv\gzip.dll&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;dynamicTypes&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;text/*&quot; enabled=&quot;true&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;message/*&quot; enabled=&quot;true&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;application/x-javascript&quot; enabled=&quot;true&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;*/*&quot; enabled=&quot;false&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/dynamicTypes&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;staticTypes&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;text/*&quot; enabled=&quot;true&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;message/*&quot; enabled=&quot;true&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;application/x-javascript&quot; enabled=&quot;true&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;application/atom+xml&quot; enabled=&quot;true&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;application/xaml+xml&quot; enabled=&quot;true&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add mimeType=&quot;*/*&quot; enabled=&quot;false&quot; /&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/staticTypes&gt;

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/httpCompression&gt;</pre>
<p>iisreset</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/image6.png"><img style="background-image: none; border-right-width: 0px; margin: 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://www.jonkragh.com/wp-content/uploads/image_thumb4.png" width="550" height="115" /></a></p>
<p>&#160;</p>
<h2>CloudFront JavaScript Gzip Test</h2>
<p>My Origin</p>
<p><a href="https://www.jonkragh.com/starter/v/1.0/foot-complete.js">https://www.jonkragh.com/starter/v/1.0/foot-complete.js</a></p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/SNAGHTML138c082a1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML138c082a" border="0" alt="SNAGHTML138c082a" src="http://www.jonkragh.com/wp-content/uploads/SNAGHTML138c082a_thumb1.png" width="579" height="660" /></a></p>
<p>Cloudfront gzip encoded javascript</p>
<p><a title="https://d2yljticlotdgz.cloudfront.net/starter/v/1.0/foot-complete.js" href="https://d2yljticlotdgz.cloudfront.net/starter/v/1.0/foot-complete.js">https://d2yljticlotdgz.cloudfront.net/starter/v/1.0/foot-complete.js</a></p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/SNAGHTML137bbb7f.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="SNAGHTML137bbb7f" border="0" alt="SNAGHTML137bbb7f" src="http://www.jonkragh.com/wp-content/uploads/SNAGHTML137bbb7f_thumb.png" width="579" height="660" /></a></p>
<p>&#160;</p>
<h2>CloudFront CSS Gzip Test</h2>
<p>Origin</p>
<p><a href="https://www.jonkragh.com/starter/v/1.0/starter.css">https://www.jonkragh.com/starter/v/1.0/starter.css</a></p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/SNAGHTML137f09b0.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML137f09b0" border="0" alt="SNAGHTML137f09b0" src="http://www.jonkragh.com/wp-content/uploads/SNAGHTML137f09b0_thumb.png" width="507" height="660" /></a></p>
<p>Cloudfront</p>
<p><a href="https://d2yljticlotdgz.cloudfront.net/starter/v/1.0/starter.css">https://d2yljticlotdgz.cloudfront.net/starter/v/1.0/starter.css</a></p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/SNAGHTML137e58fd.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="SNAGHTML137e58fd" border="0" alt="SNAGHTML137e58fd" src="http://www.jonkragh.com/wp-content/uploads/SNAGHTML137e58fd_thumb.png" width="507" height="660" /></a></p>
<p>I’m now enjoying blazing speeds.&#160; Here is an example of Ctrl F5 the same JS file from my server (I am in NJ, my Server is in Denver).</p>
<p>Directly from my origin server</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/SNAGHTML13a218f8.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="SNAGHTML13a218f8" border="0" alt="SNAGHTML13a218f8" src="http://www.jonkragh.com/wp-content/uploads/SNAGHTML13a218f8_thumb.png" width="550" height="334" /></a></p>
<p>The same file from CloudFront</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/SNAGHTML13a2a970.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML13a2a970" border="0" alt="SNAGHTML13a2a970" src="http://www.jonkragh.com/wp-content/uploads/SNAGHTML13a2a970_thumb.png" width="550" height="334" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/amazon-cloudfront-with-iis7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What makes good code?</title>
		<link>http://www.jonkragh.com/index.php/what-makes-good-code/</link>
		<comments>http://www.jonkragh.com/index.php/what-makes-good-code/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 13:15:17 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/what-makes-good-code/</guid>
		<description><![CDATA[I see a problem time and time again with programmers wasting an incredible amount of time writing “good code” when in reality sometimes that “good code” isn’t good at all.  I fall prey to this as well, so I&#8217;m going to write up this post to put into words the code design decisions that I [...]]]></description>
			<content:encoded><![CDATA[<p>I see a problem time and time again with programmers wasting an incredible amount of time writing “good code” when in reality sometimes that “good code” isn’t good at all.  I fall prey to this as well, so I&#8217;m going to write up this post to put into words the code design decisions that I make subconsciously when trying to write “good code”.  That way I can analyze it, and refine it in the future.  <strong>This post is focused on the code itself, not whether or not the software product is of any use.</strong> At the end of the day the hardest thing to do is to create something that people want to use. That is a totally different topic.</p>
<p>What can I say? After 15 years of programming professionally, I&#8217;m a pretty confident coder. I work hard at it, and still find ways to improve everyday.</p>
<p>As Bradley Nowell so eloquently stated in “Love is What I got”….</p>
<blockquote><p>&#8220;I can play the guitar like a mother f-in riot.” – Sublime</p>
<p><img style="margin: 5px 10px 10px 0px;" src="http://2.bp.blogspot.com/_lJRSKfJP5CM/ScvTu7eJPsI/AAAAAAAAA2c/CN0Lxt0DPQc/s400/SUBLIME+%5B1996%5D+Sublime+-+front.jpg" alt="" /></p>
<p><strong>Well this is how I feel about code!</strong></p>
<p>&#8220;I can rock the compiler like a mother f-in riot.” – Jon Kragh</p></blockquote>
<p><span id="more-322"></span>There was a phase of my career where I read every patterns book, every code design book and every textbook that I could in order to become the best programmer I could be. Some examples are:</p>
<ul>
<li><a href="http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;qid=1317990115&amp;sr=8-1">Design Patterns</a></li>
<li><a href="http://www.amazon.com/Patterns-Enterprise-Application-Architecture-Martin/dp/0321127420/ref=sr_1_2?s=books&amp;ie=UTF8&amp;qid=1317990143&amp;sr=1-2">Patterns of Enterprise Application Architecture</a></li>
<li><a href="http://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445/ref=sr_1_3?s=books&amp;ie=UTF8&amp;qid=1317990212&amp;sr=1-3">Agile Software Development, Principles, Patterns, and Practices</a></li>
<li><a href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1317990296&amp;sr=1-1">Code Complete</a></li>
<li><a href="http://www.amazon.com/Writing-Secure-Second-Michael-Howard/dp/0735617228/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1317990322&amp;sr=1-1">Writing Secure Code</a></li>
<li><a href="http://www.amazon.com/Service-Oriented-Architecture-Integrating-Services-Computing/dp/0131428985/ref=sr_1_2?s=books&amp;ie=UTF8&amp;qid=1317990348&amp;sr=1-2">Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services</a></li>
<li><a href="http://www.amazon.com/Art-Objects-Object-Oriented-Design-Architecture/dp/0201711613/ref=sr_1_2?s=books&amp;ie=UTF8&amp;qid=1317990429&amp;sr=1-2">The Art of Objects: Object-Oriented Design and Architecture</a></li>
<li><a href="http://www.amazon.com/Object-Oriented-Thought-Process-Matt-Weisfeld/dp/0672330164/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1317990482&amp;sr=1-1">Object-Oriented Thought Process</a></li>
<li>etc…</li>
</ul>
<p>Looking back on all of those years, I realize that reading all of those textbooks provided a great foundation on what is technically considered good code to many people. I really think people consider these practices good mainly because they were written in textbooks, and we have a tendency to trust the written word. Don’t get me wrong, there is technical merit in a lot of it too!  But I’ve seen a dangerous tendency sometimes to take these texts as the “one true way”.</p>
<p>At the end of the day, nobody is going to care about what patterns we used if the code doesn&#8217;t work and even worse isn&#8217;t used by anybody.</p>
<p>Now this doesn&#8217;t mean that we shouldn&#8217;t strive for good code. I use a different way of evaluating code when I write it myself. Below is what I consider my code hierarchy of needs.</p>
<h2>Jon Kragh’s Code Hierarchy of Needs</h2>
<h3>Does The Code Work?</h3>
<p>The bottom layer is the foundation. Does the code work? Without getting into whether or not the program is actually useful, the most important thing is: Does the code work?</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/good-code-pyramid.png"><img style="background-image: none; margin: 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="good-code-pyramid" src="http://www.jonkragh.com/wp-content/uploads/good-code-pyramid_thumb.png" alt="good-code-pyramid" width="546" height="473" border="0" /></a></p>
<h3>Is the code easy to understand?</h3>
<p>The next most important thing to me is: Is the code easy to understand?  This is where all of those patterns can really get in the way. A lot of patterns can be overused in situations where they just are not needed.  However patterns used to help make things easier to understand are a very good thing.</p>
<h3>Is the code consistent?</h3>
<p>Next up is consistency. Consistency helps making code easier to understand, but isn&#8217;t the only way to make code easy to understand.  It is such an important facet that it really deserves its own layer in this pyramid.</p>
<h3>Error Handling</h3>
<p>I&#8217;m really surprised that error handling doesn&#8217;t get more attention. To me error handling is one of the most important facets of good code.  I have a pattern that I use in all of my applications for robust error handling.  I have a standard way to report back validation and system errors, throughout the layers of my architectures. I cannot express how important having a good and consistent error handling strategy in an architecture is.</p>
<h3>Conciseness – Is the code as concise as it can be?</h3>
<p>I love elegant code. I love seeing something accomplished in one line of code that could be done in more lines of code. This is where all of those patterns an object-oriented techniques come in very useful.  The most important thing here though is: conciseness should never detriment the layers below it.  Conciseness can sometimes make code harder to understand and in those cases it makes sense to make code less concise in order to make it more understandable.</p>
<h2>Conclusion</h2>
<p>I plan on refining this post as time goes on.  This at least gives me a baseline on what I consider “good code” today.  I must admit, “good code” is a hard thing to put into words But this definitely summarizes my mix between pragmatism and pure code hygiene as I code today.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/what-makes-good-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jon Kragh&#8217;s Week in Review August 12th, 2011</title>
		<link>http://www.jonkragh.com/index.php/jon-kraghs-week-in-review-august-12th-2011/</link>
		<comments>http://www.jonkragh.com/index.php/jon-kraghs-week-in-review-august-12th-2011/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 02:29:56 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/jon-kraghs-week-in-review-august-12th-2011/</guid>
		<description><![CDATA[I am going to do a stream of consciousness every Friday for the next month and see how it goes. Once I wrote the post, I’m going to video tape myself talking about it.  So here it goes! Here is a video about the post below. &#160; Accomplishments this week Asp.Net JavaScript and css minification [...]]]></description>
			<content:encoded><![CDATA[<p>I am going to do a stream of consciousness every Friday for the next month and see how it goes. Once I wrote the post, I’m going to video tape myself talking about it.  So here it goes!</p>
<p>Here is a video about the post below.</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:56fac224-e545-43a8-87bb-03a493d3100f" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">
<div><object width="554" height="311" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/AtlvU1sUkMw?hl=en&amp;hd=1" /><embed width="554" height="311" type="application/x-shockwave-flash" src="http://www.youtube.com/v/AtlvU1sUkMw?hl=en&amp;hd=1" /></object><span id="more-305"></span></div>
</div>
<p>&nbsp;</p>
<h2>
Accomplishments this week</h2>
<h3>Asp.Net JavaScript and css minification</h3>
<p>Last weekend in my spare time I integrated <a href="http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher">Squishit an awesome implementation of a JavaScript and css minifier for Asp.net</a>.  I liked it so much that I introduced it to one of my customers for their projects as well.  FWIW I had to download the source and compile it to use the examples in the linked blog post.  The binaries didn’t seem to be up to date. I prefer building off of the source anyway.</p>
<h2>Html5</h2>
<p>I’m reading <a href="http://www.amazon.com/Introducing-HTML5-Voices-That-Matter/dp/0321687299/ref=sr_1_1?ie=UTF8&amp;qid=1313189067&amp;sr=8-1">Introducing HTML5</a> and got through the chapter on the new structural Html 5 tags such as “header”.  The book references a study that showed the most common css class names and id’s used such as “header”, “footer”, “post”, “article” etc.  It made me wonder why the spec just didn’t standardize on class names and enforce semantics of those tags if the HTML 5 doctype is used.</p>
<p>I also discovered and starting using <a href="http://html5boilerplate.com">HTML 5 boilerplate</a> and <a href="http://www.modernizr.com/">Modernizr</a> which are both incredibly useful pieces of code.</p>
<h2>Asp.Net Html Helpers</h2>
<p>I started a small project of porting my Html helpers I created for <a href="http://www.createarestaurantwebsite.com/">Create a Restaurant Website</a>, into a self contained project.  My goal is to refine them a bit and put them on GitHub.</p>
<h2>Workouts</h2>
<p>I worked out 5 times this week with a mix of cardio and upper body on the power tower. I alternate cardio and upper body workouts. I’m going to get better at tracking these.</p>
<h2>Music</h2>
<p>I have been recording every Tuesday night with Cliff Johnson.  This week we wrote the main vocal melodies on the piano for the song we are working on.  I am stoked on it!</p>
<h2>Client Work</h2>
<p>I’m working on a really exciting project for one of my clients where I was able to really push some of my jQuery and HTML skills to the max.  The first phase should launch next week, when I can post some info about that.</p>
<h2>Online Marketing</h2>
<p>I am listening to <a href="http://www.audible.com/pd?asin=B00481F6YM">Attention! This Book Will Make You Money: How to Use Attention-Getting Online Marketing to Increase Your Revenue</a> via Audible.com.  It is really giving me a kick in the but to get more on top of my online presence.</p>
<h2>Vast Rank</h2>
<p>I have started a big redesign of Vast Rank.  I am converting it to use 960.gs and HTML5.  But more importantly I am branching out into many more review categories.  I’m pretty excited about it.</p>
<h2>Week Summary</h2>
<p>Overall this was a very productive week.  I worked hard at my day job and was pretty motivated all week.</p>
<h2>Next Weeks Goals</h2>
<ol>
<li>I want to have a successful launch for my customer</li>
<li>Finish the GUI redesign for <a href="http://www.vastrank.com/">Vast Rank</a></li>
<li>Workout 5 times</li>
<li>Spend quality time with my wife and dog</li>
<li>Blog a end of week summary</li>
</ol>
<p>Here’s to next week!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/jon-kraghs-week-in-review-august-12th-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dog Ringworm Photos, Diagnosis, and Cure</title>
		<link>http://www.jonkragh.com/index.php/dog-ringworm-photos-diagnosis-and-cure/</link>
		<comments>http://www.jonkragh.com/index.php/dog-ringworm-photos-diagnosis-and-cure/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 12:40:09 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Dogs]]></category>
		<category><![CDATA[Ringworm]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/dog-ringworm-photos-diagnosis-and-cure/</guid>
		<description><![CDATA[Disclaimer: I am not an expert on Dog Ringworm, I am just a dog owner that wants to share our success story! Adoption This past summer we adopted our amazing dog Lilah from a doggy foster mom named Shilpa. Shilpa had rescued Lilah from the Liberty Humane Society. When we got Lilah, Shilpa told us [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Disclaimer:</strong> I am not an expert on Dog Ringworm, I am just a dog owner that wants to share our success story!</p>
<h2>Adoption</h2>
<p>This past summer we adopted our amazing dog Lilah from a doggy foster mom named Shilpa. Shilpa had rescued Lilah from the Liberty Humane Society. When we got Lilah, Shilpa told us that we would need to go to the vet to have Lilah’s rash checked on (Shilpa had Lilah less than a week and was using topical cream which seemed to help a bit on the rash).</p>
<p>Here is a pic of the first day we got Lilah, notice the rash on her right rear leg.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_1884.jpg"><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="IMG_1884" src="http://www.jonkragh.com/wp-content/uploads/IMG_1884_thumb.jpg" border="0" alt="IMG_1884" width="550" height="367" /></a><span id="more-270"></span></p>
<h2>Treatment, Take 1</h2>
<p>We took Lilah to the Vet and they did a scan of Lilah’s rash with a florescent light which did not show any fungal infections.  This <strong>fluorescent light method will not catch all fungal infections</strong>.  Our vet, Dr. Jay (who we absolutely love BTW) from Twin River’s Animal Hospital in NJ put Lilah on Prednisone.  The Prednisone greatly reduced the rash when she was on the full dose twice a day.  As soon as we would back-off the medicine to a single dose a day, the <a href="http://www.jonkragh.com/wp-content/uploads/IMG_2104.jpg"><img style="background-image: none; border-right-width: 0px; margin: 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_2104" src="http://www.jonkragh.com/wp-content/uploads/IMG_2104_thumb.jpg" border="0" alt="IMG_2104" width="300" height="200" align="right" /></a>rash would come back in full force.  We went on another full round of Prednisone, and we were told by Dr Jay if that did not work we should go to a dermatologist for a second opinion. The second round of Prednisone had the same effect: great when on full strength but the rash came back as soon as we used lower doses.</p>
<h2>Time for the Doggy Dermatologist</h2>
<p>We then took Lilah to the wonderful people at Garden State Veterinary Specialists in Tinton Falls NJ (as of this posting they are also taking care <a href="http://www.facebook.com/ThePatrickMiracle">of Patrick another inspiring story</a> that is worth a look). Dr. Kathleen Kalaher, the GSVS dermatologist took care of Lilah.  Dr. Kalaher informed us that this could be ringworm, but that is rare in dogs in comparison to other animals such as cats.  At this point we were <a href="http://www.jonkragh.com/wp-content/uploads/IMG_1971.jpg"><img style="background-image: none; border-right-width: 0px; margin: 10px 0px 10px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_1971" src="http://www.jonkragh.com/wp-content/uploads/IMG_1971_thumb.jpg" border="0" alt="IMG_1971" width="300" height="200" align="right" /></a>informed that we should keep Lilah away from people and other dogs until we figured out the root cause.  This was tough being around the holidays.  <strong>Dr. Kalaher did a fungal culture which came back positive. Lilah had ringworm.</strong> Later, Dr. Kalaher sent the scrapings out to get an exact strand of ringworm and it was Trichophyton.</p>
<p>When we were waiting for the results of the first fungal culture I looked on the internet to find pictures of Dog Ringworm and I found the same pictures over and over and none of them really looked like Lilah’s.  I vowed that once we got through our case of ringworm that I would post pictures for other people to see (that’s what you are reading now!). The other thing that was odd was that my wife and I never got ringworm and we are always hugging, kissing, and overall glomming Lilah.</p>
<h2>Treatment, Take 2</h2>
<p>The treatment was done with several 14 day intervals of Fluconazole.  We originally purchased the Fluconazole from Walgreens and it cost <a href="http://www.jonkragh.com/wp-content/uploads/IMG_2519.jpg"><img style="background-image: none; border-right-width: 0px; margin: 10px 0px 10px 10px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IMG_2519" src="http://www.jonkragh.com/wp-content/uploads/IMG_2519_thumb.jpg" border="0" alt="IMG_2519" width="300" height="200" align="right" /></a>over $200, but I just got it since I was in a rush to get Lilah better.  There was no time to price shop. It turns out that Sam’s club and other places had the same thing for around $50!  So if you have to get these meds, shop around!  A few phone calls could save you major $.</p>
<h2>Lilah Gets Cured!</h2>
<p>The treatment took about two months and now Lilah is 100% cured! Her hair has grown back without any scaring! We had several fungal cultures done afterwards and they all came back negative.</p>
<h2>Photos</h2>
<p>I have a <a href="http://www.flickr.com/photos/lumen-studio/sets/72157626279962559/">full set of photos of Lilah’s leg on flickr</a> but here is a quick rundown here.</p>
<p>First day with Lilah</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_18841.jpg"><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="IMG_1884" src="http://www.jonkragh.com/wp-content/uploads/IMG_1884_thumb1.jpg" border="0" alt="IMG_1884" width="550" height="367" /></a></p>
<p>The rash gets better than worse once the Prednisone wears off</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_19711.jpg"><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="IMG_1971" src="http://www.jonkragh.com/wp-content/uploads/IMG_1971_thumb1.jpg" border="0" alt="IMG_1971" width="550" height="367" /></a></p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_2001.jpg"><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="IMG_2001" src="http://www.jonkragh.com/wp-content/uploads/IMG_2001_thumb.jpg" border="0" alt="IMG_2001" width="550" height="367" /></a></p>
<p>Here is where the rash was “sort of” getting better</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_2084.jpg"><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="IMG_2084" src="http://www.jonkragh.com/wp-content/uploads/IMG_2084_thumb.jpg" border="0" alt="IMG_2084" width="550" height="367" /></a></p>
<p>Sometime during the start of treatment with Fluconazole (the rash was wider by this time) – some hair coming back (see the white)</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_2514.jpg"><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="IMG_2514" src="http://www.jonkragh.com/wp-content/uploads/IMG_2514_thumb.jpg" border="0" alt="IMG_2514" width="550" height="367" /></a></p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_25191.jpg"><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="IMG_2519" src="http://www.jonkragh.com/wp-content/uploads/IMG_2519_thumb1.jpg" border="0" alt="IMG_2519" width="550" height="367" /></a></p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_2525.jpg"><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="IMG_2525" src="http://www.jonkragh.com/wp-content/uploads/IMG_2525_thumb.jpg" border="0" alt="IMG_2525" width="550" height="367" /></a></p>
<p>Today (this is many months later but it has been cured for quite some time).  Amazing recovery!</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_3463.jpg"><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="IMG_3463" src="http://www.jonkragh.com/wp-content/uploads/IMG_3463_thumb.jpg" border="0" alt="IMG_3463" width="550" height="367" /></a></p>
<p>One last one of us down at the Asbury Park Boardwalk.  She’s awesome!  Thank you Shilpa, Dr. Ajay Madaan (Dr. Jay) and Dr. Kathleen Kalaher you have made our family very happy!</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/IMG_3300-Version-2.jpg"><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="IMG_3300 - Version 2" src="http://www.jonkragh.com/wp-content/uploads/IMG_3300-Version-2_thumb.jpg" border="0" alt="IMG_3300 - Version 2" width="367" height="367" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/dog-ringworm-photos-diagnosis-and-cure/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Poor Man Buys Twice &#8211; Why More Expensive is Oftentimes Cheaper</title>
		<link>http://www.jonkragh.com/index.php/the-poor-man-buys-twice-why-expensive-is-cheaper/</link>
		<comments>http://www.jonkragh.com/index.php/the-poor-man-buys-twice-why-expensive-is-cheaper/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 01:28:14 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/the-poor-man-buys-twice-why-expensive-is-cheaper/</guid>
		<description><![CDATA[One of my old co-workers Val had a great Russian saying that was translated as: “the poor man buys twice”.  It means that when you buy something cheap, it will not last as long as the more expensive option and often times costs you more in the long run (since you have to buy it [...]]]></description>
			<content:encoded><![CDATA[<p>One of my old co-workers Val had a great Russian saying that was translated as: “the poor man buys twice”.  It means that when you buy something cheap, it will not last as long as the more expensive option and often times costs you more in the long run (since you have to buy it twice).  We live in a society where so many things are now throw-away items.  I am finding more often than not that cheaper options are generally more expensive in the long run for all kinds of things.</p>
<p>Here is an example of this old saying proving true for me this weekend.  Below is a photo that shows my rusty old shower caddy $19.99 and <a href="http://www.simplehuman.com/products/bathroom-organization/shower-caddies/tension-shower-caddy.html">my new simplehuman shower caddy</a> $103.99 after coupon.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/shower.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="shower" src="http://www.jonkragh.com/wp-content/uploads/shower_thumb.png" border="0" alt="shower" width="554" height="416" /></a></p>
<p><span id="more-194"></span>This is the third time that I replaced my old shower caddy in three years.  Each one really should have been replaced after 6 months because they rusted that fast!  Now, if you look at just the prices, an argument could be made that the cheaper shower caddy is still cheaper pricewise even after replacing it. But, that does not take into account the cost of my time.  As a successful computer consultant the extra 2.5 hours of my time to take this stupid shower caddy project on each time that it rusts, far outweighs the dollar value of the more expensive caddy that I put in.</p>
<p>It also does not take into account that the more expensive product has a better design.  It has easily adjustable shelves, better spring mounting for positioning the caddy and looks so much better.  Not to mention the intangible of “wow I have a nice shower” every time that I take a shower.</p>
<p>Not only did the old shower caddy look bad after a few months from rust, it also had me pay a “death tax” for its inevitable rusting together.  That is, it was rusted together which made getting this long thing almost impossible to remove from my shower!  Here is a video of the trouble that I had just taking the old shower caddy out.</p>
<p><img src="http://www.jonkragh.com/wp-content/plugins/flash-video-player/default_video_player.gif" /></p>
<p>Now here is the new shower caddy.</p>
<p><img src="http://www.jonkragh.com/wp-content/plugins/flash-video-player/default_video_player.gif" /></p>
<p>In this situation the “more expensive” shower caddy is actually cheaper for me when weighing eventual cost ($19.99 * N Years vs $103.99 * 1), cost of my time, and quality of life.  In software development this topic often comes up with consulting and/or the price of an employee.  It is hard to generalize every situation of value because I have seen cheap and expensive consultants produce equally bad results. So I<strong> will not</strong> say that more expensive equals better.</p>
<p>I will however say that this shower caddy situation resembles certain hiring decisions I have seen organizations face.  Since I am a consultant I have had an opportunity to see how different organizations approach hiring.  From my experience, the organizations who value the best talent and are willing to pay for it, end up spending less and getting further ahead in the long run.  The key is finding and keeping the talent that is actually worth the extra upfront investment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/the-poor-man-buys-twice-why-expensive-is-cheaper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rendering an ASP.net UserControl to a String</title>
		<link>http://www.jonkragh.com/index.php/rendering-an-asp-net-usercontrol-to-a-string/</link>
		<comments>http://www.jonkragh.com/index.php/rendering-an-asp-net-usercontrol-to-a-string/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 11:56:02 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/rendering-an-asp-net-usercontrol-to-a-string/</guid>
		<description><![CDATA[I have been converting one of my side projects from ASP.Net WebForms to ASP.Net MVC.  In order to reuse some of my existing ASP.net UserControls from WebForms in ASP.Net MVC, I tweaked a rending method found here and here. I improved on these methods by enabling the caller of the utility function to be the [...]]]></description>
			<content:encoded><![CDATA[<p>I have been converting one of my side projects from ASP.Net WebForms to ASP.Net MVC.  In order to reuse some of my existing ASP.net UserControls from WebForms in ASP.Net MVC, I tweaked a rending method found <a href="http://weblogs.asp.net/scottgu/archive/2006/10/22/Tip_2F00_Trick_3A00_-Cool-UI-Templating-Technique-to-use-with-ASP.NET-AJAX-for-non_2D00_UpdatePanel-scenarios.aspx">here</a> and <a href="http://stackoverflow.com/questions/258877/load-a-user-control-programmatically-in-to-a-html-text-writer">here</a>.</p>
<p>I improved on these methods by enabling the caller of the utility function to be the one to set properties on the UserControl in a strongly typed fashion. The is no reflection or any other special interface needed on the user control.  The key was adding a callback.</p>
<p>Here is what it looks like to call and render the control to a string by the caller.  In this example I am rendering my GoogleMap UserControl to a string.  The last argument I am passing is an anonymous method that is called by the utility function to initialize my control.</p>
<pre class="brush: csharp; gutter: false;">UIUtil.RenderUserControl&lt;GoogleMap&gt;("~/UserControls/GoogleMap.ascx",
    uc =&gt;
    {
        uc.CollegeToShow = CollegeToShow;
        uc.Height = Height;
        uc.Width = Width;
        uc.Mode = Mode;
    });</pre>
<p><span id="more-182"></span></p>
<p>The helper method is as follows:</p>
<pre class="brush: csharp; gutter: false;">public delegate void InitializeControlDelegate&lt;T&gt;(T ControlToUse);

public static string RenderUserControl&lt;T&gt;(string ControlPath, InitializeControlDelegate&lt;T&gt; InitControlCallback) where T : UserControl
{
    System.Web.UI.Page pageHolder = new Page();
    T ControlToRender = (T)pageHolder.LoadControl(ControlPath);
    pageHolder.Controls.Add(ControlToRender);
    InitControlCallback.Invoke(ControlToRender);
    StringWriter result = new StringWriter();
    System.Web.HttpContext.Current.Server.Execute(pageHolder, result, false);
    return result.ToString();
}</pre>
<p>This method uses a similar technique as to the methods linked above, but it has a callback which calls back the anonymous method that I declared in the caller.  The callback method passes back a strongly typed UserControl as the argument that we can use to set properties on the initialized UserControl.</p>
<p>That is all you need to make it all work.  To make things a little nicer for myself I added “RenderToString” methods on my UserControls.  If you can’t update the UserControls themselves you can just stick code like this in a helper library.</p>
<pre class="brush: csharp; gutter: false;">public partial class GoogleMap : System.Web.UI.UserControl
{
    public static string RenderToString(Item ItemToShow, string Height, string Width, Constants.MapMode Mode)
    {
        return UIUtil.RenderUserControl&lt;GoogleMap&gt;("~/UserControls/GoogleMap.ascx",
            uc =&gt;
            {
                uc.ItemToShow = ItemToShow;
                uc.Height = Height;
                uc.Width = Width;
                uc.Mode = Mode;
            });
    }
}</pre>
<p>Now from within my Asp.Net MVC page (or any place else), I can render my ASP.net WebForms UserControl Google Map like so:</p>
<pre class="brush: csharp; gutter: false;">&lt;%=GoogleMap.RenderToString(ItemToUse, "250px", "100%", Constants.MapMode.SingleItem)%&gt;</pre>
<p>Cheers,</p>
<p>Jon</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/rendering-an-asp-net-usercontrol-to-a-string/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Twitter Syntax / Commands &#8211; Facebook should also support them</title>
		<link>http://www.jonkragh.com/index.php/twitter-syntax-commands-facebook-should-also-support-them/</link>
		<comments>http://www.jonkragh.com/index.php/twitter-syntax-commands-facebook-should-also-support-them/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 02:02:40 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/twitter-syntax-commands-facebook-should-also-support-them/</guid>
		<description><![CDATA[Something that amazes me on Twitter, is that regular humans (non- programmers) are fine with, even good at adding little markup tags in tweets.  So now that we have seen that the masses are cool with adding little tags and markup to freeform content, we should embrace it! Since Facebook is the leading social network, [...]]]></description>
			<content:encoded><![CDATA[<p>Something that amazes me on Twitter, is that regular humans (non-<a href="http://www.jonkragh.com/wp-content/uploads/TwitterHashtag.png"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 10px 10px 0px 0px; border-left: 0px; border-bottom: 0px" title="Twitter-Hashtag" src="http://www.jonkragh.com/wp-content/uploads/TwitterHashtag_thumb.png" border="0" alt="Twitter-Hashtag" width="180" height="244" align="left" /></a> programmers) are fine with, even good at adding little markup tags in tweets.  So now that we have seen that the masses are cool with adding little tags and markup to freeform content, we should embrace it!</p>
<p>Since Facebook is the leading social network, they should also support a markup syntax in comments &amp; status updates <strong>because it is useful for humans and computer programs.<span id="more-170"></span><br />
</strong></p>
<p>It would be in Facebook’s best interest to improve the human user-<a href="http://www.jonkragh.com/wp-content/uploads/Humans.png"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 10px 10px 0px 0px; border-left: 0px; border-bottom: 0px" title="Humans" src="http://www.jonkragh.com/wp-content/uploads/Humans_thumb.png" border="0" alt="Humans" width="170" height="240" align="left" /></a>experience and also in their interest to add semantics to status updates and comments so that they are more useful for Computer Programs. Facebook is trying to push what they call “Platform” which is a way to write computer programs that integrate with Facebook.</p>
<p>Here are a few of examples of how Twitter markup syntax is beneficial for humans and computer programs. Maybe with enough retweets of this article, it could actually happen <img src='http://www.jonkragh.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Twitter Replies and Mentions</h2>
<p>Twitter supports the ability to reply and or mention another user and link to that user. From the <a href="http://help.twitter.com/forums/10711/entries/14595" target="_blank">Twitter getting started guide</a>:</p>
<blockquote><p>Any tweet beginning with @username is considered a reply.  We call tweets with @username elsewhere in the update mentions.</p></blockquote>
<p><strong><a href="http://www.jonkragh.com/wp-content/uploads/image3.png"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 0px; border-left: 0px; border-bottom: 0px" title="Example Twitter Mention" src="http://www.jonkragh.com/wp-content/uploads/image_thumb1.png" border="0" alt="Example Twitter Mention" width="546" height="151" /></a></strong></p>
<p><strong>User benefits</strong></p>
<ul>
<li>Get mentioned and new people notice you</li>
<li>Notice people that other people are mentioning</li>
</ul>
<p><strong>Computer program benefits</strong></p>
<ul>
<li>Indicates some kind of relationship between users – Example algorithm: mentions between two users may mean that those two users are interested in each other</li>
</ul>
<h2>Twitter Hashtags</h2>
<p>Twitter supports the ability to group tweets. From the <a href="http://help.twitter.com/forums/10711/entries/49309" target="_blank">Twitter getting started guide</a>.</p>
<blockquote><p>Because Twitter provided no easy way to group tweets or add extra data, the Twitter community came up with their own way: hashtags.  A hashtag is similar to other web tags- it helps add tweets to a category.  Hashtags have the &#8216;hash&#8217; or &#8216;pound&#8217; symbol (#) preceding the tag, like so: #traffic, #followfriday, #hashtag.  Hashtags can occur anywhere in the tweet: some people just add a # before a word they&#8217;re using, like so:</p></blockquote>
<p>Hashtags are huge and they have so much potential that it is far too much to fathom, but I’ll take a stab:</p>
<p><strong>User benefits</strong></p>
<ul>
<li>Easy way to tag / tie your post to a topic for others to find</li>
<li>Easy way to search on a topic</li>
<li>Real-time trends</li>
</ul>
<p><strong>Computer program benefits</strong></p>
<ul>
<li>Provides additional meaning to posts</li>
<li>Almost limitless possibilities</li>
</ul>
<p><strong>I could go on with more specific examples, but it boils down to this.  Markup in free-form content:</strong></p>
<ul>
<li>Makes new tools possible for users</li>
<li>Provides semantics for computer programs</li>
</ul>
<p>At the end of the day, I really don’t <span style="font-size: x-small;"><a href="http://www.jonkragh.com/wp-content/uploads/image2.png"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 10px 10px 0px 0px; border-left: 0px; border-bottom: 0px" title="Computer" src="http://www.jonkragh.com/wp-content/uploads/image_thumb.png" border="0" alt="Computer" width="244" height="213" align="left" /></a></span>care if Facebook adds markup extensions.  However, I do think it would be good for the web, so that user-generated content has more meaning.  I would also push that if Facebook does implement some kind of markup, that they use the same popular markup that already exists on Twitter.  Standards are the backbone of the web.</p>
<p>Cheers,</p>
<p>Jon</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/twitter-syntax-commands-facebook-should-also-support-them/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to get Google to index only part of a Webpage</title>
		<link>http://www.jonkragh.com/index.php/how-to-get-google-to-index-only-part-of-a-webpage/</link>
		<comments>http://www.jonkragh.com/index.php/how-to-get-google-to-index-only-part-of-a-webpage/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 12:55:40 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Vast Rank]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/how-to-get-google-to-index-only-part-of-a-webpage/</guid>
		<description><![CDATA[As of today, there is no way to explicitly have Google index only certain parts of a single Webpage.  I am writing this post in order to show my need for partial page indexing support and to discuss a few possible solutions for this today.  My need for this stems from the Personalization of WebPages, [...]]]></description>
			<content:encoded><![CDATA[<p>As of today, there is no way to explicitly have Google index only certain parts of a single Webpage.  I am writing this post in order to show my need for partial page indexing support and to discuss a few possible solutions for this today.  <a href="http://www.jonkragh.com/wp-content/uploads/istock-000005882596xsmall.jpg"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 10px 0px 0px; border-right-width: 0px" title="iStock_000005882596XSmall" src="http://www.jonkragh.com/wp-content/uploads/istock-000005882596xsmall-thumb.jpg" border="0" alt="iStock_000005882596XSmall" width="244" height="184" align="left" /></a>My need for this stems from the Personalization of WebPages, a feature that makes the web better for people.  I hope that this post can create discussion between us and maybe someone from Google will be kind enough chime in and provide us with guidelines on how to design websites where we want Google to ignore parts of a WebPage in their index.</p>
<p><span id="more-145"></span></p>
<p>The premise of my need is that I have WebPages that have content for everyone, and content customized for the specific user viewing the webpage.  I lump this user specific content under the term “Personalization”.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/image.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 0px 0px; border-right-width: 0px" title="image" src="http://www.jonkragh.com/wp-content/uploads/image-thumb.png" border="0" alt="image" width="384" height="293" /></a></p>
<p>Personalization is a powerful mechanism for making the Web more useful for people.  Most of us are familiar with the personalization on Amazon.com where they target items to you based on your viewing and buying habits.</p>
<p>On <a href="http://www.VastRank.com">www.VastRank.com</a> (a College Review Website site that I created) when a user is viewing a College Profile page, they are also shown partial college reviews for other colleges that they may be interested in.  I go deep into the personalization implementation in my Google I/O presentation <a href="http://code.google.com/events/io/sessions/UsingAjaxApisUserGen.html" target="_blank">Using AJAX APIs to Navigate User-Generated Content</a>.  Here is a slide from that deck that illustrates the “personalized” suggestions that are shown to users on the right hand side of college profile pages.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/image1.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 0px 0px; border-right-width: 0px" title="image" src="http://www.jonkragh.com/wp-content/uploads/image-thumb1.png" border="0" alt="image" width="504" height="292" /></a></p>
<p>The main issue here is that Googlebot is now going to see partial user reviews for other colleges on different college profile pages. This causes two major issues:</p>
<ul>
<li>Duplicate content problems</li>
<li>Text from other college reviews show up in the search results for Other College Profile pages in the Google.com Search</li>
</ul>
<h2>Should Google support robots-nocontent?</h2>
<p>One implementation that would solve my problem would be if Google implemented <a href="http://www.ysearchblog.com/2007/05/02/introducing-robots-nocontent-for-page-sections/" target="_blank">Yahoo’s robots-nocontent tag</a>.  I recently tweeted back and forth on this topic with Google’s Matt Cutts on Twitter:</p>
<p><strong>Jon Kragh</strong></p>
<blockquote><p>“Google (@<a href="http://twitter.com/mattcutts">mattcutts</a>) please support Robots-Nocontent &#8211; I have partial content tailored for each specific user, that should not be indexed”</p></blockquote>
<p><strong>Matt Cutts</strong></p>
<blockquote><p><a href="http://twitter.com/mattcutts">mattcutts</a>@<a href="http://twitter.com/jonkragh">jonkragh</a> we looked at how many sites use robots nocontent on the web and it was miniscule, so we decided not to do it.</p></blockquote>
<p><strong>Jon Kragh</strong></p>
<blockquote><p>@<a href="http://twitter.com/mattcutts">mattcutts</a> if Google blessed Robots-Nocontent more people would use it-should personalized content (i.e. suggestions) be loaded via AJAX?</p></blockquote>
<p>So at this point, it looks like robots-nocontent is not one of Google’s top priorities.</p>
<h2>robots-nocontent is not right either</h2>
<p>Initially I looked at robots-nocontent because it was the closest thing I could find for a partial content indexing solution.  However, robots-nocontent is so general, that it might not be the best long-term solution for the web.  Looking back at what I have conceptually, I have content for everyone, and content for a particular user.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/image.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 0px 0px; border-right-width: 0px" title="image" src="http://www.jonkragh.com/wp-content/uploads/image-thumb.png" border="0" alt="image" width="384" height="293" /></a></p>
<p>A better solution than robots-nocontent would be to create a new tag for this scenario that has more meaning.</p>
<h2>robots-user-specific-content</h2>
<p>I suggest a new tag that can denotes content that will be different for each user that visits the website: <strong>robots-user-specific-content</strong>.  For the time being Google could ignore that content, much like an implementation of robots-nocontent would work.  However, having this extra meaning would allow for possible extensions to Google in the future, where a user could search with their identity and get results back from websites with content personalized for that user.</p>
<h2>What can I do now?</h2>
<p>For now I am stuck!  I am considering loading personalized content through AJAX to avoid having it indexed.  However, this would be a guess on my part on Google’s indexing algorithm.  Will Google index AJAX content?  Will it penalize me because I’m loading different content in a section of a page via AJAX each time Googlebot visits my site?  This is where I would like your feedback, and hopefully some guidance from Google!</p>
<p>Cheers,</p>
<p>Jon</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/how-to-get-google-to-index-only-part-of-a-webpage/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Setting up a Headless iTunes Server</title>
		<link>http://www.jonkragh.com/index.php/setting-up-a-headless-itunes-server/</link>
		<comments>http://www.jonkragh.com/index.php/setting-up-a-headless-itunes-server/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 13:50:36 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[Home Office]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/setting-up-a-headless-itunes-server/</guid>
		<description><![CDATA[In my home office, I have a headless server running Windows Server 2008 with iTunes 8 installed.  This machine is where I store all of my music, photos, videos, and other entertainment related files.  The interesting thing is that I also use this server to wirelessly broadcast my iTunes music digitally to my kick-ass home [...]]]></description>
			<content:encoded><![CDATA[<p>In my home office, I have a headless server running Windows</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/img-4650.jpg"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 10px 0px 0px; border-right-width: 0px" title="IMG_4650" src="http://www.jonkragh.com/wp-content/uploads/img-4650-thumb.jpg" border="0" alt="IMG_4650" width="244" height="164" align="left" /></a></p>
<p>Server 2008 with iTunes 8 installed.  This machine is where I store all of my music, photos, videos, and other entertainment related files.  The interesting thing is that I also use this server to wirelessly broadcast my iTunes music digitally to my kick-ass home studio setup (a Benchmark DAC1, Coleman Audio M3, Quested Powered F11As, and a REL Subwoofer). The setup that I am about to describe should work equally as well for those of you who have any kind of audio playback equipment that has an optical audio input.</p>
<p><span id="more-138"></span></p>
<p>The setup is simple.  I bought a <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16856101029" target="_blank">Shuttle XPC SD30G2B</a> and a <a href="http://www.jonkragh.com/wp-content/uploads/img-4638.jpg"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 10px 0px 0px; border-right-width: 0px" title="IMG_4638" src="http://www.jonkragh.com/wp-content/uploads/img-4638-thumb.jpg" border="0" alt="IMG_4638" width="244" height="164" align="left" /></a>RocketRaid 1740 card off of NewEgg.com.  Here is the machine stashed away behind some of my other gear.  The server has no monitor attached and I use Remote Desktop to connect to it.  The other key component is the <a href="http://www.apple.com/airportexpress/" target="_blank">Apple Airport Express</a> which has a digital audio out.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/img-4637.jpg"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 10px 0px 0px; border-right-width: 0px" title="Look ma, no monitor!" src="http://www.jonkragh.com/wp-content/uploads/img-4637-thumb.jpg" border="0" alt="Look ma, no monitor!" width="244" height="164" align="left" /></a></p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/img-4643.jpg"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 0px 0px; border-right-width: 0px" title="Applew Airport Express" src="http://www.jonkragh.com/wp-content/uploads/img-4643-thumb.jpg" border="0" alt="Applew Airport Express" width="244" height="164" align="left" /></a></p>
<p>When I launch iTunes, it get the following error message, since the onboard audio card is not configured properly (I believe that is because I do not have anything hooked up to the onboard audio card).  This message can be ignored.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/ituneserror.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 0px 0px; border-right-width: 0px" title="itunes-error" src="http://www.jonkragh.com/wp-content/uploads/ituneserror-thumb.png" border="0" alt="itunes-error" width="244" height="122" /></a></p>
<p>After iTunes launches you can choose the Airport Express from the dropdown list on the bottom of iTunes.  You only have to do this once, if your Airport Express is always plugged in.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/itunesselectspeaker.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 0px 0px; border-right-width: 0px" title="itunes-select speaker" src="http://www.jonkragh.com/wp-content/uploads/itunesselectspeaker-thumb.png" border="0" alt="itunes-select speaker" width="244" height="189" /></a></p>
<p>Here is the Benchmark DAC1 (on the bottom of the rack) set to its optical input with it’s blue status light lit up.  The blue status light will light up on the Benchmark DAC1 as long as something is playing from iTunes.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/img-46452.jpg"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 10px 0px 0px; border-right-width: 0px" title="IMG_4645 2" src="http://www.jonkragh.com/wp-content/uploads/img-46452-thumb.jpg" border="0" alt="IMG_4645 2" width="244" height="228" /></a></p>
<p>This area also doubles as my home office, where I work as an independent Software Development Consultant.  I get to listen to music on a kick-ass system while coding!</p>
<p>The setup is also very reliable, Windows Server 2008 is rock solid and so is the Airport Express.  One last note: Originally I had setup Windows Home Server but it has <a href="http://support.microsoft.com/kb/946676" target="_blank">file corruption issues</a>, so I highly recommend staying away from WHS.</p>
<p><strong>EDIT: 7/24/2009 – This does not work when you try to use the physical soundcard connected to the server.</strong></p>
<p>I just tried switching from using AirTunes to a physical sound card on the Server and it does not work when using via RDP (Remote Desktop).  When I RDP into the server and click on Control Panel –&gt; Sound, I see a message: “No audio devices are installed”.  If I log on locally at the physical computer, I can see all of the devices fine.</p>
<p><a href="http://www.jonkragh.com/wp-content/uploads/Noaudiodevicesareinstalled6.png"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 10px 0px 0px; border-left: 0px; border-bottom: 0px" title="No-audio-devices-are-installed" src="http://www.jonkragh.com/wp-content/uploads/Noaudiodevicesareinstalled_thumb.png" border="0" alt="No-audio-devices-are-installed" width="504" height="515" /></a></p>
<p>It turns out that this is “by design” and choosing “Leave at Remote Computer” in Remote Desktop is ignored by Windows Server 2008 x64&#8243;.  Here is a <a href="http://support.microsoft.com/kb/827483" target="_blank">link to the KB article </a>and a <a href="http://social.technet.microsoft.com/Forums/en-US/winserverTS/thread/2b65bfc3-89b9-4d0b-8244-7d02081a1f03?prof=required" target="_blank">thread on the TechNet forums</a> describing this.</p>
<p>So, at least for the time being, I can still play iTunes from the server to AirTunes, even when logged into the server via Remote Desktop.</p>
<p>Cheers,<br />
Jon</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/setting-up-a-headless-itunes-server/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>My Journey to Google</title>
		<link>http://www.jonkragh.com/index.php/my-journey-to-google/</link>
		<comments>http://www.jonkragh.com/index.php/my-journey-to-google/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 14:26:47 +0000</pubDate>
		<dc:creator>Jon Kragh</dc:creator>
				<category><![CDATA[Google API]]></category>
		<category><![CDATA[Google I/O 2009]]></category>
		<category><![CDATA[Vast Rank]]></category>

		<guid isPermaLink="false">http://www.jonkragh.com/index.php/my-journey-to-google/</guid>
		<description><![CDATA[Recently, I had the great honor of being asked by Google to present at Google I/O 2009.  Here is the story of my journey including: how to get noticed by Google, getting invited to present at Google I/O, practicing the presentation with my Google contact, the hours leading up to the presentation, the presentation itself, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jonkragh.com/wp-content/uploads/copybeanbag.jpg"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 10px 10px 0px 0px; border-left: 0px; border-bottom: 0px" title="copybeanbag" src="http://www.jonkragh.com/wp-content/uploads/copybeanbag-thumb1.jpg" border="0" alt="copybeanbag" width="244" height="164" align="left" /></a>Recently, I had the great honor of being asked by Google to present at <a href="http://code.google.com/events/io/sessions/UsingAjaxApisUserGen.html" target="_blank">Google I/O 2009</a>.  Here is the story of my journey including: how to get noticed by Google, getting invited to present at Google I/O, practicing the presentation with my Google contact, the hours leading up to the presentation, the presentation itself, and the after party!  I have included some behind the scenes photos and videos as well.</p>
<p><span id="more-105"></span></p>
<h2>How did I get noticed by Google?</h2>
<p><a href="http://www.jonkragh.com/wp-content/uploads/google-map-marker-google-io-20091.jpg"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 10px 10px 0px 0px; border-left: 0px; border-bottom: 0px" title="Google_Map_Marker_Google_IO_2009" src="http://www.jonkragh.com/wp-content/uploads/google-map-marker-google-io-2009-thumb1.jpg" border="0" alt="Google_Map_Marker_Google_IO_2009" width="244" height="164" align="left" /></a>Recently, I saw a beer commercial that said “Rule #1 of how to get the girl: be good looking!”.  So here is my rule of how to get noticed by Google “Rule #1 of how to get noticed by Google: use the Google APIs in some kick-ass way!”.  Google is building a developer platform and <strong>they want to show off</strong> developers utilizing said platform. So if you do something cool with the Google APIs, it is easier to get noticed than you may think.</p>
<h2>How did I get asked to present at Google I/O?</h2>
<p><a href="http://www.jonkragh.com/wp-content/uploads/google-io-2009-registration1.jpg"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 10px 10px 0px 0px; border-left: 0px; border-bottom: 0px" title="Google_IO_2009_Registration" src="http://www.jonkragh.com/wp-content/uploads/google-io-2009-registration-thumb1.jpg" border="0" alt="Google_IO_2009_Registration" width="244" height="164" align="left" /></a>My main “in” at Google was that anytime that I did something rather cool with the Google APIs, I pinged the Google Employee Developer I met in the Google Developer Newsgroups.  I did not expect anything in return from him. I thought “hey I just implemented something really cool and they might be interested”. It turns out that they were indeed interested and extremely friendly.  Every time that I implemented something substantially new and cool, we would have an open dialog about what would make my application better and they would say things such as “hey did you know we have the Client Location API, this would be really cool for your site…”.  It turns out that I must have pinged my Google contact at the exact right time (with information about major updates to my site).  I had just completed some advanced Google Maps coding and once they saw it, they officially invited me to Google IO to be in the <a href="http://www.jonkragh.com/index.php/jon-kragh-video-interview-at-google-io-speaking-about-vast-rank-and-the-google-apis/" target="_blank">Developer Sandbox</a> and to <a href="http://code.google.com/events/io/sessions/UsingAjaxApisUserGen.html" target="_blank">present a session</a>.</p>
<h2>Preparing my presentation</h2>
<p><a href="http://www.jonkragh.com/wp-content/uploads/google-io-2009-conference-room1.jpg"><img style="border-right: 0px; border-top: 0px; display: inline; margin: 10px 10px 0px 0px; border-left: 0px; border-bottom: 0px" title="Google_IO_2009_Conference_Room" src="http://www.jonkragh.com/wp-content/uploads/google-io-2009-conference-room-thumb1.jpg" border="0" alt="Google_IO_2009_Conference_Room" width="244" height="164" align="left" /></a>So now there I was, Google asked me (OMG!) to come out and speak and they wanted me to send out a rough concept of what I might want to present.  Initially I proposed a session called “Building a cool app on an hour a day, a rebel’s view of the world”.  That presentation would have been all about the mindset that I had and steps I took to successfully building <a href="http://www.VastRank.com">www.VastRank.com</a> in my spare time.   Google liked that presentation, but they wanted it to be more focused on the APIs since that is what a lot of visitors to <a href="http://code.google.com/events/io/" target="_blank">Google I/O</a> would be looking for.</p>
<p>So I changed my presentation to “Using AJAX APIs to Navigate User-Generated Content”.  The presentation was about how do you take all of this information that users have submitted and sort and present it to other users in an interesting and useful  way.  The title of the session was play on a Don Box title “<a href="http://videos.visitmix.com/MIX07/DEV03" target="_blank">Navigating the Programmable Web</a>”.</p>
<h2>Rehearsing with the Google AJAX API Team</h2>
<p>Once I had my presentation prepared, I rehearsed it over two<strong> </strong>video conferences with Adam Feldman, the Google AJAX APIs Product Manager.  Adam was extremely smart, and had a way to hear what I was saying and then summarize some things into a much more compelling concise point.</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c7836a9e-a6fb-4920-a29a-494ced7f88e9" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<div id="280ba08e-40d3-44d0-a896-4ed7e8e2a3d4" style="margin: 0px; padding: 0px; display: inline;">
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/uZeb1x-IXDo&amp;hl=en" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/uZeb1x-IXDo&amp;hl=en"></embed></object></div>
</div>
</div>
<p>I arrived to the conference a day early, where I was able to do my presentation in the actual conference room to a group of Googlers.  I  am so glad that I had that opportunity, because I rushed through my first live run and was 15 minutes short of the target time. I needed to <strong>slow down </strong>the next day!</p>
<h2>The Session: Using AJAX APIs to Navigate User-Generated Content</h2>
<p><a href="http://code.google.com/events/io/sessions/UsingAjaxApisUserGen.html" target="_blank">Here is a link</a> to the full to the official Google I/O Session page which has the video and slides.</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:ae749aec-caf6-46a6-9e78-92ace181c415" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<div id="9fd2fcc2-c2ae-4ebc-a49c-2aa483105d34" style="margin: 0px; padding: 0px; display: inline;">
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/LP9-M2zERo4&amp;hl=en" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/LP9-M2zERo4&amp;hl=en"></embed></object></div>
</div>
</div>
<ul>
<li><strong>00:24</strong> &#8211; Who am I?</li>
<li><strong>01:26</strong> &#8211; Introduction to VastRank.com</li>
<li><strong>02:56</strong> &#8211; Overview of the Google AJAX APIs Used</li>
<li><strong>07:15</strong> &#8211; Using Google Maps on the College Profile</li>
<li><strong>11:41</strong> &#8211; VastRank.com Client Architecture</li>
<li><strong>12:39</strong> &#8211; Setting the Map Center</li>
<li><strong>14:07</strong> &#8211; Loading Map Markers via AJAX</li>
<li><strong>15:07</strong> &#8211; Algorithm for What is in View on a Map</li>
<li><strong>28:25</strong> &#8211; Map InfoWindows</li>
<li><strong>30:38</strong> &#8211; Geocoding via AJAX and HTTP</li>
<li><strong>34:45</strong> &#8211; Personalization &amp; Suggestion Engine (ClientLocation)</li>
<li><strong>39:28</strong> &#8211; Translation / Languages API</li>
<li><strong>45:01</strong> &#8211; Questions</li>
</ul>
<h2>The After Party</h2>
<p>Google I/O 2009 was a two day event.  I presented on day one and at the end of day one Google through a massive after party.  Here I took a quick video near the end of the evening.</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:ac708eb6-1b18-4294-93f0-9af6f7b65b1a" class="wlWriterEditableSmartContent" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<div id="78d1888c-942b-4d02-8042-9ecdfb20733d" style="margin: 0px; padding: 0px; display: inline;">
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/ifZJ_WRalUY&amp;hl=en" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/ifZJ_WRalUY&amp;hl=en"></embed></object></div>
</div>
</div>
<p>Cheers,<br />
Jon</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonkragh.com/index.php/my-journey-to-google/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
