<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Ralph Whitbeck - Blog - Programming</title>
    <link>http://ralphwhitbeck.com/</link>
    <description />
    <language>en-us</language>
    <copyright>Ralph Whitbeck</copyright>
    <lastBuildDate>Tue, 22 Jun 2010 01:24:59 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>ralph.whitbeck@gmail.com</managingEditor>
    <webMaster>ralph.whitbeck@gmail.com</webMaster>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=052711fb-4998-4af2-b597-cbf249d783c9</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,052711fb-4998-4af2-b597-cbf249d783c9.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,052711fb-4998-4af2-b597-cbf249d783c9.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=052711fb-4998-4af2-b597-cbf249d783c9</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <iframe src="http://ralphwhitbeck.com/demos/2010/June/jQuery-Twitter-Template/twitter.html" width="320" height="235" align="right" frameborder="0" scrolling="no">
        </iframe>
        <p>
A while back, I wrote a blog post on <a href="http://ralphwhitbeck.com/2007/11/20/PullingTwitterUpdatesWithJSONAndJQuery.aspx" target="_blank">how
to pull in your last three twitter posts into your web page via jQuery and JSON</a>.
It's still today a very popular post. 
</p>
        <p>
A lot has happened since that post and I wanted to re-address it and show you an alternative
way of pulling in your Twitter feed via jQuery and the new Templating plugin developed
by Microsoft. On the right is a new Twitter widget I put together using the new jQuery
templating plugin.
</p>
        <h3>Microsoft's Templating Plugin
</h3>
        <p>
During <a href="http://live.visitmix.com/MIX10/Sessions/KEY02" target="_blank">MIX10,
John Resig and Microsoft announced that Microsoft would be contributing code back
to the jQuery Project</a>. One of their first contributions was the <a href="http://wiki.github.com/nje/jquery/jquery-templates-proposal" target="_blank">Templating
plugin</a>. Microsoft created templates for jQuery so that JavaScript developers could
use jQuery to easily display a set of data.
</p>
        <p>
The source code for the plugin can be found in the <a href="http://github.com/nje/jquery-tmpl" target="_blank">jQuery-tmpl
GitHub repository</a>. The plugin requires jQuery 1.4.2 or higher.
</p>
        <h3>Getting Setup
</h3>
        <p>
Before we start you'll need the following:
</p>
        <ul>
          <li>
            <a href="http://docs.jquery.com/Downloading_jQuery" target="_blank">Download jQuery
1.4.2</a> or use a CDN version (<a href="http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery" target="_blank">Google</a>, <a href="http://www.asp.net/ajaxlibrary/cdn.ashx" target="_blank">Microsoft</a>, <a href="http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery" target="_blank">jQuery</a>)</li>
          <li>
            <a href="http://github.com/nje/jquery-tmpl" target="_blank">Download the Template
Plugin</a>
          </li>
          <li>
            <a href="http://ralphwhitbeck.com/demos/2010/June/jQuery-Twitter-Template/jQuery-Twitter-Template.zip">Download
the sample code for this post</a>. You'll need <strong>supporting_methods.js</strong> and <strong>style.js</strong>.</li>
          <li>
Twitter account</li>
        </ul>
        <p>
Create a html page, and include jQuery, the template plugin and the supporting_methods.js.
Then include the style.css doc so that your code from the demo we do looks nice.
</p>
        <h3>The HTML
</h3>
        <p>
Since each tweet will be listed as a list item in an unordered list the only required
HTML we need is an empty ul:
</p>
        <pre class="brush: html">
		&lt;ul id="renderTweets"&gt;&lt;/ul&gt;
	</pre>
        <p>
In our demo though we want to make it a complete widget. We need some extra layout
html to be able to provide a heading and a link to take you to more tweets. Here is
the full html we'll use:
</p>
        <pre class="brush: html">
		&lt;div id="Tweets"&gt;
			&lt;h3&gt;@RedWolves Tweets&lt;/h3&gt;
		  	&lt;ul id="renderTweets"&gt;&lt;/ul&gt;
			&lt;div id="more"&gt;
				&lt;a href="http://twitter.com/redwolves"&gt;More &amp;gt;&lt;/a&gt;
			&lt;/div&gt;
		&lt;/div&gt;
	</pre>
        <p>
Make sure you replace my twitter name, RedWolves, with yours. 
</p>
        <h3>Making the Ajax request
</h3>
        <p>
Now let's get the data from Twitter. We'll use a JSONP ajax call to get back the JSON
data of the last three tweets from Twitter. To get the JSON data we will use the <a href="http://dev.twitter.com/doc/get/statuses/user_timeline" target="_blank">user
timeline of the Twitter API</a>.
</p>
        <pre class="brush: js">
		$("document").ready(function(){
			var url = "http://api.twitter.com/1/statuses/user_timeline.json?id=RedWolves&amp;count=3&amp;callback=?"
			$.ajax({
				dataType: 'jsonp',
				url: url,
				jsonpCallback: "renderTweets" 
			});
		});
	</pre>
        <p>
At the end of the Twitter API url that we declare we attach the user id of the user
timeline we want to see, in this case mine, RedWolves, so make sure to update with
the username you wish to see. We then declare the url and call the <a href="http://api.jquery.com/jQuery.ajax/" target="_blank">.ajax()</a> method
and provide it with the dataType 'jsonp' so that we can pull the data via cross-domain.
We set the url and then tell it which function we will call after the data is loaded.
After the data is loaded we will call the function 'renderTweets', defined below,
which will run the data through the template.
</p>
        <h3>Defining the Template
</h3>
        <p>
Now let's define the template that will display the data we get back from the Ajax
request. We define the template in a script tag and we provide it with a type of "text/template"
and a unique ID.
</p>
        <pre class="brush: html">
		&lt;script type="text/template" id="twitterTemplate"&gt;
			&lt;li&gt;
					&lt;img src="${ user['profile_image_url'] }" /&gt; 
					${ text.linkify().atify() } 
					&lt;span class="created_at"&gt;
						${ relative_time(created_at) } via ${ source }
					&lt;/span&gt;
			&lt;/li&gt;
		&lt;/script&gt;
	</pre>
        <p>
On each JSON item we will run it through the template and create an li element with
the profile photo, tweet text, when it was created and what source the tweet came
from (e.g. Twitter for iPhone, web, etc.).
</p>
        <p>
We are using a couple of supporting methods to help us in formatting. .linkify which
will make any link a hyper link, atify which will link up any @screenname to their
twitter profile and relative_time which will turn the created time into Twitter style
time. You can find these methods in the supporting_methods.js file.
</p>
        <h3>Putting it all together
</h3>
        <p>
The last bit of jQuery code we need to do is to actually call the plugin and combine
the template with the data and put it into the DOM. Here we will define the renderTweets
callback function.
</p>
        <pre class="brush: js">
		function renderTweets(data) {
			$("#twitterTemplate")
				.render(data)
				.appendTo("#renderTweets");
		}
	</pre>
        <p>
What we do is select our template, call the template plugin method, .render, which
takes in the data from the Ajax call and renders the results against the template,
and then append the results to the desired element in the HTML, the ul with id of
renderTweets.
</p>
        <h3>The whole HTML
</h3>
        <pre class="brush: html">
		&lt;!DOCTYPE html&gt;
		&lt;html&gt;
			&lt;head&gt;
				&lt;meta charset=utf-8 /&gt;
				&lt;title&gt;twitter&lt;/title&gt;
				&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;&lt;/script&gt;
				&lt;script src="jquery.tmpl.js"&gt;&lt;/script&gt;
				&lt;script src="supporting_methods.js"&gt;&lt;/script&gt;
				&lt;link rel="stylesheet" href="style.css" type="text/css" media="screen" title="no title" charset="utf-8"&gt;
				&lt;script type="text/template" id="twitterTemplate"&gt;
					&lt;li&gt;
							&lt;img src="${ user['profile_image_url'] }" /&gt; 
							${ text.linkify().atify() } 
							&lt;span class="created_at"&gt;
								${ relative_time(created_at) } via ${ source }
							&lt;/span&gt;
					&lt;/li&gt;
				&lt;/script&gt;
				&lt;script type="text/javascript"&gt;
					$("document").ready(function(){
						var url = "http://api.twitter.com/1/statuses/user_timeline.json?id=RedWolves&amp;count=3&amp;callback=?"
						$.ajax({
							dataType: 'jsonp',
							url: url,
							jsonpCallback: "renderTweets" 
						});
					});

					function renderTweets(data) {
						$("#twitterTemplate")
							.render(data)
							.appendTo("#renderTweets");
					}
				&lt;/script&gt;
			&lt;/head&gt;
		&lt;body&gt;
		  &lt;div id="Tweets"&gt;
			&lt;h3&gt;@RedWolves Tweets&lt;/h3&gt;
		  	&lt;ul id="renderTweets"&gt;&lt;/ul&gt;
			&lt;div id="more"&gt;
				&lt;a href="http://twitter.com/redwolves"&gt;More &gt;&lt;/a&gt;
			&lt;/div&gt;
		  &lt;/div&gt;
		&lt;/body&gt;
		&lt;/html&gt;​
		
	</pre>
        <p>
          <hr />
          <br />
        </p>
        <p>
          <a href="http://ralphwhitbeck.com/demos/2010/June/jQuery-Twitter-Template/jQuery-Twitter-Template.zip" class="button">Source
Code</a>
          <a href="http://ralphwhitbeck.com/demos/2010/June/jQuery-Twitter-Template/twitter.html" class="button">Demo</a>
        </p>
        <img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=052711fb-4998-4af2-b597-cbf249d783c9" />
      </body>
      <title>Using jQuery and Templating to Pull and Display Your Twitter Updates</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,052711fb-4998-4af2-b597-cbf249d783c9.aspx</guid>
      <link>http://ralphwhitbeck.com/2010/06/22/UsingJQueryAndTemplatingToPullAndDisplayYourTwitterUpdates.aspx</link>
      <pubDate>Tue, 22 Jun 2010 01:24:59 GMT</pubDate>
      <description>&lt;iframe src="http://ralphwhitbeck.com/demos/2010/June/jQuery-Twitter-Template/twitter.html" width="320" height="235" align="right" frameborder="0" scrolling="no"&gt;
&lt;/iframe&gt;
&lt;p&gt;
A while back, I wrote a blog post on &lt;a href="http://ralphwhitbeck.com/2007/11/20/PullingTwitterUpdatesWithJSONAndJQuery.aspx" target="_blank"&gt;how
to pull in your last three twitter posts into your web page via jQuery and JSON&lt;/a&gt;.
It's still today a very popular post. 
&lt;/p&gt;
&lt;p&gt;
A lot has happened since that post and I wanted to re-address it and show you an alternative
way of pulling in your Twitter feed via jQuery and the new Templating plugin developed
by Microsoft. On the right is a new Twitter widget I put together using the new jQuery
templating plugin.
&lt;/p&gt;
&lt;h3&gt;Microsoft's Templating Plugin
&lt;/h3&gt;
&lt;p&gt;
During &lt;a href="http://live.visitmix.com/MIX10/Sessions/KEY02" target="_blank"&gt;MIX10,
John Resig and Microsoft announced that Microsoft would be contributing code back
to the jQuery Project&lt;/a&gt;. One of their first contributions was the &lt;a href="http://wiki.github.com/nje/jquery/jquery-templates-proposal" target="_blank"&gt;Templating
plugin&lt;/a&gt;. Microsoft created templates for jQuery so that JavaScript developers could
use jQuery to easily display a set of data.
&lt;/p&gt;
&lt;p&gt;
The source code for the plugin can be found in the &lt;a href="http://github.com/nje/jquery-tmpl" target="_blank"&gt;jQuery-tmpl
GitHub repository&lt;/a&gt;. The plugin requires jQuery 1.4.2 or higher.
&lt;/p&gt;
&lt;h3&gt;Getting Setup
&lt;/h3&gt;
&lt;p&gt;
Before we start you'll need the following:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://docs.jquery.com/Downloading_jQuery" target="_blank"&gt;Download jQuery
1.4.2&lt;/a&gt; or use a CDN version (&lt;a href="http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery" target="_blank"&gt;Google&lt;/a&gt;, &lt;a href="http://www.asp.net/ajaxlibrary/cdn.ashx" target="_blank"&gt;Microsoft&lt;/a&gt;, &lt;a href="http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery" target="_blank"&gt;jQuery&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://github.com/nje/jquery-tmpl" target="_blank"&gt;Download the Template
Plugin&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://ralphwhitbeck.com/demos/2010/June/jQuery-Twitter-Template/jQuery-Twitter-Template.zip"&gt;Download
the sample code for this post&lt;/a&gt;. You'll need &lt;strong&gt;supporting_methods.js&lt;/strong&gt; and &lt;strong&gt;style.js&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
Twitter account&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Create a html page, and include jQuery, the template plugin and the supporting_methods.js.
Then include the style.css doc so that your code from the demo we do looks nice.
&lt;/p&gt;
&lt;h3&gt;The HTML
&lt;/h3&gt;
&lt;p&gt;
Since each tweet will be listed as a list item in an unordered list the only required
HTML we need is an empty ul:
&lt;/p&gt;
&lt;pre class="brush: html"&gt;
		&amp;lt;ul id="renderTweets"&amp;gt;&amp;lt;/ul&amp;gt;
	&lt;/pre&gt;
&lt;p&gt;
In our demo though we want to make it a complete widget. We need some extra layout
html to be able to provide a heading and a link to take you to more tweets. Here is
the full html we'll use:
&lt;/p&gt;
&lt;pre class="brush: html"&gt;
		&amp;lt;div id="Tweets"&amp;gt;
			&amp;lt;h3&amp;gt;@RedWolves Tweets&amp;lt;/h3&amp;gt;
		  	&amp;lt;ul id="renderTweets"&amp;gt;&amp;lt;/ul&amp;gt;
			&amp;lt;div id="more"&amp;gt;
				&amp;lt;a href="http://twitter.com/redwolves"&amp;gt;More &amp;amp;gt;&amp;lt;/a&amp;gt;
			&amp;lt;/div&amp;gt;
		&amp;lt;/div&amp;gt;
	&lt;/pre&gt;
&lt;p&gt;
Make sure you replace my twitter name, RedWolves, with yours. 
&lt;/p&gt;
&lt;h3&gt;Making the Ajax request
&lt;/h3&gt;
&lt;p&gt;
Now let's get the data from Twitter. We'll use a JSONP ajax call to get back the JSON
data of the last three tweets from Twitter. To get the JSON data we will use the &lt;a href="http://dev.twitter.com/doc/get/statuses/user_timeline" target="_blank"&gt;user
timeline of the Twitter API&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class="brush: js"&gt;
		$("document").ready(function(){
			var url = "http://api.twitter.com/1/statuses/user_timeline.json?id=RedWolves&amp;amp;count=3&amp;amp;callback=?"
			$.ajax({
				dataType: 'jsonp',
				url: url,
				jsonpCallback: "renderTweets" 
			});
		});
	&lt;/pre&gt;
&lt;p&gt;
At the end of the Twitter API url that we declare we attach the user id of the user
timeline we want to see, in this case mine, RedWolves, so make sure to update with
the username you wish to see. We then declare the url and call the &lt;a href="http://api.jquery.com/jQuery.ajax/" target="_blank"&gt;.ajax()&lt;/a&gt; method
and provide it with the dataType 'jsonp' so that we can pull the data via cross-domain.
We set the url and then tell it which function we will call after the data is loaded.
After the data is loaded we will call the function 'renderTweets', defined below,
which will run the data through the template.
&lt;/p&gt;
&lt;h3&gt;Defining the Template
&lt;/h3&gt;
&lt;p&gt;
Now let's define the template that will display the data we get back from the Ajax
request. We define the template in a script tag and we provide it with a type of "text/template"
and a unique ID.
&lt;/p&gt;
&lt;pre class="brush: html"&gt;
		&amp;lt;script type="text/template" id="twitterTemplate"&amp;gt;
			&amp;lt;li&amp;gt;
					&amp;lt;img src="${ user['profile_image_url'] }" /&amp;gt; 
					${ text.linkify().atify() } 
					&amp;lt;span class="created_at"&amp;gt;
						${ relative_time(created_at) } via ${ source }
					&amp;lt;/span&amp;gt;
			&amp;lt;/li&amp;gt;
		&amp;lt;/script&amp;gt;
	&lt;/pre&gt;
&lt;p&gt;
On each JSON item we will run it through the template and create an li element with
the profile photo, tweet text, when it was created and what source the tweet came
from (e.g. Twitter for iPhone, web, etc.).
&lt;/p&gt;
&lt;p&gt;
We are using a couple of supporting methods to help us in formatting. .linkify which
will make any link a hyper link, atify which will link up any @screenname to their
twitter profile and relative_time which will turn the created time into Twitter style
time. You can find these methods in the supporting_methods.js file.
&lt;/p&gt;
&lt;h3&gt;Putting it all together
&lt;/h3&gt;
&lt;p&gt;
The last bit of jQuery code we need to do is to actually call the plugin and combine
the template with the data and put it into the DOM. Here we will define the renderTweets
callback function.
&lt;/p&gt;
&lt;pre class="brush: js"&gt;
		function renderTweets(data) {
			$("#twitterTemplate")
				.render(data)
				.appendTo("#renderTweets");
		}
	&lt;/pre&gt;
&lt;p&gt;
What we do is select our template, call the template plugin method, .render, which
takes in the data from the Ajax call and renders the results against the template,
and then append the results to the desired element in the HTML, the ul with id of
renderTweets.
&lt;/p&gt;
&lt;h3&gt;The whole HTML
&lt;/h3&gt;
&lt;pre class="brush: html"&gt;
		&amp;lt;!DOCTYPE html&amp;gt;
		&amp;lt;html&amp;gt;
			&amp;lt;head&amp;gt;
				&amp;lt;meta charset=utf-8 /&amp;gt;
				&amp;lt;title&amp;gt;twitter&amp;lt;/title&amp;gt;
				&amp;lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;
				&amp;lt;script src="jquery.tmpl.js"&amp;gt;&amp;lt;/script&amp;gt;
				&amp;lt;script src="supporting_methods.js"&amp;gt;&amp;lt;/script&amp;gt;
				&amp;lt;link rel="stylesheet" href="style.css" type="text/css" media="screen" title="no title" charset="utf-8"&amp;gt;
				&amp;lt;script type="text/template" id="twitterTemplate"&amp;gt;
					&amp;lt;li&amp;gt;
							&amp;lt;img src="${ user['profile_image_url'] }" /&amp;gt; 
							${ text.linkify().atify() } 
							&amp;lt;span class="created_at"&amp;gt;
								${ relative_time(created_at) } via ${ source }
							&amp;lt;/span&amp;gt;
					&amp;lt;/li&amp;gt;
				&amp;lt;/script&amp;gt;
				&amp;lt;script type="text/javascript"&amp;gt;
					$("document").ready(function(){
						var url = "http://api.twitter.com/1/statuses/user_timeline.json?id=RedWolves&amp;amp;count=3&amp;amp;callback=?"
						$.ajax({
							dataType: 'jsonp',
							url: url,
							jsonpCallback: "renderTweets" 
						});
					});

					function renderTweets(data) {
						$("#twitterTemplate")
							.render(data)
							.appendTo("#renderTweets");
					}
				&amp;lt;/script&amp;gt;
			&amp;lt;/head&amp;gt;
		&amp;lt;body&amp;gt;
		  &amp;lt;div id="Tweets"&amp;gt;
			&amp;lt;h3&amp;gt;@RedWolves Tweets&amp;lt;/h3&amp;gt;
		  	&amp;lt;ul id="renderTweets"&amp;gt;&amp;lt;/ul&amp;gt;
			&amp;lt;div id="more"&amp;gt;
				&amp;lt;a href="http://twitter.com/redwolves"&amp;gt;More &amp;gt;&amp;lt;/a&amp;gt;
			&amp;lt;/div&amp;gt;
		  &amp;lt;/div&amp;gt;
		&amp;lt;/body&amp;gt;
		&amp;lt;/html&amp;gt;​
		
	&lt;/pre&gt;
&lt;p&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://ralphwhitbeck.com/demos/2010/June/jQuery-Twitter-Template/jQuery-Twitter-Template.zip" class="button"&gt;Source
Code&lt;/a&gt; &lt;a href="http://ralphwhitbeck.com/demos/2010/June/jQuery-Twitter-Template/twitter.html" class="button"&gt;Demo&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=052711fb-4998-4af2-b597-cbf249d783c9" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,052711fb-4998-4af2-b597-cbf249d783c9.aspx</comments>
      <category>How-to;jQuery;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=b444a50f-01a0-4938-8a62-4300967cbce9</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,b444a50f-01a0-4938-8a62-4300967cbce9.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,b444a50f-01a0-4938-8a62-4300967cbce9.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b444a50f-01a0-4938-8a62-4300967cbce9</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <title>jQuery 1.4 Give Us a New Way to Zebra Stripe</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,b444a50f-01a0-4938-8a62-4300967cbce9.aspx</guid>
      <link>http://ralphwhitbeck.com/2010/01/22/jQuery14GiveUsANewWayToZebraStripe.aspx</link>
      <pubDate>Fri, 22 Jan 2010 22:27:10 GMT</pubDate>
      <description>In &lt;a href="http://jquery14.com/day-01"&gt;jQuery 1.4&lt;/a&gt; all setter methods have been
extended to take in a setter function.&amp;nbsp; Before only &lt;a href="http://api.jquery.com/attr"&gt;.attr()&lt;/a&gt; had
the ability to use a function to return the value to set. Now you can pass a setter
function to &lt;a href="http://api.jquery.com/css"&gt;.css()&lt;/a&gt;, &lt;a href="http://api.jquery.com/attr"&gt;.attr()&lt;/a&gt;, &lt;a href="http://api.jquery.com/val"&gt;.val()&lt;/a&gt;, &lt;a href="http://api.jquery.com/html"&gt;.html()&lt;/a&gt;, &lt;a href="http://api.jquery.com/text"&gt;.text()&lt;/a&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/append"&gt;.append()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/prepend"&gt;.prepend()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/before"&gt;.before()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/after"&gt;.after()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/replaceWith"&gt;.replaceWith()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/wrap"&gt;.wrap()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/wrapInner"&gt;.wrapInner()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/offset"&gt;.offset()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/addClass"&gt;.addClass()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href="http://api.jquery.com/removeClass"&gt;.removeClass()&lt;/a&gt;&lt;/code&gt;,
and &lt;code&gt;&lt;a href="http://api.jquery.com/toggleClass"&gt;.toggleClass()&lt;/a&gt;&lt;/code&gt;.&lt;br&gt;
&lt;br&gt;
The setter function can take two arguments, the index position of the element in the
set and the old value of the element. 
&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;b&gt;.css( propertyName, function(index, value))&lt;/b&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
With setter functions now available we can use this in a new way to zebra stripe a
set of elements.&amp;nbsp; In this example we'll stripe a unordered list:&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;HTML:&lt;/strong&gt;&lt;pre&gt;&lt;code&gt;
&lt;br&gt;
&amp;lt;ul&amp;gt;&lt;br&gt;
&amp;lt;li&amp;gt;item 1&amp;lt;/li&amp;gt;&lt;br&gt;
&amp;lt;li&amp;gt;item 2&amp;lt;/li&amp;gt;&lt;br&gt;
&amp;lt;li&amp;gt;item 3&amp;lt;/li&amp;gt;&lt;br&gt;
&amp;lt;li&amp;gt;item 4&amp;lt;/li&amp;gt;&lt;br&gt;
&amp;lt;li&amp;gt;item 5&amp;lt;/li&amp;gt;&lt;br&gt;
&amp;lt;li&amp;gt;item 6&amp;lt;/li&amp;gt;&lt;br&gt;
&amp;lt;li&amp;gt;item 7&amp;lt;/li&amp;gt;&lt;br&gt;
&amp;lt;/ul&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;strong&gt;jQuery 1.4:&lt;/strong&gt; &lt;pre&gt;&lt;code"&gt;
&lt;br&gt;
$(document).ready(function(){&lt;br&gt;
$("li").css("background-color", function(i){&lt;br&gt;
return (i % 2 === 0) ? "#cccccc": "#FFFFFF";&lt;br&gt;
});&lt;br&gt;
});&lt;br&gt;code"&gt;
&lt;/pre&gt;
&lt;p&gt;
We select all the &lt;code&gt;LI&lt;/code&gt;s and call the &lt;code&gt;.css()&lt;/code&gt; setter method.
We give it the property name we want to update, &lt;code&gt;background-image&lt;/code&gt; and
we pass a function that will return the value we want to set.
&lt;/p&gt;
&lt;p&gt;
The function tests if the index that we passed in &lt;code&gt;i&lt;/code&gt; is MOD 2 (simply
is it even or odd), if even set the color to &lt;code&gt;#cccccc&lt;/code&gt; else set it to &lt;code&gt;#FFFFFF&lt;/code&gt;. 
&lt;/p&gt;
&lt;strong&gt;Demo:&lt;/strong&gt; (&lt;a href="http://jsbin.com/agapu/2/edit"&gt;jsbin&lt;/a&gt;)&lt;br&gt;
&lt;br&gt;
&lt;iframe src="http://jsbin.com/agapu/2" scrollbars="auto" width="668" height="250"&gt;
&lt;/iframe&gt;
&lt;p&gt;
&lt;strong&gt;Note:&lt;/strong&gt; Obviously, this isn't the best way to do zebra stripping with
jQuery but I like to explore different ways to do the same thing to learn the techniques. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=b444a50f-01a0-4938-8a62-4300967cbce9" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,b444a50f-01a0-4938-8a62-4300967cbce9.aspx</comments>
      <category>How-to;jQuery;Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=2605ec3a-4ae4-45fd-a54d-7ffcb1d04955</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,2605ec3a-4ae4-45fd-a54d-7ffcb1d04955.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,2605ec3a-4ae4-45fd-a54d-7ffcb1d04955.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2605ec3a-4ae4-45fd-a54d-7ffcb1d04955</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>I was looking over my blog this week while I was out on holiday vacation and
noticed I haven't posted a blog post since October.  So much has happened since
then I think perhaps a "getting the reader up-to-speed" post is in order.  
</div>
        <div>
          <br />
        </div>
        <div>So here we go...<br /><h2>jQuery Team member
</h2><div><img src="http://ralphwhitbeck.com/content/binary/JQuery_logo_color_onwhite.png" align="right" border="0" />Early
last year, I made it a goal to blog, tweet and personally evangelize jQuery to better
myself and the project.  My efforts got noticed by jQuery Evangelist <a id="r7bv" href="http://blog.reybango.com/" target="_blank" title="Rey Bango">Rey
Bango</a> and he brought me in as a advisor to the jQuery team.  While I was
an advisor I took advantage of my situation and jumped in on projects the team was
working on.  Mainly, the jQuery Conference in September and the <a id="zl1w" href="2009/10/26/MyTripToTorontoAndStackOverflowDevDays2009.aspx" target="_blank" title="Stack Overflow Dev Days talk in Toronto">Stack
Overflow Dev Days talk in Toronto</a>.
</div><div><br /></div><div>In November, <a id="da_t" href="http://groups.google.com/group/jquery-team-public/browse_thread/thread/88fa2e0c419360a4" target="_blank" title="it was voted on by the jQuery team to bring me on as a jQuery Team Member">it
was voted on by the jQuery team to bring me on as a jQuery Team Member</a> and
I was added to the evangelism team.  I was truly surprised and honored by this
action as I wasn't expecting it at the time. 
</div><div><br /></div><div>Being a team member made it easier for me to launch my new project...
</div><h2>The Official jQuery Podcast
</h2><div><div><img src="http://ralphwhitbeck.com/content/binary/jquerypodcast.png" align="right" border="0" /></div>
I announced in October, at <a id="zmn1" href="2009/10/26/MyTripToTorontoAndStackOverflowDevDays2009.aspx" target="_blank" title="Stack Overflow Dev Days in Toronto">Stack
Overflow Dev Days in Toronto</a>, that I would be starting the Official jQuery Podcast
in November.  I worked with the jQuery team to get infrastructure support and
found a cohost, in <a id="rjuh" href="http://elijahmanor.com/" target="_blank" title="Elijah Manor">Elijah
Manor</a>, that could give an outsiders perspective on topics.
</div><div><br /></div><div>We initially started with streaming the shows <a id="cz_4" href="http://www.ustream.tv/channel/the-official-jquery-podcast-live" target="_blank" title="live on uStream">live
on uStream</a>.  But I think I am finding that to be too stressful and am reevaluating
whether that is still viable.  Maybe at a later date.
</div><div><br /></div><div>Our first show, with guest <a id="pvfs" href="http://blog.jquery.com/2009/11/13/announcing-the-official-jquery-podcast/" target="_blank" title="John Resig">John
Resig</a>, got the show ranked to #2 on the top Technology podcasts for the day which
was very exciting.
</div><div><br /></div><div>We've since had guests <a id="cqlm" href="http://blog.jquery.com/2009/11/20/the-official-jquery-podcast-episode-2-richard-d-worth/" target="_blank" title="Richard D. Worth">Richard
D. Worth</a>, <a id="pt.4" href="http://blog.jquery.com/2009/12/04/the-official-jquery-podcast-episode-3-paul-irish/" title="Paul Irish">Paul
Irish</a>, <a id="o196" href="http://blog.jquery.com/2009/12/11/the-official-jquery-podcast-episode-4-cody-lindley/" title="Cody Lindley">Cody
Lindley</a> and <a id="qwy6" href="http://blog.jquery.com/2010/01/01/the-official-jquery-podcast-episode-5-rey-bango/" target="_blank" title="Rey Bango">Rey
Bango</a>.
</div><div><br /></div><div>Our planned shows for January will sure to be very exciting. We are planning
to travel to Washington DC to do some shows live in person with the people we are
going to interview.
</div><div><br /></div><div>You can find our show on <a id="lpwy" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=339835419" target="_blank" title="iTunes">iTunes</a> or
you can subscribe to the show with the <a id="gf_5" href="http://feeds.feedburner.com/jQueryPodcast" target="_blank" title="raw RSS feed">raw
RSS feed</a>.
</div><div><br /></div><div>My plans for now are to do a weekly show as long as I can sustain them throughout
2010.
</div><h2><font class="Apple-style-span" size="3"><span style="font-weight: normal;"><font class="Apple-style-span" size="6"><b><font size="4">Coming
up in 2010</font></b></font></span></font></h2><div><font size="2">I don't have many plans for 2010 at this point but there are a
few things I am planning on.</font></div><div><font size="2"><br /></font></div><div><font size="2">We are currently in the middle of planning something huge for
jQuery this month.  I'll be travelling with Elijah to cover the "something huge"
for the Official jQuery Podcast.</font></div><div><font size="2"><br /></font></div><div><font size="2">In addition, there will be physical conferences in San Francisco,
London and Boston.  I am hoping to at least attend the conferences that won't
require a passport.</font></div><div><font size="2">I am currently scheduled to give a talk on jQuery at <a id="w8v0" href="http://www.lugor.org/" target="_blank" title="LUGOR">LUGOR</a> (Linux
User Group of Rochester) on May 20th at RIT.</font></div><div><font size="2"><br /></font></div><div><font size="2">So there you go you should now be sufficiently "up-to-speed."</font></div></div>
        <img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=2605ec3a-4ae4-45fd-a54d-7ffcb1d04955" />
      </body>
      <title>Getting "Up-to-speed"</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,2605ec3a-4ae4-45fd-a54d-7ffcb1d04955.aspx</guid>
      <link>http://ralphwhitbeck.com/2010/01/02/GettingUptospeed.aspx</link>
      <pubDate>Sat, 02 Jan 2010 18:17:46 GMT</pubDate>
      <description>&lt;div&gt;I was looking over my blog this week while I was out on holiday vacation and
noticed I haven't posted a blog post since October. &amp;nbsp;So much has happened since
then I think perhaps a "getting the reader up-to-speed" post is in order. &amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;So here we go...&lt;br&gt;
&lt;h2&gt;jQuery Team member
&lt;/h2&gt;
&lt;div&gt;&lt;img src="http://ralphwhitbeck.com/content/binary/JQuery_logo_color_onwhite.png" align="right" border="0"&gt;Early
last year, I made it a goal to blog, tweet and personally evangelize jQuery to better
myself and the project. &amp;nbsp;My efforts got noticed by jQuery Evangelist &lt;a id="r7bv" href="http://blog.reybango.com/" target="_blank" title="Rey Bango"&gt;Rey
Bango&lt;/a&gt; and he brought me in as a advisor to the jQuery team. &amp;nbsp;While I was
an advisor I took advantage of my situation and jumped in on projects the team was
working on. &amp;nbsp;Mainly, the jQuery Conference in September and the &lt;a id="zl1w" href="2009/10/26/MyTripToTorontoAndStackOverflowDevDays2009.aspx" target="_blank" title="Stack Overflow Dev Days talk in Toronto"&gt;Stack
Overflow Dev Days talk in Toronto&lt;/a&gt;.
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;In November, &lt;a id="da_t" href="http://groups.google.com/group/jquery-team-public/browse_thread/thread/88fa2e0c419360a4" target="_blank" title="it was voted on by the jQuery team to bring me on as a jQuery Team Member"&gt;it
was voted on by the jQuery team to bring me on as a jQuery Team Member&lt;/a&gt;&amp;nbsp;and
I was added to the evangelism team. &amp;nbsp;I was truly surprised and honored by this
action as I wasn't expecting it at the time.&amp;nbsp;
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;Being a team member made it easier for me to launch my new project...
&lt;/div&gt;
&lt;h2&gt;The Official jQuery Podcast
&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;&lt;img src="http://ralphwhitbeck.com/content/binary/jquerypodcast.png" align="right" border="0"&gt;
&lt;/div&gt;
I announced in October, at &lt;a id="zmn1" href="2009/10/26/MyTripToTorontoAndStackOverflowDevDays2009.aspx" target="_blank" title="Stack Overflow Dev Days in Toronto"&gt;Stack
Overflow Dev Days in Toronto&lt;/a&gt;, that I would be starting the Official jQuery Podcast
in November. &amp;nbsp;I worked with the jQuery team to get infrastructure support and
found a cohost, in &lt;a id="rjuh" href="http://elijahmanor.com/" target="_blank" title="Elijah Manor"&gt;Elijah
Manor&lt;/a&gt;, that could give an outsiders perspective on topics.
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;We initially started with streaming the shows &lt;a id="cz_4" href="http://www.ustream.tv/channel/the-official-jquery-podcast-live" target="_blank" title="live on uStream"&gt;live
on uStream&lt;/a&gt;. &amp;nbsp;But I think I am finding that to be too stressful and am reevaluating
whether that is still viable. &amp;nbsp;Maybe at a later date.
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;Our first show, with guest &lt;a id="pvfs" href="http://blog.jquery.com/2009/11/13/announcing-the-official-jquery-podcast/" target="_blank" title="John Resig"&gt;John
Resig&lt;/a&gt;, got the show ranked to #2 on the top Technology podcasts for the day which
was very exciting.
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;We've since had guests &lt;a id="cqlm" href="http://blog.jquery.com/2009/11/20/the-official-jquery-podcast-episode-2-richard-d-worth/" target="_blank" title="Richard D. Worth"&gt;Richard
D. Worth&lt;/a&gt;, &lt;a id="pt.4" href="http://blog.jquery.com/2009/12/04/the-official-jquery-podcast-episode-3-paul-irish/" title="Paul Irish"&gt;Paul
Irish&lt;/a&gt;, &lt;a id="o196" href="http://blog.jquery.com/2009/12/11/the-official-jquery-podcast-episode-4-cody-lindley/" title="Cody Lindley"&gt;Cody
Lindley&lt;/a&gt; and &lt;a id="qwy6" href="http://blog.jquery.com/2010/01/01/the-official-jquery-podcast-episode-5-rey-bango/" target="_blank" title="Rey Bango"&gt;Rey
Bango&lt;/a&gt;.
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;Our planned shows for January will sure to be very exciting. We are planning
to travel to Washington DC to do some shows live in person with the people we are
going to interview.
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;You can find our show on &lt;a id="lpwy" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=339835419" target="_blank" title="iTunes"&gt;iTunes&lt;/a&gt; or
you can subscribe to the show with the &lt;a id="gf_5" href="http://feeds.feedburner.com/jQueryPodcast" target="_blank" title="raw RSS feed"&gt;raw
RSS feed&lt;/a&gt;.
&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;div&gt;My plans for now are to do a weekly show as long as I can sustain them throughout
2010.
&lt;/div&gt;
&lt;h2&gt;&lt;font class="Apple-style-span" size="3"&gt;&lt;span style="font-weight: normal;"&gt;&lt;font class="Apple-style-span" size="6"&gt;&lt;b&gt;&lt;font size="4"&gt;Coming
up in 2010&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;
&lt;/h2&gt;
&lt;div&gt;&lt;font size="2"&gt;I don't have many plans for 2010 at this point but there are a
few things I am planning on.&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;
&lt;br&gt;
&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;We are currently in the middle of planning something huge for
jQuery this month. &amp;nbsp;I'll be travelling with Elijah to cover the "something huge"
for the Official jQuery Podcast.&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;
&lt;br&gt;
&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;In addition, there will be physical conferences in San Francisco,
London and Boston. &amp;nbsp;I am hoping to at least attend the conferences that won't
require a passport.&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;I am currently scheduled to give a talk on jQuery at &lt;a id="w8v0" href="http://www.lugor.org/" target="_blank" title="LUGOR"&gt;LUGOR&lt;/a&gt; (Linux
User Group of Rochester) on May 20th at RIT.&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;
&lt;br&gt;
&lt;/font&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font size="2"&gt;So there you go you should now be sufficiently "up-to-speed."&lt;/font&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=2605ec3a-4ae4-45fd-a54d-7ffcb1d04955" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,2605ec3a-4ae4-45fd-a54d-7ffcb1d04955.aspx</comments>
      <category>jQuery;Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=b23c5ac4-f1d8-4e29-a94c-84c7c5c6f20d</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,b23c5ac4-f1d8-4e29-a94c-84c7c5c6f20d.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,b23c5ac4-f1d8-4e29-a94c-84c7c5c6f20d.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b23c5ac4-f1d8-4e29-a94c-84c7c5c6f20d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <i>I am doing some freelance work with
PHP and I am posting these for my future reference.  This is basic PHP 101 stuff
here.</i>
        <br />
        <br />
The HTML Form:<br /><br /><code class="html"> &lt;form enctype="multipart/form-data" action="upload.php" method="post"&gt;
    Please upload your file:     &lt;div&gt;        
&lt;input id="fileUpload" name="fileUpload" type="file"&gt;        
&lt;input id="submit" name="submit" value="Submit" type="submit"&gt;    
&lt;/div&gt; &lt;/form&gt;</code><br /><br />
The key part to the form is enctype="multipart/form-data" which tells the server to
expect a file on postback.  
<br /><br />
The upload php file to process the file: 
<br /><br /><code class="php"> &lt;?php     $target_path = "uploads/";<br />
    $target_path = $target_path . basename( $_FILES['fileUpload']['name']);
    if (isset($_FILES['fileUpload']))     {        
if(move_uploaded_file($_FILES['fileUpload']['tmp_name'], $target_path)) {            
echo "The file ".  basename( $_FILES['fileUpload']['name']).            
" has been uploaded";              
} else {                  
echo "There was an error uploading the file, please try again!";              
}         } ?&gt;</code><br /><br />
First we test to see if fileUpload has a value if so it attempts to save the file
to the target path.  If all goes well we get a message that the upload passed. 
If not a message that there was a problem.<br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=b23c5ac4-f1d8-4e29-a94c-84c7c5c6f20d" /></body>
      <title>PHP 101: Uploading a file</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,b23c5ac4-f1d8-4e29-a94c-84c7c5c6f20d.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/08/04/PHP101UploadingAFile.aspx</link>
      <pubDate>Tue, 04 Aug 2009 23:51:42 GMT</pubDate>
      <description>&lt;i&gt;I am doing some freelance work with PHP and I am posting these for my future reference.&amp;nbsp;
This is basic PHP 101 stuff here.&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
The HTML Form:&lt;br&gt;
&lt;br&gt;
&lt;code class="html"&gt; &amp;lt;form enctype="multipart/form-data" action="upload.php" method="post"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Please upload your file: &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;input id="fileUpload" name="fileUpload" type="file"&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;input id="submit" name="submit" value="Submit" type="submit"&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;/div&amp;gt; &amp;lt;/form&amp;gt;&lt;/code&gt;
&lt;br&gt;
&lt;br&gt;
The key part to the form is enctype="multipart/form-data" which tells the server to
expect a file on postback.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
The upload php file to process the file: 
&lt;br&gt;
&lt;br&gt;
&lt;code class="php"&gt; &amp;lt;?php &amp;nbsp;&amp;nbsp;&amp;nbsp; $target_path = "uploads/";&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $target_path = $target_path . basename( $_FILES['fileUpload']['name']);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset($_FILES['fileUpload'])) &amp;nbsp;&amp;nbsp;&amp;nbsp; { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
if(move_uploaded_file($_FILES['fileUpload']['tmp_name'], $target_path)) { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
echo "The file ".&amp;nbsp; basename( $_FILES['fileUpload']['name']). &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
" has been uploaded"; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
} else { &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
echo "There was an error uploading the file, please try again!"; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
} &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } ?&amp;gt;&lt;/code&gt;
&lt;br&gt;
&lt;br&gt;
First we test to see if fileUpload has a value if so it attempts to save the file
to the target path.&amp;nbsp; If all goes well we get a message that the upload passed.&amp;nbsp;
If not a message that there was a problem.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=b23c5ac4-f1d8-4e29-a94c-84c7c5c6f20d" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,b23c5ac4-f1d8-4e29-a94c-84c7c5c6f20d.aspx</comments>
      <category>How-to;PHP;Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=1a1d18bf-f423-45b2-9c55-8c574474d39a</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,1a1d18bf-f423-45b2-9c55-8c574474d39a.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,1a1d18bf-f423-45b2-9c55-8c574474d39a.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1a1d18bf-f423-45b2-9c55-8c574474d39a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I was working this morning on setting up
a LAMP environment in OSX.  I found <a href="http://devworld.apple.com/mac/articles/internet/phpeasyway.html">this
tutorial</a>  from Apple's Developer Connection. As I haven't set up PHP on a
Mac in quite a while i felt I needed a refresher.<br /><br />
It was going good till I got to the section "Enabling PHP in Apache."  They outline
a script you need to run but to a new Mac user this isn't readily apparent how to
do.  Obviously this is geared towards the advanced Mac Developer even though
the topic is for a beginner.  I finally deduce from past experience that this
needs to be run like a batch script on Windows.   I do a search on Google
for "shell scripting in osx" and found that I needed to run "sh filename.sh" in the
terminal window.  So I created a file and copy/pasted the script into the file,
saved and switched to the terminal.  Here is the script I pasted, <b><font color="#ff0000">DO
NOT RUN THIS</font></b>:<br /><br /><blockquote><pre>set admin_email to (do shell script "defaults read AddressBookMe ExistingEmailAddress")<br />
user_www=$HOME/Sites<br />
filename=php-test<br />
user_index=${user_www}/${filename}.php<br />
user_db=${user_www}/${filename}-db.sqlite3<br />
# NOTE: Having a writeable database in your home directory can be a security risk!<br /><br />
conf=`apachectl -V | awk -F= '/SERVER_CONFIG/ {print \$2}'| sed 's/"//g'`<br />
conf_old=$conf.$$<br />
conf_new=/tmp/php_conf.new<br /><br />
touch $user_db<br />
chmod a+r $user_index<br />
chmod a+w $user_db<br />
chmod a+w $user_www<br /><br />
echo "Enabling PHP in $conf ..."<br />
sed '/#LoadModule php5_module/s/#LoadModule/LoadModule/' $conf | sed<br />
"s^you@example.com^&lt;b&gt;\$admin_email&lt;/b&gt;^" &gt; $conf_new<br /><br />
echo "(Re)Starting Apache ..."<br />
osascript &lt;&lt;EOF<br />
do shell script "/bin/mv -f $conf $conf_old; /bin/mv $conf_new $conf;<br />
/usr/sbin/apachectl restart" with administrator privileges 
<br /><br />
EOF<br /></pre></blockquote>The first time I run it I am asked for the administrative password which
I provide.  After I see that the script had a few errors.  But the instructions
on the tutorial say I should be able to create phpinfo page and see the phpinfo data. 
I create the file try to run it and the web server isn't running.<br /><br />
I do some troubleshooting and eventually figure out that httpd.conf has not no data
in it anymore.  There is an older file with a version number attached but I can't
copy or write to httpd.conf cause I don't have su priv on this computer. 
<br /><br />
I go back to the script file and try to figure out what happened. First I need to
fix my apache.  I hack together a shell script to fix my httpd.conf and I come
up with this:<br /><br /><blockquote>osascript &lt;&lt;EOF<br /><br />
do shell script "/bin/mv -f /private/etc/apache2/httpd.conf.9002 /private/etc/apache2/httpd.conf"
with administrator privileges<br /><br />
EOF<br /><br /></blockquote>This restores the original httpd.conf that was made as a back up. 
Retry to access a file in apache and it serves it.  Success!  At this point
I want to make my own backup file of httpd.conf in case the script screws it up more.  
<br /><br /><blockquote>osascript &lt;&lt;EOF<br /><br />
do shell script "/bin/cp -f /private/etc/apache2/httpd.conf /private/etc/apache2/httpd.conf.bak"
with administrator privileges<br /><br />
EOF<br /><br /></blockquote>So why did httpd.conf have no data in it?  Looking over the script
it seems that it is uncommenting the line for the PHP module and sending the output
to conf_new.  But it seems the file specified in conf_new is never created in
the script.  So when the final line is called to copy the new file over httpd.conf
there is nothing to copy.  I solve this by adding another line: touch $conf_new<br /><br />
Now let's tackle the script, the first error I see is that a file doesn't exist: chmod:
/Users/ralph/Sites/php-test.php: No such file or directory<br /><br />
The file doesn't exist apparently touch $user_index isn't included in the script. 
Which is funny cause nothing else in the script requires the $user_index.  The
script is basically just trying to create a php file.  I also add touch $user_index
to the script.<br /><br />
Next error is: s^you@example.com^&lt;b&gt;$admin_email&lt;/b&gt;^: No such file or
directory 
<br /><br />
I wasn't quite sure what was causing this error and I couldn't solve fixing it but
I determined that it was trying to replace the default admin e-mail with the one I
specified earlier.  I took out that part of the command.  So the new line
now looks like: sed '/#LoadModule php5_module/s/#LoadModule/LoadModule/' $conf &gt;
$conf_new<br /><br />
The final script looks like this:<br /><br /><blockquote>user_www=$HOME/Sites<br />
filename=php-test<br />
user_index=${user_www}/${filename}.php<br />
user_db=${user_www}/${filename}-db.sqlite3<br />
# NOTE: Having a writeable database in your home directory can be a security risk!<br /><br />
conf=`apachectl -V | awk -F= '/SERVER_CONFIG/ {print \$2}'| sed 's/"//g'`<br />
conf_old=$conf.$$<br />
conf_new=/tmp/php_conf.new<br /><br />
touch $user_index<br />
touch $user_db<br />
touch $conf_new<br />
chmod a+r $user_index<br />
chmod a+w $user_db<br />
chmod a+w $user_www<br />
chmod a+w $conf_new<br /><br />
echo "Enabling PHP in $conf ..."<br />
sed '/#LoadModule php5_module/s/#LoadModule/LoadModule/' $conf &gt; $conf_new<br /><br />
echo "(Re)Starting Apache ..."<br />
osascript &lt;&lt;EOF<br />
do shell script "/bin/mv -f $conf $conf_old; /bin/mv $conf_new $conf;<br />
/usr/sbin/apachectl restart" with administrator privileges<br /><br />
EOF<br /><br /></blockquote>I feel like the script written in the Developers Connection article was
just written and not tested.  But what is really concerning is there is no way
to provide feedback on the article on the page.  MSDN provides a way on every
page asking if the tutorial was helpful and provides an area to comment.  
<br /><br />
Needless to say I did not finish the tutorial.  
<br /><br /><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=1a1d18bf-f423-45b2-9c55-8c574474d39a" /></body>
      <title>Apples Developer Connection Documentation is buggy</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,1a1d18bf-f423-45b2-9c55-8c574474d39a.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/07/12/ApplesDeveloperConnectionDocumentationIsBuggy.aspx</link>
      <pubDate>Sun, 12 Jul 2009 17:40:09 GMT</pubDate>
      <description>I was working this morning on setting up a LAMP environment in OSX.&amp;nbsp; I found &lt;a href="http://devworld.apple.com/mac/articles/internet/phpeasyway.html"&gt;this
tutorial&lt;/a&gt;&amp;nbsp; from Apple's Developer Connection. As I haven't set up PHP on a
Mac in quite a while i felt I needed a refresher.&lt;br&gt;
&lt;br&gt;
It was going good till I got to the section "Enabling PHP in Apache."&amp;nbsp; They outline
a script you need to run but to a new Mac user this isn't readily apparent how to
do.&amp;nbsp; Obviously this is geared towards the advanced Mac Developer even though
the topic is for a beginner.&amp;nbsp; I finally deduce from past experience that this
needs to be run like a batch script on Windows.&amp;nbsp;&amp;nbsp; I do a search on Google
for "shell scripting in osx" and found that I needed to run "sh filename.sh" in the
terminal window.&amp;nbsp; So I created a file and copy/pasted the script into the file,
saved and switched to the terminal.&amp;nbsp; Here is the script I pasted, &lt;b&gt;&lt;font color="#ff0000"&gt;DO
NOT RUN THIS&lt;/font&gt;&lt;/b&gt;:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;pre&gt;set admin_email to (do shell script "defaults read AddressBookMe ExistingEmailAddress")&lt;br&gt;
user_www=$HOME/Sites&lt;br&gt;
filename=php-test&lt;br&gt;
user_index=${user_www}/${filename}.php&lt;br&gt;
user_db=${user_www}/${filename}-db.sqlite3&lt;br&gt;
# NOTE: Having a writeable database in your home directory can be a security risk!&lt;br&gt;
&lt;br&gt;
conf=`apachectl -V | awk -F= '/SERVER_CONFIG/ {print \$2}'| sed 's/"//g'`&lt;br&gt;
conf_old=$conf.$$&lt;br&gt;
conf_new=/tmp/php_conf.new&lt;br&gt;
&lt;br&gt;
touch $user_db&lt;br&gt;
chmod a+r $user_index&lt;br&gt;
chmod a+w $user_db&lt;br&gt;
chmod a+w $user_www&lt;br&gt;
&lt;br&gt;
echo "Enabling PHP in $conf ..."&lt;br&gt;
sed '/#LoadModule php5_module/s/#LoadModule/LoadModule/' $conf | sed&lt;br&gt;
"s^you@example.com^&amp;lt;b&amp;gt;\$admin_email&amp;lt;/b&amp;gt;^" &amp;gt; $conf_new&lt;br&gt;
&lt;br&gt;
echo "(Re)Starting Apache ..."&lt;br&gt;
osascript &amp;lt;&amp;lt;EOF&lt;br&gt;
do shell script "/bin/mv -f $conf $conf_old; /bin/mv $conf_new $conf;&lt;br&gt;
/usr/sbin/apachectl restart" with administrator privileges 
&lt;br&gt;
&lt;br&gt;
EOF&lt;br&gt;
&lt;/pre&gt;
&lt;/blockquote&gt;The first time I run it I am asked for the administrative password which
I provide.&amp;nbsp; After I see that the script had a few errors.&amp;nbsp; But the instructions
on the tutorial say I should be able to create phpinfo page and see the phpinfo data.&amp;nbsp;
I create the file try to run it and the web server isn't running.&lt;br&gt;
&lt;br&gt;
I do some troubleshooting and eventually figure out that httpd.conf has not no data
in it anymore.&amp;nbsp; There is an older file with a version number attached but I can't
copy or write to httpd.conf cause I don't have su priv on this computer. 
&lt;br&gt;
&lt;br&gt;
I go back to the script file and try to figure out what happened. First I need to
fix my apache.&amp;nbsp; I hack together a shell script to fix my httpd.conf and I come
up with this:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;osascript &amp;lt;&amp;lt;EOF&lt;br&gt;
&lt;br&gt;
do shell script "/bin/mv -f /private/etc/apache2/httpd.conf.9002 /private/etc/apache2/httpd.conf"
with administrator privileges&lt;br&gt;
&lt;br&gt;
EOF&lt;br&gt;
&lt;br&gt;
&lt;/blockquote&gt;This restores the original httpd.conf that was made as a back up.&amp;nbsp;
Retry to access a file in apache and it serves it.&amp;nbsp; Success!&amp;nbsp; At this point
I want to make my own backup file of httpd.conf in case the script screws it up more.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;osascript &amp;lt;&amp;lt;EOF&lt;br&gt;
&lt;br&gt;
do shell script "/bin/cp -f /private/etc/apache2/httpd.conf /private/etc/apache2/httpd.conf.bak"
with administrator privileges&lt;br&gt;
&lt;br&gt;
EOF&lt;br&gt;
&lt;br&gt;
&lt;/blockquote&gt;So why did httpd.conf have no data in it?&amp;nbsp; Looking over the script
it seems that it is uncommenting the line for the PHP module and sending the output
to conf_new.&amp;nbsp; But it seems the file specified in conf_new is never created in
the script.&amp;nbsp; So when the final line is called to copy the new file over httpd.conf
there is nothing to copy.&amp;nbsp; I solve this by adding another line: touch $conf_new&lt;br&gt;
&lt;br&gt;
Now let's tackle the script, the first error I see is that a file doesn't exist: chmod:
/Users/ralph/Sites/php-test.php: No such file or directory&lt;br&gt;
&lt;br&gt;
The file doesn't exist apparently touch $user_index isn't included in the script.&amp;nbsp;
Which is funny cause nothing else in the script requires the $user_index.&amp;nbsp; The
script is basically just trying to create a php file.&amp;nbsp; I also add touch $user_index
to the script.&lt;br&gt;
&lt;br&gt;
Next error is: s^you@example.com^&amp;lt;b&amp;gt;$admin_email&amp;lt;/b&amp;gt;^: No such file or
directory 
&lt;br&gt;
&lt;br&gt;
I wasn't quite sure what was causing this error and I couldn't solve fixing it but
I determined that it was trying to replace the default admin e-mail with the one I
specified earlier.&amp;nbsp; I took out that part of the command.&amp;nbsp; So the new line
now looks like: sed '/#LoadModule php5_module/s/#LoadModule/LoadModule/' $conf &amp;gt;
$conf_new&lt;br&gt;
&lt;br&gt;
The final script looks like this:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;user_www=$HOME/Sites&lt;br&gt;
filename=php-test&lt;br&gt;
user_index=${user_www}/${filename}.php&lt;br&gt;
user_db=${user_www}/${filename}-db.sqlite3&lt;br&gt;
# NOTE: Having a writeable database in your home directory can be a security risk!&lt;br&gt;
&lt;br&gt;
conf=`apachectl -V | awk -F= '/SERVER_CONFIG/ {print \$2}'| sed 's/"//g'`&lt;br&gt;
conf_old=$conf.$$&lt;br&gt;
conf_new=/tmp/php_conf.new&lt;br&gt;
&lt;br&gt;
touch $user_index&lt;br&gt;
touch $user_db&lt;br&gt;
touch $conf_new&lt;br&gt;
chmod a+r $user_index&lt;br&gt;
chmod a+w $user_db&lt;br&gt;
chmod a+w $user_www&lt;br&gt;
chmod a+w $conf_new&lt;br&gt;
&lt;br&gt;
echo "Enabling PHP in $conf ..."&lt;br&gt;
sed '/#LoadModule php5_module/s/#LoadModule/LoadModule/' $conf &amp;gt; $conf_new&lt;br&gt;
&lt;br&gt;
echo "(Re)Starting Apache ..."&lt;br&gt;
osascript &amp;lt;&amp;lt;EOF&lt;br&gt;
do shell script "/bin/mv -f $conf $conf_old; /bin/mv $conf_new $conf;&lt;br&gt;
/usr/sbin/apachectl restart" with administrator privileges&lt;br&gt;
&lt;br&gt;
EOF&lt;br&gt;
&lt;br&gt;
&lt;/blockquote&gt;I feel like the script written in the Developers Connection article was
just written and not tested.&amp;nbsp; But what is really concerning is there is no way
to provide feedback on the article on the page.&amp;nbsp; MSDN provides a way on every
page asking if the tutorial was helpful and provides an area to comment.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
Needless to say I did not finish the tutorial.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=1a1d18bf-f423-45b2-9c55-8c574474d39a" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,1a1d18bf-f423-45b2-9c55-8c574474d39a.aspx</comments>
      <category>How-to;Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=13c03889-f4f1-4383-b80b-d76e1c32fa47</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,13c03889-f4f1-4383-b80b-d76e1c32fa47.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,13c03889-f4f1-4383-b80b-d76e1c32fa47.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=13c03889-f4f1-4383-b80b-d76e1c32fa47</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">IE 6 doesn't have native support for the
Alpha channel that make PNG's transparent.  This can make PNG's look very ugly
in IE6 when they are transparent. 
<br /><br />
Asking around the office today, I got a <a href="http://www.twinhelix.com/css/iepngfix/">cool
solution</a> that uses IE's proprietary <i><b>behavior</b></i> css attribute to call
a Compiled HTML document that applies filters to the PNG to behave correctly.<br /><br />
It's pretty easy to install:<br /><br /><blockquote><h3>How To Use
</h3><p>
Follow these simple steps to add this to your page:
</p><ol><li>
Copy and paste <code>iepngfix.htc</code> and <code>blank.gif</code> into your website
folder.</li><li>
Copy and paste this into your website's CSS or HTML: <blockquote><code> &lt;style
type="text/css"&gt;<br />
img, div { behavior: url(iepngfix.htc) }<br />
&lt;/style&gt; </code></blockquote> That CSS selector must include the tags/elements
on which you want PNG support -- basically, give it a comma-separated list of tags
you use. It must also include the correct path to the .HTC <em>relative to the HTML
document location</em> (not relative to the CSS document!). For instance, yours may
look like this: <blockquote><code> &lt;style type="text/css"&gt;<br />
img, div, a, input { behavior: url(/css/resources/iepngfix.htc) }<br />
&lt;/style&gt; </code></blockquote></li><li>
If your site uses subfolders, open the .HTC file in a text editor like Windows Notepad
and change the <code>blankImg</code> variable to include a correct path to blank.gif
like so: <blockquote><code> var blankImg = '/images/blank.gif'; </code></blockquote> Again
the path is relative to the HTML file. Otherwise, you will see a "broken image" graphic!</li></ol></blockquote><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=13c03889-f4f1-4383-b80b-d76e1c32fa47" /></body>
      <title>Transparent PNG's and IE 6</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,13c03889-f4f1-4383-b80b-d76e1c32fa47.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/06/22/TransparentPNGsAndIE6.aspx</link>
      <pubDate>Mon, 22 Jun 2009 17:07:45 GMT</pubDate>
      <description>IE 6 doesn't have native support for the Alpha channel that make PNG's transparent.&amp;nbsp; This can make PNG's look very ugly in IE6 when they are transparent. &lt;br&gt;
&lt;br&gt;
Asking around the office today, I got a &lt;a href="http://www.twinhelix.com/css/iepngfix/"&gt;cool
solution&lt;/a&gt; that uses IE's proprietary &lt;i&gt;&lt;b&gt;behavior&lt;/b&gt;&lt;/i&gt; css attribute to call
a Compiled HTML document that applies filters to the PNG to behave correctly.&lt;br&gt;
&lt;br&gt;
It's pretty easy to install:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;
&lt;h3&gt;How To Use
&lt;/h3&gt;
&lt;p&gt;
Follow these simple steps to add this to your page:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Copy and paste &lt;code&gt;iepngfix.htc&lt;/code&gt; and &lt;code&gt;blank.gif&lt;/code&gt; into your website
folder.&lt;/li&gt;
&lt;li&gt;
Copy and paste this into your website's CSS or HTML: &lt;blockquote&gt; &lt;code&gt; &amp;lt;style
type="text/css"&amp;gt;&lt;br&gt;
img, div { behavior: url(iepngfix.htc) }&lt;br&gt;
&amp;lt;/style&amp;gt; &lt;/code&gt; &lt;/blockquote&gt; That CSS selector must include the tags/elements
on which you want PNG support -- basically, give it a comma-separated list of tags
you use. It must also include the correct path to the .HTC &lt;em&gt;relative to the HTML
document location&lt;/em&gt; (not relative to the CSS document!). For instance, yours may
look like this: &lt;blockquote&gt; &lt;code&gt; &amp;lt;style type="text/css"&amp;gt;&lt;br&gt;
img, div, a, input { behavior: url(/css/resources/iepngfix.htc) }&lt;br&gt;
&amp;lt;/style&amp;gt; &lt;/code&gt; &lt;/blockquote&gt; 
&lt;/li&gt;
&lt;li&gt;
If your site uses subfolders, open the .HTC file in a text editor like Windows Notepad
and change the &lt;code&gt;blankImg&lt;/code&gt; variable to include a correct path to blank.gif
like so: &lt;blockquote&gt; &lt;code&gt; var blankImg = '/images/blank.gif'; &lt;/code&gt; &lt;/blockquote&gt; Again
the path is relative to the HTML file. Otherwise, you will see a "broken image" graphic!&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=13c03889-f4f1-4383-b80b-d76e1c32fa47" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,13c03889-f4f1-4383-b80b-d76e1c32fa47.aspx</comments>
      <category>How-to;Interesting Links;Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=b0349b0d-4994-4ee6-8670-920fa22759d9</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,b0349b0d-4994-4ee6-8670-920fa22759d9.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,b0349b0d-4994-4ee6-8670-920fa22759d9.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b0349b0d-4994-4ee6-8670-920fa22759d9</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://ralphwhitbeck.com/content/binary/Firebug-profile-not-first.png" align="right" border="0" />Today
I needed to select all the h3's within a div and set a margin-top property on all
items in the returned set except the first.<br /><br />
I came up with a few ways to return the results I was looking for (here are some <a href="http://jquery.com">jQuery</a> examples):<br /><br /><code class="javascript">$("#div h3").slice(1);</code><br /><br /><code class="javascript">$("#div h3:not(:first)");</code><br /><br /><code class="javascript">$("#div h3:gt(0)");</code><br /><br />
I've been reading a lot about <a href="http://bit.ly/rbuJU">how your selection can
be optimized based on how you structure your query</a>. So I ran each query through
Firebug Profile to see which selector query was the fastest. Load the page, click
on the "Profile" button at the top, run your query in the console, click the "Profile"
button again to stop the profile.  You'll get the time it took to execute that
statement.  Here are the results for each:<br /><br /><code class="javascript">$("#div h3").slice(1);</code><b>3.305ms</b><br /><br /><code class="javascript">$("#div h3:not(:first)");</code><font color="#ff0000"><b>0.705ms</b></font><br /><br /><code class="javascript">$("#div h3:gt(0)");</code><b>2.347ms</b><br /><br />
It's clear from my testing that the second query is 2-3 times faster then the rest
for my page and my specific uses.  Your specific profile times may vary based
on HTML structure and selector query. So it's always good practice to test the speed
of your selector if there is more then one way to get your results so that you are
using the most efficient selector for your situation.  
<br /><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=b0349b0d-4994-4ee6-8670-920fa22759d9" /></body>
      <title>Selecting the fastest selector for jQuery using Firebug Profile</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,b0349b0d-4994-4ee6-8670-920fa22759d9.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/06/16/SelectingTheFastestSelectorForJQueryUsingFirebugProfile.aspx</link>
      <pubDate>Tue, 16 Jun 2009 14:47:07 GMT</pubDate>
      <description>&lt;img src="http://ralphwhitbeck.com/content/binary/Firebug-profile-not-first.png" align="right" border="0"&gt;Today
I needed to select all the h3's within a div and set a margin-top property on all
items in the returned set except the first.&lt;br&gt;
&lt;br&gt;
I came up with a few ways to return the results I was looking for (here are some &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt; examples):&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt;$("#div h3").slice(1);&lt;/code&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt;$("#div h3:not(:first)");&lt;/code&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt;$("#div h3:gt(0)");&lt;/code&gt;
&lt;br&gt;
&lt;br&gt;
I've been reading a lot about &lt;a href="http://bit.ly/rbuJU"&gt;how your selection can
be optimized based on how you structure your query&lt;/a&gt;. So I ran each query through
Firebug Profile to see which selector query was the fastest. Load the page, click
on the "Profile" button at the top, run your query in the console, click the "Profile"
button again to stop the profile.&amp;nbsp; You'll get the time it took to execute that
statement.&amp;nbsp; Here are the results for each:&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt;$("#div h3").slice(1);&lt;/code&gt; &lt;b&gt;3.305ms&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt;$("#div h3:not(:first)");&lt;/code&gt;&lt;font color="#ff0000"&gt; &lt;b&gt;0.705ms&lt;/b&gt;&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt;$("#div h3:gt(0)");&lt;/code&gt; &lt;b&gt;2.347ms&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
It's clear from my testing that the second query is 2-3 times faster then the rest
for my page and my specific uses.&amp;nbsp; Your specific profile times may vary based
on HTML structure and selector query. So it's always good practice to test the speed
of your selector if there is more then one way to get your results so that you are
using the most efficient selector for your situation.&amp;nbsp; 
&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=b0349b0d-4994-4ee6-8670-920fa22759d9" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,b0349b0d-4994-4ee6-8670-920fa22759d9.aspx</comments>
      <category>How-to;jQuery;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=bba3c108-c419-4635-abaf-363d07fccd4e</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,bba3c108-c419-4635-abaf-363d07fccd4e.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,bba3c108-c419-4635-abaf-363d07fccd4e.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bba3c108-c419-4635-abaf-363d07fccd4e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">You can create an alias to a long namespace
or a type like so:<br /><br /><code class="csharp">using Project = SolutionName.Data.Project;</code><br /><br />
Then you use the Alias in place of the namespace:<br /><br /><code class="csharp">Project p = new Project();</code><br /><br />
I wish I would of known about this last summer, probably could of shaved a month off
my project just from not having to type in the long namespaces to our data layer.<br /><br /><b>Related Links:</b><br /><br /><a href="http://msdn.microsoft.com/en-us/library/sf0df423.aspx">using Directive (C#
Reference)</a><br /><a href="http://stackoverflow.com/questions/9033/hidden-features-of-c">Hidden Features
of C#</a><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=bba3c108-c419-4635-abaf-363d07fccd4e" /></body>
      <title>Hidden C# Feature: Using Alias Directive</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,bba3c108-c419-4635-abaf-363d07fccd4e.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/06/08/HiddenCFeatureUsingAliasDirective.aspx</link>
      <pubDate>Mon, 08 Jun 2009 02:41:54 GMT</pubDate>
      <description>You can create an alias to a long namespace or a type like so:&lt;br&gt;
&lt;br&gt;
&lt;code class="csharp"&gt;using Project = SolutionName.Data.Project;&lt;/code&gt;
&lt;br&gt;
&lt;br&gt;
Then you use the Alias in place of the namespace:&lt;br&gt;
&lt;br&gt;
&lt;code class="csharp"&gt;Project p = new Project();&lt;/code&gt;
&lt;br&gt;
&lt;br&gt;
I wish I would of known about this last summer, probably could of shaved a month off
my project just from not having to type in the long namespaces to our data layer.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Related Links:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/sf0df423.aspx"&gt;using Directive (C#
Reference)&lt;/a&gt;
&lt;br&gt;
&lt;a href="http://stackoverflow.com/questions/9033/hidden-features-of-c"&gt;Hidden Features
of C#&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=bba3c108-c419-4635-abaf-363d07fccd4e" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,bba3c108-c419-4635-abaf-363d07fccd4e.aspx</comments>
      <category>How-to;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=a32cf09a-85ad-494f-874e-15d5c2348021</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,a32cf09a-85ad-494f-874e-15d5c2348021.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,a32cf09a-85ad-494f-874e-15d5c2348021.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a32cf09a-85ad-494f-874e-15d5c2348021</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">Microsoft recently released <a href="http://msdn.microsoft.com/en-us/netframework/dd819232.aspx">Visual
Studio 2010 and .NET 4.0 beta</a>.  I'd like to highlight some of the key new
features available to .NET 4.0.<br /><br /><p><b>Web Forms</b></p><ul><li>
Developers can manage control IDs that affect rendered client ID</li><li>
Remove ID bloat, and 'mangling'</li><li>
CSS: 
</li><ul><li>
Ideally remove the need to use CSS adapters</li><li>
Defer to CSS styles and bypass existing style properties</li><ul><li>
non-inline style attributes</li></ul><li>
Support non-table-based HTML rendering</li></ul><li>
URL-routing for web forms</li><ul><li>
Friendly url handling for web forms</li><li>
configuration model for url routing</li></ul><li>
View state</li><ul><li>
Disable on the page, enable on specific controls - they will provide granular control
of viewstate - today it is backwards</li><li>
Disable on control, enable on child controls</li><li>
GridView/ListView work better without viewstate</li></ul><li>
ASP.NET dynamic-data</li></ul><p><b>Ajax</b></p><ul><li>
Continue ASP.NET Ajax innovation : RIA</li><li>
Appeal to JavaScript Developers</li><li>
Provide support for the page developer</li><li>
jQuery including Intellisense</li><li>
Templates and data binding</li><ul><li>
Client side handling, REST or Web Services 
</li><li>
Covers page developer and component developer scenarios</li></ul><li>
DOM manipulation, selectors ...</li><li>
Ajax higher-level components</li><ul><li>
Ajax Control Toolkit is a part of the strategy - they will make the toolkit part of
the overall ASP.NET package</li><li>
New controls</li></ul><li>
Centralized script libraries and break-up for performance</li></ul><p><b>ASP.NET MVC</b></p><ul><li>
Appeal to those wanting separation of concerns, TDD, full control</li><li>
Ruby on Rails, Django, PHP</li><li>
Building on from ASP.NET MVC 1.0</li><li>
ASP.NET MVC (Model View Controller)</li><li>
Asynchronous controllers</li><li>
Sub-controllers &amp; Views</li><li>
Declarative controls</li></ul><p><b>ASP.NET Dynamic Data</b></p><ul><li>
Making building data-driven web apps easily</li><li>
Attacking the Ruby on Rails crowd</li><li>
Building on from FX3.5 SP1</li><li>
Dynamic-data and MVC</li><ul><li>
Scaffolding, templates and data validation</li></ul><li>
Support for abstract data layer</li><ul><li>
Removes need for specific DL (SQL, entities ...)</li><li>
Allows scaffolding of objects</li></ul><li>
Support for many to many relationships</li><li>
Dynamic data on MVC -- this is on codeplex today</li><li>
Built around something called field templates</li><li>
Enhanced filtering:</li><ul><li>
Auto-complete, search filters</li></ul></ul><p><b>ASP.NET Core</b></p><ul><li>
Address customer pain points</li><li>
Improve scale and performance</li><li>
Cache extensibility and performance:</li><ul><li>
Enable caching like Velocity</li></ul></ul><br /><p>
There's a couple of videos on Mircosoft's Channel 9 that talk specifically about the
points mentioned above:
</p><ul><li><a href="http://channel9.msdn.com/pdc2008/PC20/" rel="nofollow">ASP.NET 4.0 Roadmap</a> by
Scott Hunter</li><li><a href="http://channel9.msdn.com/shows/The%2BKnowledge%2BChamber/Stephen-Walther-New-Features-of-ASPNET-40/" rel="nofollow">New
Features of ASP.NET 4.0</a> by Steven Walther</li></ul><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=a32cf09a-85ad-494f-874e-15d5c2348021" /></body>
      <title>New Features of .NET 4.0</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,a32cf09a-85ad-494f-874e-15d5c2348021.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/05/21/NewFeaturesOfNET40.aspx</link>
      <pubDate>Thu, 21 May 2009 19:19:48 GMT</pubDate>
      <description>Microsoft recently released &lt;a href="http://msdn.microsoft.com/en-us/netframework/dd819232.aspx"&gt;Visual
Studio 2010 and .NET 4.0 beta&lt;/a&gt;.&amp;nbsp; I'd like to highlight some of the key new
features available to .NET 4.0.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;b&gt;Web Forms&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Developers can manage control IDs that affect rendered client ID&lt;/li&gt;
&lt;li&gt;
Remove ID bloat, and 'mangling'&lt;/li&gt;
&lt;li&gt;
CSS: 
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Ideally remove the need to use CSS adapters&lt;/li&gt;
&lt;li&gt;
Defer to CSS styles and bypass existing style properties&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
non-inline style attributes&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Support non-table-based HTML rendering&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
URL-routing for web forms&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Friendly url handling for web forms&lt;/li&gt;
&lt;li&gt;
configuration model for url routing&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
View state&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Disable on the page, enable on specific controls - they will provide granular control
of viewstate - today it is backwards&lt;/li&gt;
&lt;li&gt;
Disable on control, enable on child controls&lt;/li&gt;
&lt;li&gt;
GridView/ListView work better without viewstate&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
ASP.NET dynamic-data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;b&gt;Ajax&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Continue ASP.NET Ajax innovation : RIA&lt;/li&gt;
&lt;li&gt;
Appeal to JavaScript Developers&lt;/li&gt;
&lt;li&gt;
Provide support for the page developer&lt;/li&gt;
&lt;li&gt;
jQuery including Intellisense&lt;/li&gt;
&lt;li&gt;
Templates and data binding&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Client side handling, REST or Web Services 
&lt;/li&gt;
&lt;li&gt;
Covers page developer and component developer scenarios&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
DOM manipulation, selectors ...&lt;/li&gt;
&lt;li&gt;
Ajax higher-level components&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Ajax Control Toolkit is a part of the strategy - they will make the toolkit part of
the overall ASP.NET package&lt;/li&gt;
&lt;li&gt;
New controls&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Centralized script libraries and break-up for performance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;b&gt;ASP.NET MVC&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Appeal to those wanting separation of concerns, TDD, full control&lt;/li&gt;
&lt;li&gt;
Ruby on Rails, Django, PHP&lt;/li&gt;
&lt;li&gt;
Building on from ASP.NET MVC 1.0&lt;/li&gt;
&lt;li&gt;
ASP.NET MVC (Model View Controller)&lt;/li&gt;
&lt;li&gt;
Asynchronous controllers&lt;/li&gt;
&lt;li&gt;
Sub-controllers &amp;amp; Views&lt;/li&gt;
&lt;li&gt;
Declarative controls&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;b&gt;ASP.NET Dynamic Data&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Making building data-driven web apps easily&lt;/li&gt;
&lt;li&gt;
Attacking the Ruby on Rails crowd&lt;/li&gt;
&lt;li&gt;
Building on from FX3.5 SP1&lt;/li&gt;
&lt;li&gt;
Dynamic-data and MVC&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Scaffolding, templates and data validation&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Support for abstract data layer&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Removes need for specific DL (SQL, entities ...)&lt;/li&gt;
&lt;li&gt;
Allows scaffolding of objects&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
Support for many to many relationships&lt;/li&gt;
&lt;li&gt;
Dynamic data on MVC -- this is on codeplex today&lt;/li&gt;
&lt;li&gt;
Built around something called field templates&lt;/li&gt;
&lt;li&gt;
Enhanced filtering:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Auto-complete, search filters&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;b&gt;ASP.NET Core&lt;/b&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Address customer pain points&lt;/li&gt;
&lt;li&gt;
Improve scale and performance&lt;/li&gt;
&lt;li&gt;
Cache extensibility and performance:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Enable caching like Velocity&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;
There's a couple of videos on Mircosoft's Channel 9 that talk specifically about the
points mentioned above:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://channel9.msdn.com/pdc2008/PC20/" rel="nofollow"&gt;ASP.NET 4.0 Roadmap&lt;/a&gt; by
Scott Hunter&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://channel9.msdn.com/shows/The%2BKnowledge%2BChamber/Stephen-Walther-New-Features-of-ASPNET-40/" rel="nofollow"&gt;New
Features of ASP.NET 4.0&lt;/a&gt; by Steven Walther&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=a32cf09a-85ad-494f-874e-15d5c2348021" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,a32cf09a-85ad-494f-874e-15d5c2348021.aspx</comments>
      <category>ASP.NET MVC;Interesting Links;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=3da50d5c-4693-4e70-8c46-f82cf6a280d8</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,3da50d5c-4693-4e70-8c46-f82cf6a280d8.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,3da50d5c-4693-4e70-8c46-f82cf6a280d8.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3da50d5c-4693-4e70-8c46-f82cf6a280d8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">As I was commuting home from work tonight
I was listening to <a title="StackOverflow #44" target="_blank" href="http://blog.stackoverflow.com/2009/03/podcast-44/" id="j365">StackOverflow
#44</a> where Jeff Atwood and Joel Spolsky were discussing how the future of programming
languages will gradually get smaller and more precise in their function. Jeff explains:<br /><br /><div style="margin-left: 40px;"><i>"I see the future of languages as a lot of small
languages that are good in specific things. And you'd switch between them in a fluid
way, to when you are like "Oh, this is a set-based problem" or "Oh, this is a database
problem" or "Oh, this is a text manipulation problem" and you sort of drop in a language
that is good in that thing." </i><br /><br /></div>
That statement resonated with me for a little while and I got to thinking the future
of languages that Jeff perceives is already here.  Let me share what I mean from
my experiences in programming during my career.<br /><br />
Let's first take a step back and look at programming languages back when I first started
in 1996.  For me there was HTML and that was it.  For me PHP really hadn't
taken off, classic ASP was just coming out and so everything was HTML even the formatting
was done within the HTML <i>*shudder*</i>.<br /><br />
Move a head some to 1999 and I got into Classic ASP.  Still a language that was
self contained.  You could hook it up to a database either Access or SQL Server
being the popular choices but SQL statements were done inline in the spaghetti code
mess.  In one ASP file you had the dynamic code the presentation and the data
integration.<br /><br />
Let's move now to 2003, ASP.NET 1.0 is prevalant.  SQL Server 2000 is out and
you could now separate your data integration into stored procedures with T-SQL on
your SQL Server.  You would use ASP.NET to separate your busniess logic and your
presentation.  CSS was making headway as the way to separate your presentation
code from your markup code.  
<br /><br />
In 2006 I feel is the start of segmenting ASP.NET out further.  Why? jQuery was
released to the world.  And as the world grew more and more used to working with
jQuery we were able to hand off some of the tasks that ASP.NET would of handled dynamically,
like form validation, DOM manipulation and page interactions.  So we now have
CSS to handle presentation, jQuery to handle DOM manipulation, ASP.NET to handle business
logic, HTML to handle page structure and finally T-SQL to handle data manipulation
and retrival.  
<br /><br />
Seems to me that we've made it to the future.  I would hate becoming a web developer
today.  You need to learn at least 5 languages to be able to create a respectable
web page.  It's also my experience that colleges aren't teaching students all
these languages.  They either learn them on their own or they learn on the job.  
<br /><br />
Look at what Microsoft is doing to ASP.NET.  .NET 2.0 is the core which then
3.0 and 3.5 are loaded on top.  These versions of .NET include smaller subsets
of the language that you may or may not use WFS, Silverlight, WCF, MVC, Dynamic Data,
etc.  The burden on the programmer to keep up is ridiculous.<br /><br />
The question I have, does the future continue to segment languages even further as
Jeff predicts or will there be a time where we start merging languages together and
come back to one super language? When does the segmentation of languages start to
hinder us instead of help us?<br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=3da50d5c-4693-4e70-8c46-f82cf6a280d8" /></body>
      <title>The Future of Programming Languages is Now</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,3da50d5c-4693-4e70-8c46-f82cf6a280d8.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/03/11/TheFutureOfProgrammingLanguagesIsNow.aspx</link>
      <pubDate>Wed, 11 Mar 2009 01:06:33 GMT</pubDate>
      <description>As I was commuting home from work tonight I was listening to &lt;a title="StackOverflow #44" target="_blank" href="http://blog.stackoverflow.com/2009/03/podcast-44/" id="j365"&gt;StackOverflow
#44&lt;/a&gt; where Jeff Atwood and Joel Spolsky were discussing how the future of programming
languages will gradually get smaller and more precise in their function. Jeff explains:&lt;br&gt;
&lt;br&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;i&gt;"I see the future of languages as a lot of small
languages that are good in specific things. And you'd switch between them in a fluid
way, to when you are like "Oh, this is a set-based problem" or "Oh, this is a database
problem" or "Oh, this is a text manipulation problem" and you sort of drop in a language
that is good in that thing." &lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
That statement resonated with me for a little while and I got to thinking the future
of languages that Jeff perceives is already here.&amp;nbsp; Let me share what I mean from
my experiences in programming during my career.&lt;br&gt;
&lt;br&gt;
Let's first take a step back and look at programming languages back when I first started
in 1996.&amp;nbsp; For me there was HTML and that was it.&amp;nbsp; For me PHP really hadn't
taken off, classic ASP was just coming out and so everything was HTML even the formatting
was done within the HTML &lt;i&gt;*shudder*&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
Move a head some to 1999 and I got into Classic ASP.&amp;nbsp; Still a language that was
self contained.&amp;nbsp; You could hook it up to a database either Access or SQL Server
being the popular choices but SQL statements were done inline in the spaghetti code
mess.&amp;nbsp; In one ASP file you had the dynamic code the presentation and the data
integration.&lt;br&gt;
&lt;br&gt;
Let's move now to 2003, ASP.NET 1.0 is prevalant.&amp;nbsp; SQL Server 2000 is out and
you could now separate your data integration into stored procedures with T-SQL on
your SQL Server.&amp;nbsp; You would use ASP.NET to separate your busniess logic and your
presentation.&amp;nbsp; CSS was making headway as the way to separate your presentation
code from your markup code.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
In 2006 I feel is the start of segmenting ASP.NET out further.&amp;nbsp; Why? jQuery was
released to the world.&amp;nbsp; And as the world grew more and more used to working with
jQuery we were able to hand off some of the tasks that ASP.NET would of handled dynamically,
like form validation, DOM manipulation and page interactions.&amp;nbsp; So we now have
CSS to handle presentation, jQuery to handle DOM manipulation, ASP.NET to handle business
logic, HTML to handle page structure and finally T-SQL to handle data manipulation
and retrival.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
Seems to me that we've made it to the future.&amp;nbsp; I would hate becoming a web developer
today.&amp;nbsp; You need to learn at least 5 languages to be able to create a respectable
web page.&amp;nbsp; It's also my experience that colleges aren't teaching students all
these languages.&amp;nbsp; They either learn them on their own or they learn on the job.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
Look at what Microsoft is doing to ASP.NET.&amp;nbsp; .NET 2.0 is the core which then
3.0 and 3.5 are loaded on top.&amp;nbsp; These versions of .NET include smaller subsets
of the language that you may or may not use WFS, Silverlight, WCF, MVC, Dynamic Data,
etc.&amp;nbsp; The burden on the programmer to keep up is ridiculous.&lt;br&gt;
&lt;br&gt;
The question I have, does the future continue to segment languages even further as
Jeff predicts or will there be a time where we start merging languages together and
come back to one super language? When does the segmentation of languages start to
hinder us instead of help us?&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=3da50d5c-4693-4e70-8c46-f82cf6a280d8" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,3da50d5c-4693-4e70-8c46-f82cf6a280d8.aspx</comments>
      <category>Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=b7f412e5-d021-42f6-ae92-1a1759376289</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,b7f412e5-d021-42f6-ae92-1a1759376289.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,b7f412e5-d021-42f6-ae92-1a1759376289.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b7f412e5-d021-42f6-ae92-1a1759376289</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <iframe src="http://docs.google.com/EmbedSlideshow?docid=dd2zph28_90jkspkbcv&amp;size=m" frameborder="0" height="451" width="555">
        </iframe>
        <br />
        <br />
        <b>Update:</b>
        <br />
        <br />
Video of my presentation.  
<br /><br /><object height="413" width="550"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3469916&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=c9ff23&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=3469916&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=c9ff23&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="413" width="550"></embed></object><br /><a href="http://vimeo.com/3469916">My BarCamp Buffalo Presentation - Intro to jQuery</a> from <a href="http://vimeo.com/user1233176">Ralph
Whitbeck</a> on <a href="http://vimeo.com">Vimeo</a>.<br /><br />
Presentation to BarCamp Buffalo on 3/3/09. My slides can be found http://ralphwhitbeck.com/2009/03/03/MyBarCampBuffaloSlidesIntroToJQuery.aspx<br /><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=b7f412e5-d021-42f6-ae92-1a1759376289" /></body>
      <title>My BarCamp Buffalo Slides - Intro to jQuery</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,b7f412e5-d021-42f6-ae92-1a1759376289.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/03/03/MyBarCampBuffaloSlidesIntroToJQuery.aspx</link>
      <pubDate>Tue, 03 Mar 2009 20:39:45 GMT</pubDate>
      <description>&lt;iframe src="http://docs.google.com/EmbedSlideshow?docid=dd2zph28_90jkspkbcv&amp;amp;size=m" frameborder="0" height="451" width="555"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Update:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Video of my presentation.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
&lt;object height="413" width="550"&gt;
&lt;param name="allowfullscreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3469916&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=1&amp;amp;color=c9ff23&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=3469916&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=1&amp;amp;color=c9ff23&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" height="413" width="550"&gt;
&lt;/object&gt;
&lt;br&gt;
&lt;a href="http://vimeo.com/3469916"&gt;My BarCamp Buffalo Presentation - Intro to jQuery&lt;/a&gt; from &lt;a href="http://vimeo.com/user1233176"&gt;Ralph
Whitbeck&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Presentation to BarCamp Buffalo on 3/3/09. My slides can be found http://ralphwhitbeck.com/2009/03/03/MyBarCampBuffaloSlidesIntroToJQuery.aspx&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=b7f412e5-d021-42f6-ae92-1a1759376289" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,b7f412e5-d021-42f6-ae92-1a1759376289.aspx</comments>
      <category>BrandLogic;Interesting Links;jQuery;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=ea18646f-afde-4431-8324-c25ea6801df7</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,ea18646f-afde-4431-8324-c25ea6801df7.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,ea18646f-afde-4431-8324-c25ea6801df7.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ea18646f-afde-4431-8324-c25ea6801df7</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">One of the most common questions I see
on twitter from people is "I need help with jQuery, any experts around?"<br /><br />
While this is definitely a fair use of twitter.  Being an "expert" in jQuery
I don't want to reply back with "Yes, I can help" without knowing what I am getting
involved in.<br /><br />
But not to fear there are plenty of places one can go to get help online.<br /><br /><img src="http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png" /><br />
My favorite place to get help is Stack Overflow (<a href="http://stackoverflow.com">http://stackoverflow.com</a>).
Stack Overflow is the Yahoo Answers, Experts Exchange for programmers.  And the
great thing for jQuery programmers is that there are a ton of jQuery experts hanging
out there.  jQuery questions seem to get answered almost immediately.<br /><br /><br /><img src="http://groups.google.com/groups/img/3nb/groups_bar.gif" /><br />
For more official help try the jQuery Group on Google Groups (<a href="http://groups.google.com/group/jquery-en?hl=en">http://groups.google.com/group/jquery-en?hl=en</a>). 
This is a great place to get help as most of the plugin authors and jQuery core programmers
are hanging out in here to help.<br /><br /><br /><h3><b>IRC Channels</b></h3>
If you require more one-on-one help you can jump in to the <a href="http://docs.jquery.com/Discussion#IRC_Channel">jQuery
IRC room</a> where at any given time there are 400+ jQuery developers hanging out
and talking jQuery.  Use the following information to connect to the channel. 
<p>
For general discussion and jQuery development, please visit: 
</p><p><b>Server:</b> irc.freenode.net<br /><b>Room:</b> #jquery 
</p><p>
For jQuery UI discussion, please visit: 
</p><p><b>Server:</b> irc.freenode.net<br /><b>Room:</b> #jquery-ui
</p><p><br /></p><p>
Good luck!
</p><p><br /></p><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=ea18646f-afde-4431-8324-c25ea6801df7" /></body>
      <title>Where to find help for your jQuery questions?</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,ea18646f-afde-4431-8324-c25ea6801df7.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/02/12/WhereToFindHelpForYourJQueryQuestions.aspx</link>
      <pubDate>Thu, 12 Feb 2009 16:09:07 GMT</pubDate>
      <description>One of the most common questions I see on twitter from people is "I need help with jQuery, any experts around?"&lt;br&gt;
&lt;br&gt;
While this is definitely a fair use of twitter.&amp;nbsp; Being an "expert" in jQuery
I don't want to reply back with "Yes, I can help" without knowing what I am getting
involved in.&lt;br&gt;
&lt;br&gt;
But not to fear there are plenty of places one can go to get help online.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png"&gt;
&lt;br&gt;
My favorite place to get help is Stack Overflow (&lt;a href="http://stackoverflow.com"&gt;http://stackoverflow.com&lt;/a&gt;).
Stack Overflow is the Yahoo Answers, Experts Exchange for programmers.&amp;nbsp; And the
great thing for jQuery programmers is that there are a ton of jQuery experts hanging
out there.&amp;nbsp; jQuery questions seem to get answered almost immediately.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;img src="http://groups.google.com/groups/img/3nb/groups_bar.gif"&gt;
&lt;br&gt;
For more official help try the jQuery Group on Google Groups (&lt;a href="http://groups.google.com/group/jquery-en?hl=en"&gt;http://groups.google.com/group/jquery-en?hl=en&lt;/a&gt;).&amp;nbsp;
This is a great place to get help as most of the plugin authors and jQuery core programmers
are hanging out in here to help.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;&lt;b&gt;IRC Channels&lt;/b&gt;
&lt;/h3&gt;
If you require more one-on-one help you can jump in to the &lt;a href="http://docs.jquery.com/Discussion#IRC_Channel"&gt;jQuery
IRC room&lt;/a&gt; where at any given time there are 400+ jQuery developers hanging out
and talking jQuery.&amp;nbsp; Use the following information to connect to the channel. 
&lt;p&gt;
For general discussion and jQuery development, please visit: 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Server:&lt;/b&gt; irc.freenode.net&lt;br&gt;
&lt;b&gt;Room:&lt;/b&gt; #jquery 
&lt;/p&gt;
&lt;p&gt;
For jQuery UI discussion, please visit: 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Server:&lt;/b&gt; irc.freenode.net&lt;br&gt;
&lt;b&gt;Room:&lt;/b&gt; #jquery-ui
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Good luck!
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=ea18646f-afde-4431-8324-c25ea6801df7" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,ea18646f-afde-4431-8324-c25ea6801df7.aspx</comments>
      <category>Interesting Links;jQuery;Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=82c29f48-3004-4454-acd9-4a804f675c1e</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,82c29f48-3004-4454-acd9-4a804f675c1e.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,82c29f48-3004-4454-acd9-4a804f675c1e.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=82c29f48-3004-4454-acd9-4a804f675c1e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">My #jQuery related twitter posts for the
week of January 27th - February 2nd:<ul><li><span id="msgtxt1153678151" class="msgtxt en">"In case you missed it: my <a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a> twitter
posts from this past week" <a href="http://bit.ly/4seKq6" onclick="pageTracker._trackPageview('/exit/link/1153678151')" target="_blank">http://bit.ly/4seKq6</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1154511694" class="msgtxt en">New blog post: ASP.NET MVC Release Candidate
- No Codebehinds on Views <a href="http://bit.ly/ogwg" onclick="pageTracker._trackPageview('/exit/link/1154511694')" target="_blank">http://bit.ly/ogwg</a> <span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1156196441" class="msgtxt en">"What You Need to Know About jQuery
1.3" <a href="http://bit.ly/Flmg" onclick="pageTracker._trackPageview('/exit/link/1156196441')" target="_blank">http://bit.ly/Flmg</a> <span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1158630866" class="msgtxt en">"Building a jQuery-Powered Tag-Cloud" <a href="http://bit.ly/hEoL" onclick="pageTracker._trackPageview('/exit/link/1158630866')" target="_blank">http://bit.ly/hEoL</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1158815894" class="msgtxt en">"Rotate images with Canvas jQuery plugin" <a href="http://bit.ly/2lOgwe" onclick="pageTracker._trackPageview('/exit/link/1158815894')" target="_blank">http://bit.ly/2lOgwe</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1158975942" class="msgtxt fr">"13 Excellent jQuery Animation Techniques" <a href="http://bit.ly/1493S" onclick="pageTracker._trackPageview('/exit/link/1158975942')" target="_blank">http://bit.ly/1493S</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1159178250" class="msgtxt en">"10+ Most Interesting And Useful jQuery
plugins - January 2009" <a href="http://bit.ly/AMgJ" onclick="pageTracker._trackPageview('/exit/link/1159178250')" target="_blank">http://bit.ly/AMgJ</a> <span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1159334643" class="msgtxt en">"Building an interactive map with jQuery
instead of Flash" <a href="http://bit.ly/Gydb" onclick="pageTracker._trackPageview('/exit/link/1159334643')" target="_blank">http://bit.ly/Gydb</a> <span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1159689231" class="msgtxt en">"Ajaxify jQuery Plugin" <a href="http://bit.ly/LOhi" onclick="pageTracker._trackPageview('/exit/link/1159689231')" target="_blank">http://bit.ly/LOhi</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://search.twitter.com/search?q=%23plugin">#plugin</a></span></li><li><span id="msgtxt1160733666" class="msgtxt en">New blog post: Building a jQuery-Powered
Tag-Cloud with an ASP.NET MVC backend <a href="http://bit.ly/jw8w" onclick="pageTracker._trackPageview('/exit/link/1160733666')" target="_blank">http://bit.ly/jw8w</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a> #aspnet-mvc</span></li><li><span id="msgtxt1161781883" class="msgtxt en">"CSS Sprites2 - It's JavaScript Time" <a href="http://bit.ly/2TKTUd" onclick="pageTracker._trackPageview('/exit/link/1161781883')" target="_blank">http://bit.ly/2TKTUd</a><a href="http://search.twitter.com/search?q=%23jQuery"><b>#jQuery</b></a><a href="http://search.twitter.com/search?q=%23css">#css</a><a href="http://search.twitter.com/search?q=%23sprites">#sprites</a></span></li><li><span id="msgtxt1161851540" class="msgtxt en">New blog post: Using ASP.NET MVC to
backend the jQuery powered Tag-Cloud <a href="http://bit.ly/jw8w" onclick="pageTracker._trackPageview('/exit/link/1161851540')" target="_blank">http://bit.ly/jw8w</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a> #aspnet-mvc</span></li><li><span id="msgtxt1162580126" class="msgtxt en">"Simple jQuery Delete Link For ASP.NET
MVC" <a href="http://bit.ly/HujQ" onclick="pageTracker._trackPageview('/exit/link/1162580126')" target="_blank">http://bit.ly/HujQ</a><span class="expand"></span> #aspnet-mvc <a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1163483384" class="msgtxt en">New blog post: Selecting a ASP.NET Generated
ID with jQuery <a href="http://bit.ly/3fOXaR" onclick="pageTracker._trackPageview('/exit/link/1163483384')" target="_blank">http://bit.ly/3fOXaR</a> <span class="expand"></span><a href="http://search.twitter.com/search?q=%23aspnet">#aspnet</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1169893010" class="msgtxt en">"Donate to jQuery and Open Source Software
today" <a href="http://bit.ly/QOLm" onclick="pageTracker._trackPageview('/exit/link/1169893010')" target="_blank">http://bit.ly/QOLm</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1170081594" class="msgtxt en">"Styling Buttons and Toolbars with the
jQuery UI CSS Framework" <a href="http://bit.ly/QnrD" onclick="pageTracker._trackPageview('/exit/link/1170081594')" target="_blank">http://bit.ly/QnrD</a> <span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://search.twitter.com/search?q=%23jqueryui">#jqueryui</a></span></li><li><span id="msgtxt1170226398" class="msgtxt en">"Interview with John Resig: Creator
of jQuery Javascript Library" <a href="http://bit.ly/E1HC" onclick="pageTracker._trackPageview('/exit/link/1170226398')" target="_blank">http://bit.ly/E1HC</a> <span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1170494288" class="msgtxt en">"jQuery 1.3 Aftermath" <a href="http://bit.ly/4wWNST" onclick="pageTracker._trackPageview('/exit/link/1170494288')" target="_blank">http://bit.ly/4wWNST</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1171014511" class="msgtxt en">"Quick Tip: Add Easing to Your Animations"<a href="http://bit.ly/is4q" onclick="pageTracker._trackPageview('/exit/link/1171014511')" target="_blank">http://bit.ly/is4q</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li><li><span id="msgtxt1171144942" class="msgtxt en">"OpenID provider suggestion with jQuery" <a href="http://bit.ly/2Ssbhn" onclick="pageTracker._trackPageview('/exit/link/1171144942')" target="_blank">http://bit.ly/2Ssbhn</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://search.twitter.com/search?q=%23openid">#openid</a></span></li><li><span id="msgtxt1171323422" class="msgtxt en">RT <a href="http://twitter.com/elijahmanor" onclick="pageTracker._trackPageview('/exit/to/elijahmanor')" target="_blank">@elijahmanor</a>:
"Lazy Load: Image lazy loader plugin for jQuery." by <a href="http://twitter.com/tuupola" onclick="pageTracker._trackPageview('/exit/to/tuupola')" target="_blank">@tuupola</a><a href="http://search.twitter.com/search?q=%23tech">#tech</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://bit.ly/tAAQ" onclick="pageTracker._trackPageview('/exit/link/1171323422')" target="_blank">http://bit.ly/tAAQ</a><span class="expand"></span></span></li><li><span id="msgtxt1171496621" class="msgtxt en">"jQuery Username Availability check." <a href="http://bit.ly/Ooln" onclick="pageTracker._trackPageview('/exit/link/1171496621')" target="_blank">http://bit.ly/Ooln</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span></li></ul><span id="msgtxt1153678151" class="msgtxt en"><br /><br /></span><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=82c29f48-3004-4454-acd9-4a804f675c1e" /></body>
      <title>In case you Missed it: #jQuery Twitter posts</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,82c29f48-3004-4454-acd9-4a804f675c1e.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/02/03/InCaseYouMissedItJQueryTwitterPosts.aspx</link>
      <pubDate>Tue, 03 Feb 2009 14:38:14 GMT</pubDate>
      <description>My #jQuery related twitter posts for the week of January 27th - February 2nd:&lt;ul&gt;
&lt;li&gt;
&lt;span id="msgtxt1153678151" class="msgtxt en"&gt;"In case you missed it: my &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; twitter
posts from this past week" &lt;a href="http://bit.ly/4seKq6" onclick="pageTracker._trackPageview('/exit/link/1153678151')" target="_blank"&gt;http://bit.ly/4seKq6&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1154511694" class="msgtxt en"&gt;New blog post: ASP.NET MVC Release Candidate
- No Codebehinds on Views &lt;a href="http://bit.ly/ogwg" onclick="pageTracker._trackPageview('/exit/link/1154511694')" target="_blank"&gt;http://bit.ly/ogwg&lt;/a&gt;&amp;nbsp;&lt;span class="expand"&gt;&lt;/span&gt;&lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1156196441" class="msgtxt en"&gt;"What You Need to Know About jQuery
1.3" &lt;a href="http://bit.ly/Flmg" onclick="pageTracker._trackPageview('/exit/link/1156196441')" target="_blank"&gt;http://bit.ly/Flmg&lt;/a&gt;&amp;nbsp;&lt;span class="expand"&gt;&lt;/span&gt;&lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1158630866" class="msgtxt en"&gt;"Building a jQuery-Powered Tag-Cloud" &lt;a href="http://bit.ly/hEoL" onclick="pageTracker._trackPageview('/exit/link/1158630866')" target="_blank"&gt;http://bit.ly/hEoL&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1158815894" class="msgtxt en"&gt;"Rotate images with Canvas jQuery plugin" &lt;a href="http://bit.ly/2lOgwe" onclick="pageTracker._trackPageview('/exit/link/1158815894')" target="_blank"&gt;http://bit.ly/2lOgwe&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1158975942" class="msgtxt fr"&gt;"13 Excellent jQuery Animation Techniques" &lt;a href="http://bit.ly/1493S" onclick="pageTracker._trackPageview('/exit/link/1158975942')" target="_blank"&gt;http://bit.ly/1493S&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1159178250" class="msgtxt en"&gt;"10+ Most Interesting And Useful jQuery
plugins - January 2009" &lt;a href="http://bit.ly/AMgJ" onclick="pageTracker._trackPageview('/exit/link/1159178250')" target="_blank"&gt;http://bit.ly/AMgJ&lt;/a&gt;&amp;nbsp;&lt;span class="expand"&gt;&lt;/span&gt;&lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1159334643" class="msgtxt en"&gt;"Building an interactive map with jQuery
instead of Flash" &lt;a href="http://bit.ly/Gydb" onclick="pageTracker._trackPageview('/exit/link/1159334643')" target="_blank"&gt;http://bit.ly/Gydb&lt;/a&gt;&amp;nbsp;&lt;span class="expand"&gt;&lt;/span&gt;&lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1159689231" class="msgtxt en"&gt;"Ajaxify jQuery Plugin" &lt;a href="http://bit.ly/LOhi" onclick="pageTracker._trackPageview('/exit/link/1159689231')" target="_blank"&gt;http://bit.ly/LOhi&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23plugin"&gt;#plugin&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1160733666" class="msgtxt en"&gt;New blog post: Building a jQuery-Powered
Tag-Cloud with an ASP.NET MVC backend &lt;a href="http://bit.ly/jw8w" onclick="pageTracker._trackPageview('/exit/link/1160733666')" target="_blank"&gt;http://bit.ly/jw8w&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; #aspnet-mvc&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1161781883" class="msgtxt en"&gt;"CSS Sprites2 - It's JavaScript Time" &lt;a href="http://bit.ly/2TKTUd" onclick="pageTracker._trackPageview('/exit/link/1161781883')" target="_blank"&gt;http://bit.ly/2TKTUd&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jQuery"&gt;&lt;b&gt;#jQuery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23css"&gt;#css&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23sprites"&gt;#sprites&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1161851540" class="msgtxt en"&gt;New blog post: Using ASP.NET MVC to
backend the jQuery powered Tag-Cloud &lt;a href="http://bit.ly/jw8w" onclick="pageTracker._trackPageview('/exit/link/1161851540')" target="_blank"&gt;http://bit.ly/jw8w&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; #aspnet-mvc&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1162580126" class="msgtxt en"&gt;"Simple jQuery Delete Link For ASP.NET
MVC" &lt;a href="http://bit.ly/HujQ" onclick="pageTracker._trackPageview('/exit/link/1162580126')" target="_blank"&gt;http://bit.ly/HujQ&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; #aspnet-mvc &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1163483384" class="msgtxt en"&gt;New blog post: Selecting a ASP.NET Generated
ID with jQuery &lt;a href="http://bit.ly/3fOXaR" onclick="pageTracker._trackPageview('/exit/link/1163483384')" target="_blank"&gt;http://bit.ly/3fOXaR&lt;/a&gt;&amp;nbsp;&lt;span class="expand"&gt;&lt;/span&gt;&lt;a href="http://search.twitter.com/search?q=%23aspnet"&gt;#aspnet&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1169893010" class="msgtxt en"&gt;"Donate to jQuery and Open Source Software
today" &lt;a href="http://bit.ly/QOLm" onclick="pageTracker._trackPageview('/exit/link/1169893010')" target="_blank"&gt;http://bit.ly/QOLm&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1170081594" class="msgtxt en"&gt;"Styling Buttons and Toolbars with the
jQuery UI CSS Framework" &lt;a href="http://bit.ly/QnrD" onclick="pageTracker._trackPageview('/exit/link/1170081594')" target="_blank"&gt;http://bit.ly/QnrD&lt;/a&gt;&amp;nbsp;&lt;span class="expand"&gt;&lt;/span&gt;&lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jqueryui"&gt;#jqueryui&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1170226398" class="msgtxt en"&gt;"Interview with John Resig: Creator
of jQuery Javascript Library" &lt;a href="http://bit.ly/E1HC" onclick="pageTracker._trackPageview('/exit/link/1170226398')" target="_blank"&gt;http://bit.ly/E1HC&lt;/a&gt;&amp;nbsp;&lt;span class="expand"&gt;&lt;/span&gt;&lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1170494288" class="msgtxt en"&gt;"jQuery 1.3 Aftermath" &lt;a href="http://bit.ly/4wWNST" onclick="pageTracker._trackPageview('/exit/link/1170494288')" target="_blank"&gt;http://bit.ly/4wWNST&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1171014511" class="msgtxt en"&gt;"Quick Tip: Add Easing to Your Animations"&lt;a href="http://bit.ly/is4q" onclick="pageTracker._trackPageview('/exit/link/1171014511')" target="_blank"&gt;http://bit.ly/is4q&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1171144942" class="msgtxt en"&gt;"OpenID provider suggestion with jQuery" &lt;a href="http://bit.ly/2Ssbhn" onclick="pageTracker._trackPageview('/exit/link/1171144942')" target="_blank"&gt;http://bit.ly/2Ssbhn&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23openid"&gt;#openid&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1171323422" class="msgtxt en"&gt;RT &lt;a href="http://twitter.com/elijahmanor" onclick="pageTracker._trackPageview('/exit/to/elijahmanor')" target="_blank"&gt;@elijahmanor&lt;/a&gt;:
"Lazy Load: Image lazy loader plugin for jQuery." by &lt;a href="http://twitter.com/tuupola" onclick="pageTracker._trackPageview('/exit/to/tuupola')" target="_blank"&gt;@tuupola&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23tech"&gt;#tech&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://bit.ly/tAAQ" onclick="pageTracker._trackPageview('/exit/link/1171323422')" target="_blank"&gt;http://bit.ly/tAAQ&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1171496621" class="msgtxt en"&gt;"jQuery Username Availability check." &lt;a href="http://bit.ly/Ooln" onclick="pageTracker._trackPageview('/exit/link/1171496621')" target="_blank"&gt;http://bit.ly/Ooln&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;span id="msgtxt1153678151" class="msgtxt en"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=82c29f48-3004-4454-acd9-4a804f675c1e" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,82c29f48-3004-4454-acd9-4a804f675c1e.aspx</comments>
      <category>Interesting Links;jQuery;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=2e2934be-ffb2-43aa-953c-a9ca14f8f460</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,2e2934be-ffb2-43aa-953c-a9ca14f8f460.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,2e2934be-ffb2-43aa-953c-a9ca14f8f460.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2e2934be-ffb2-43aa-953c-a9ca14f8f460</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">I was looking at some of the questions
on <a href="http://stackoverflow.com">Stack Overflow</a> this evening and <a href="http://stackoverflow.com/questions/497802/how-to-stop-asp-net-from-changeing-ids-in-order-to-use-jquery">I
came across one</a> that had a great tip for selecting a tag whose ID was generated
by ASP.NET.  So say you have a label control on your page:<br /><!-- code formatted by http://manoli.net/csharpformat/ --><style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }
</style><pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">asp:label</span><span class="attr">id</span><span class="kwrd">="label1"</span><span class="attr">runat</span><span class="kwrd">="server"</span><span class="kwrd">&gt;&lt;/</span><span class="html">asp</span><span class="kwrd">&gt;</span></pre><p>
The generated output of the html and the ID of that control might look like this:
</p><p></p><pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">span</span><span class="attr">id</span><span class="kwrd">="ctl00_ContentPlaceHolder1_Label1"</span><span class="kwrd">&gt;&lt;/</span><span class="html">span</span><span class="kwrd">&gt;</span></pre><p>
Unfortunately the generated ID of ct100_ContentPlaceHolder1_Label1 isn't always going
to be the same from build to build.  So trying to select it like this: 
</p><pre class="csharpcode">$(<span class="str">"#ct100_ContentPlaceHolder1_Label1"</span>).hide();</pre>
will eventually break and it won't hide the label control.<br /><br />
The trick is to use ASP.NET inside the jQuery selector. Label1.ClientID will return
the generated ID everytime. We combine ASP.NET and jQuery into one line like this:<pre class="csharpcode">$(<span class="str">"#</span><span class="asp">&lt;%</span>=
Label1.ClientID <span class="asp">%&gt;</span><span class="str">"</span>).hide();</pre><p>
This will get the generated ID of the Label control everytime.
</p><p><br /></p><p><br /></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=2e2934be-ffb2-43aa-953c-a9ca14f8f460" /></body>
      <title>Selecting a ASP.NET Generated ID with jQuery</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,2e2934be-ffb2-43aa-953c-a9ca14f8f460.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/01/31/SelectingAASPNETGeneratedIDWithJQuery.aspx</link>
      <pubDate>Sat, 31 Jan 2009 01:19:57 GMT</pubDate>
      <description>I was looking at some of the questions on &lt;a href="http://stackoverflow.com"&gt;Stack
Overflow&lt;/a&gt; this evening and &lt;a href="http://stackoverflow.com/questions/497802/how-to-stop-asp-net-from-changeing-ids-in-order-to-use-jquery"&gt;I
came across one&lt;/a&gt; that had a great tip for selecting a tag whose ID was generated
by ASP.NET.&amp;nbsp; So say you have a label control on your page:&lt;br&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:label&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="label1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
The generated output of the html and the ID of that control might look like this:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="ctl00_ContentPlaceHolder1_Label1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;
Unfortunately the generated ID of ct100_ContentPlaceHolder1_Label1 isn't always going
to be the same from build to build.&amp;nbsp; So trying to select it like this: 
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;$(&lt;span class="str"&gt;"#ct100_ContentPlaceHolder1_Label1"&lt;/span&gt;).hide();&lt;/pre&gt;
will eventually break and it won't hide the label control.&lt;br&gt;
&lt;br&gt;
The trick is to use ASP.NET inside the jQuery selector. Label1.ClientID will return
the generated ID everytime. We combine ASP.NET and jQuery into one line like this:&lt;pre class="csharpcode"&gt;$(&lt;span class="str"&gt;"#&lt;/span&gt;&lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;=
Label1.ClientID &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="str"&gt;"&lt;/span&gt;).hide();&lt;/pre&gt;
&lt;p&gt;
This will get the generated ID of the Label control everytime.
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=2e2934be-ffb2-43aa-953c-a9ca14f8f460" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,2e2934be-ffb2-43aa-953c-a9ca14f8f460.aspx</comments>
      <category>jQuery;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=5180f7aa-519c-4313-8f01-0b63a0bc61c2</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,5180f7aa-519c-4313-8f01-0b63a0bc61c2.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,5180f7aa-519c-4313-8f01-0b63a0bc61c2.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5180f7aa-519c-4313-8f01-0b63a0bc61c2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">NETTUTS had a great tutorial by Dan Wellman
called "<a title="Building a jQuery-Powered Tag-Cloud" href="http://nettuts.com/tutorials/javascript-ajax/building-a-jquery-powered-tag-cloud/" id="zbuh">Building
a jQuery-Powered Tag-Cloud</a>" The problem for me was that the tutorial showed you
how to connect to the database and pull tags and frequencies via PHP.<br /><br />
Because I am currently learning ASP.NET MVC I thought I would try to duplicate the
results of the tutorial but with using ASP.NET MVC RC instread of PHP.  Here
is how I did it.<br /><br />
I started by creating a Home Controller class.<br /><br />
HomeController.cs<br /><br /><!-- code formatted by http://manoli.net/csharpformat/ --><style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }
</style><div class="csharpcode"><pre class="alt"><span class="lnum"> 1: </span><span class="kwrd">using</span> System;</pre><pre><span class="lnum"> 2: </span><span class="kwrd">using</span> System.Collections.Generic;</pre><pre class="alt"><span class="lnum"> 3: </span><span class="kwrd">using</span> System.Linq;</pre><pre><span class="lnum"> 4: </span><span class="kwrd">using</span> System.Web;</pre><pre class="alt"><span class="lnum"> 5: </span><span class="kwrd">using</span> System.Web.Mvc;</pre><pre><span class="lnum"> 6: </span><span class="kwrd">using</span> System.Web.Mvc.Ajax;</pre><pre class="alt"><span class="lnum"> 7: </span> </pre><pre><span class="lnum"> 8: </span><span class="kwrd">namespace</span> MvcApplication5.Controllers</pre><pre class="alt"><span class="lnum"> 9: </span>{</pre><pre><span class="lnum"> 10: </span><span class="kwrd">public</span><span class="kwrd">class</span> HomeController
: Controller</pre><pre class="alt"><span class="lnum"> 11: </span> {</pre><pre><span class="lnum"> 12: </span><span class="rem">//</span></pre><pre class="alt"><span class="lnum"> 13: </span><span class="rem">// GET: /Home/</span></pre><pre><span class="lnum"> 14: </span><span class="kwrd">public</span> ActionResult
TagCloud()</pre><pre class="alt"><span class="lnum"> 15: </span> {</pre><pre><span class="lnum"> 16: </span><span class="kwrd">return</span> View();</pre><pre class="alt"><span class="lnum"> 17: </span> }</pre><pre><span class="lnum"> 18: </span> </pre><pre class="alt"><span class="lnum"> 19: </span><span class="kwrd">public</span> JsonResult
JSON()</pre><pre><span class="lnum"> 20: </span> {</pre><pre class="alt"><span class="lnum"> 21: </span> List&lt;<span class="kwrd">object</span>&gt;
tagcloud = <span class="kwrd">new</span> List&lt;<span class="kwrd">object</span>&gt;</pre><pre><span class="lnum"> 22: </span> {</pre><pre class="alt"><span class="lnum"> 23: </span><span class="kwrd">new</span> { tag
= <span class="str">"jQuery"</span>, freq = <span class="str">"10"</span> },</pre><pre><span class="lnum"> 24: </span><span class="kwrd">new</span> { tag = <span class="str">"asp.net"</span>,
freq = <span class="str">"3"</span>},</pre><pre class="alt"><span class="lnum"> 25: </span><span class="kwrd">new</span> { tag
= <span class="str">"programming"</span>, freq = <span class="str">"183"</span>},</pre><pre><span class="lnum"> 26: </span><span class="kwrd">new</span> { tag = <span class="str">"code"</span>,
freq = <span class="str">"34"</span> },</pre><pre class="alt"><span class="lnum"> 27: </span><span class="kwrd">new</span> { tag
= <span class="str">"HTML"</span>, freq = <span class="str">"58"</span>},</pre><pre><span class="lnum"> 28: </span><span class="kwrd">new</span> { tag = <span class="str">"javascript"</span>,
freq = <span class="str">"23"</span>},</pre><pre class="alt"><span class="lnum"> 29: </span><span class="kwrd">new</span> { tag
= <span class="str">"people"</span>, freq = <span class="str">"43"</span> },</pre><pre><span class="lnum"> 30: </span><span class="kwrd">new</span> { tag = <span class="str">"Google"</span>,
freq = <span class="str">"3"</span>},</pre><pre class="alt"><span class="lnum"> 31: </span><span class="kwrd">new</span> { tag
= <span class="str">"Microsoft"</span>, freq = <span class="str">"1"</span>},</pre><pre><span class="lnum"> 32: </span><span class="kwrd">new</span> { tag = <span class="str">"Apple"</span>,
freq = <span class="str">"10"</span> },</pre><pre class="alt"><span class="lnum"> 33: </span><span class="kwrd">new</span> { tag
= <span class="str">"iPhone"</span>, freq = <span class="str">"38"</span>},</pre><pre><span class="lnum"> 34: </span><span class="kwrd">new</span> { tag = <span class="str">"MVC"</span>,
freq = <span class="str">"1"</span>}</pre><pre class="alt"><span class="lnum"> 35: </span> };</pre><pre><span class="lnum"> 36: </span><span class="kwrd">return</span> Json(tagcloud); </pre><pre class="alt"><span class="lnum"> 37: </span> }</pre><pre><span class="lnum"> 38: </span> </pre><pre class="alt"><span class="lnum"> 39: </span> }</pre><pre><span class="lnum"> 40: </span>}</pre></div><br /><span> What's happening here is that we are making a action for the View we will create
and I am calling it TagCloud.  This action isn't going to provide us any data
so it's a stub action.  The next Action we create is to provide TagCloud the
JSON data.  In here I am creating a static List to send back serialized as JSON. 
You could also tie it to a model and use Linq to SQL to build the List. 
<br /><br />
Our URL for the .getJSON method will be: /Home/JSON 
<br /><br />
This will return JSON data that looks like this:<br /><br /></span><img src="http://ralphwhitbeck.com/content/binary/JSON-Data-ASPNET-MVC.png" border="0" /><span></span><span><br /><br />
Notice the difference in the JSON I am bringing back and the one Dan was bringing
back.  I don't have a tags: with the rest of the data nested under it. 
We'll need to update a line in the jQuery to make this work now.<br /><br />
Let's create the View for TagCloud.</span><br /><span><br />
TagCloud.aspx<br /><br /></span><!-- code formatted by http://manoli.net/csharpformat/ --><style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }
</style><div class="csharpcode"><pre class="alt"><span class="lnum"> 1: </span><span class="asp">&lt;%@ Page Language="C#"
Inherits="System.Web.Mvc.ViewPage" %&gt;</span></pre><pre><span class="lnum"> 2: </span> </pre><pre class="alt"><span class="lnum"> 3: </span><span class="kwrd">&lt;!</span><span class="html">DOCTYPE</span><span class="attr">HTML</span><span class="attr">PUBLIC</span><span class="kwrd">"-//W3C//DTD
HTML 4.01//EN"</span><span class="kwrd">"http://www.w3.org/TR/html4/strict.dtd"</span><span class="kwrd">&gt;</span></pre><pre><span class="lnum"> 4: </span><span class="kwrd">&lt;</span><span class="html">html</span><span class="kwrd">&gt;</span></pre><pre class="alt"><span class="lnum"> 5: </span><span class="kwrd">&lt;</span><span class="html">head</span><span class="kwrd">&gt;</span></pre><pre><span class="lnum"> 6: </span><span class="kwrd">&lt;</span><span class="html">link</span><span class="attr">rel</span><span class="kwrd">="stylesheet"</span><span class="attr">type</span><span class="kwrd">="text/css"</span><span class="attr">href</span><span class="kwrd">="/content/tagcloud.css"</span><span class="kwrd">/&gt;</span></pre><pre class="alt"><span class="lnum"> 7: </span><span class="kwrd">&lt;</span><span class="html">meta</span><span class="attr">http-equiv</span><span class="kwrd">="Content-Type"</span><span class="attr">content</span><span class="kwrd">="text/html;
charset=utf-8"</span><span class="kwrd">/&gt;</span></pre><pre><span class="lnum"> 8: </span><span class="kwrd">&lt;</span><span class="html">title</span><span class="kwrd">&gt;</span>jQuery
Tag Cloud<span class="kwrd">&lt;/</span><span class="html">title</span><span class="kwrd">&gt;</span></pre><pre class="alt"><span class="lnum"> 9: </span><span class="kwrd">&lt;/</span><span class="html">head</span><span class="kwrd">&gt;</span></pre><pre><span class="lnum"> 10: </span><span class="kwrd">&lt;</span><span class="html">body</span><span class="kwrd">&gt;</span></pre><pre class="alt"><span class="lnum"> 11: </span><span class="kwrd">&lt;</span><span class="html">div</span><span class="attr">id</span><span class="kwrd">="tagCloud"</span><span class="kwrd">&gt;</span></pre><pre><span class="lnum"> 12: </span><span class="kwrd">&lt;</span><span class="html">h2</span><span class="kwrd">&gt;</span>Tag
Cloud<span class="kwrd">&lt;/</span><span class="html">h2</span><span class="kwrd">&gt;</span></pre><pre class="alt"><span class="lnum"> 13: </span><span class="kwrd">&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span></pre><pre><span class="lnum"> 14: </span><span class="kwrd">&lt;</span><span class="html">script</span><span class="attr">type</span><span class="kwrd">="text/javascript"</span><span class="attr">src</span><span class="kwrd">="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"</span><span class="kwrd">&gt;&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span></pre><pre class="alt"><span class="lnum"> 15: </span> &lt;script type=<span class="str">"text/javascript"</span>&gt;</pre><pre><span class="lnum"> 16: </span> $(<span class="kwrd">function</span>() {</pre><pre class="alt"><span class="lnum"> 17: </span><span class="rem">//get tag feed </span></pre><pre><span class="lnum"> 18: </span> $.getJSON(<span class="str">"/Home/JSON"</span>,<span class="kwrd">null</span>, <span class="kwrd">function</span>(data)
{</pre><pre class="alt"><span class="lnum"> 19: </span><span class="rem">//create list for
tag links </span></pre><pre><span class="lnum"> 20: </span> $(<span class="str">"&lt;ul&gt;"</span>).attr(<span class="str">"id"</span>, <span class="str">"tagList"</span>).appendTo(<span class="str">"#tagCloud"</span>);</pre><pre class="alt"><span class="lnum"> 21: </span> </pre><pre><span class="lnum"> 22: </span><span class="rem">//create tags </span></pre><pre class="alt"><span class="lnum"> 23: </span> $.each(data, <span class="kwrd">function</span>(i,
val) {</pre><pre><span class="lnum"> 24: </span> </pre><pre class="alt"><span class="lnum"> 25: </span><span class="rem">//create item </span></pre><pre><span class="lnum"> 26: </span><span class="kwrd">var</span> li = $(<span class="str">"&lt;li&gt;"</span>);</pre><pre class="alt"><span class="lnum"> 27: </span> </pre><pre><span class="lnum"> 28: </span><span class="rem">//create link </span></pre><pre class="alt"><span class="lnum"> 29: </span> $(<span class="str">"&lt;a&gt;"</span>).text(val.tag).attr({
title: <span class="str">"See all pages tagged with "</span> + val.tag, href: <span class="str">"http://localhost/tags/"</span> +
val.tag + <span class="str">".html"</span> }).appendTo(li);</pre><pre><span class="lnum"> 30: </span> </pre><pre class="alt"><span class="lnum"> 31: </span><span class="rem">//add to list</span></pre><pre><span class="lnum"> 32: </span> li.appendTo(<span class="str">"#tagList"</span>);</pre><pre class="alt"><span class="lnum"> 33: </span><span class="rem">//set tag size </span></pre><pre><span class="lnum"> 34: </span> li.children().css(<span class="str">"fontSize"</span>,
(val.freq / 10 &lt; 1) ? val.freq / 10 + 1 + <span class="str">"em"</span> : (val.freq
/ 10 &gt; 2) ? <span class="str">"2em"</span> : val.freq / 10 + <span class="str">"em"</span>); </pre><pre class="alt"><span class="lnum"> 35: </span></pre><pre><span class="lnum"> 36: </span> });</pre><pre class="alt"><span class="lnum"> 37: </span> });</pre><pre><span class="lnum"> 38: </span> }); </pre><pre class="alt"><span class="lnum"> 39: </span><span class="kwrd">&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span></pre><pre><span class="lnum"> 40: </span><span class="kwrd">&lt;/</span><span class="html">body</span><span class="kwrd">&gt;</span></pre><pre class="alt"><span class="lnum"> 41: </span><span class="kwrd">&lt;/</span><span class="html">html</span><span class="kwrd">&gt;</span></pre></div><br /><span>As we start to loop through the JSON data Dan was telling jQuery to start inside
tags with data.tags, since we don't have tags we can just use the variable data like
so: </span><span>$.each(data, function(i, val) {<br /><br />
The rest of setting this up is the same as NETTUTS article.  All that remains
is the css.<br /><br /></span><img src="http://ralphwhitbeck.com/content/binary/tagcloud-preview.png" border="0" /><br /><br /><br /><b>Download the Source</b><br /><br /><a href="http://ralphwhitbeck.com/content/binary/jQuery-TagCloud_source.zip">jQuery-TagCloud_source.zip
(44.82 KB)</a><br /><br /><br /><br /><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=5180f7aa-519c-4313-8f01-0b63a0bc61c2" /></body>
      <title>Building a jQuery-Powered Tag-Cloud with an ASP.NET MVC backend</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,5180f7aa-519c-4313-8f01-0b63a0bc61c2.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/01/30/BuildingAJQueryPoweredTagCloudWithAnASPNETMVCBackend.aspx</link>
      <pubDate>Fri, 30 Jan 2009 04:02:13 GMT</pubDate>
      <description>NETTUTS had a great tutorial by Dan Wellman called "&lt;a title="Building a jQuery-Powered Tag-Cloud" href="http://nettuts.com/tutorials/javascript-ajax/building-a-jquery-powered-tag-cloud/" id="zbuh"&gt;Building
a jQuery-Powered Tag-Cloud&lt;/a&gt;" The problem for me was that the tutorial showed you
how to connect to the database and pull tags and frequencies via PHP.&lt;br&gt;
&lt;br&gt;
Because I am currently learning ASP.NET MVC I thought I would try to duplicate the
results of the tutorial but with using ASP.NET MVC RC instread of PHP.&amp;nbsp; Here
is how I did it.&lt;br&gt;
&lt;br&gt;
I started by creating a Home Controller class.&lt;br&gt;
&lt;br&gt;
HomeController.cs&lt;br&gt;
&lt;br&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.Mvc;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.Mvc.Ajax;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; MvcApplication5.Controllers&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; HomeController
: Controller&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; &lt;span class="rem"&gt;//&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; &lt;span class="rem"&gt;// GET: /Home/&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult
TagCloud()&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; View();&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; JsonResult
JSON()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt;
tagcloud = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;object&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt; {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag
= &lt;span class="str"&gt;"jQuery"&lt;/span&gt;, freq = &lt;span class="str"&gt;"10"&lt;/span&gt; },&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag = &lt;span class="str"&gt;"asp.net"&lt;/span&gt;,
freq = &lt;span class="str"&gt;"3"&lt;/span&gt;},&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag
= &lt;span class="str"&gt;"programming"&lt;/span&gt;, freq = &lt;span class="str"&gt;"183"&lt;/span&gt;},&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag = &lt;span class="str"&gt;"code"&lt;/span&gt;,
freq = &lt;span class="str"&gt;"34"&lt;/span&gt; },&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag
= &lt;span class="str"&gt;"HTML"&lt;/span&gt;, freq = &lt;span class="str"&gt;"58"&lt;/span&gt;},&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 28: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag = &lt;span class="str"&gt;"javascript"&lt;/span&gt;,
freq = &lt;span class="str"&gt;"23"&lt;/span&gt;},&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 29: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag
= &lt;span class="str"&gt;"people"&lt;/span&gt;, freq = &lt;span class="str"&gt;"43"&lt;/span&gt; },&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 30: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag = &lt;span class="str"&gt;"Google"&lt;/span&gt;,
freq = &lt;span class="str"&gt;"3"&lt;/span&gt;},&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 31: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag
= &lt;span class="str"&gt;"Microsoft"&lt;/span&gt;, freq = &lt;span class="str"&gt;"1"&lt;/span&gt;},&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 32: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag = &lt;span class="str"&gt;"Apple"&lt;/span&gt;,
freq = &lt;span class="str"&gt;"10"&lt;/span&gt; },&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 33: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag
= &lt;span class="str"&gt;"iPhone"&lt;/span&gt;, freq = &lt;span class="str"&gt;"38"&lt;/span&gt;},&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 34: &lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; { tag = &lt;span class="str"&gt;"MVC"&lt;/span&gt;,
freq = &lt;span class="str"&gt;"1"&lt;/span&gt;}&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 35: &lt;/span&gt; };&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 36: &lt;/span&gt; &lt;span class="kwrd"&gt;return&lt;/span&gt; Json(tagcloud); &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 37: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 38: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 39: &lt;/span&gt; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 40: &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;span&gt; What's happening here is that we are making a action for the View we will create
and I am calling it TagCloud.&amp;nbsp; This action isn't going to provide us any data
so it's a stub action.&amp;nbsp; The next Action we create is to provide TagCloud the
JSON data.&amp;nbsp; In here I am creating a static List to send back serialized as JSON.&amp;nbsp;
You could also tie it to a model and use Linq to SQL to build the List. 
&lt;br&gt;
&lt;br&gt;
Our URL for the .getJSON method will be: /Home/JSON 
&lt;br&gt;
&lt;br&gt;
This will return JSON data that looks like this:&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;img src="http://ralphwhitbeck.com/content/binary/JSON-Data-ASPNET-MVC.png" border="0"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;
&lt;br&gt;
&lt;br&gt;
Notice the difference in the JSON I am bringing back and the one Dan was bringing
back.&amp;nbsp; I don't have a tags: with the rest of the data nested under it.&amp;nbsp;
We'll need to update a line in the jQuery to make this work now.&lt;br&gt;
&lt;br&gt;
Let's create the View for TagCloud.&lt;/span&gt;
&lt;br&gt;
&lt;span&gt; 
&lt;br&gt;
TagCloud.aspx&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: Consolas, "Courier New", Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}

.csharpcode pre { margin: 0em; }

.csharpcode .rem { color: #008000; }

.csharpcode .kwrd { color: #0000ff; }

.csharpcode .str { color: #006080; }

.csharpcode .op { color: #0000c0; }

.csharpcode .preproc { color: #cc6633; }

.csharpcode .asp { background-color: #ffff00; }

.csharpcode .html { color: #800000; }

.csharpcode .attr { color: #ff0000; }

.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}

.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language="C#"
Inherits="System.Web.Mvc.ViewPage" %&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;HTML&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD
HTML 4.01//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/html4/strict.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="/content/tagcloud.css"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;http-equiv&lt;/span&gt;&lt;span class="kwrd"&gt;="Content-Type"&lt;/span&gt; &lt;span class="attr"&gt;content&lt;/span&gt;&lt;span class="kwrd"&gt;="text/html;
charset=utf-8"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;jQuery
Tag Cloud&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 11: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="tagCloud"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 12: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Tag
Cloud&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 13: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 14: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 15: &lt;/span&gt; &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 16: &lt;/span&gt; $(&lt;span class="kwrd"&gt;function&lt;/span&gt;() {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 17: &lt;/span&gt; &lt;span class="rem"&gt;//get tag feed &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 18: &lt;/span&gt; $.getJSON(&lt;span class="str"&gt;"/Home/JSON"&lt;/span&gt;,&lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt;(data)
{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 19: &lt;/span&gt; &lt;span class="rem"&gt;//create list for
tag links &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 20: &lt;/span&gt; $(&lt;span class="str"&gt;"&amp;lt;ul&amp;gt;"&lt;/span&gt;).attr(&lt;span class="str"&gt;"id"&lt;/span&gt;, &lt;span class="str"&gt;"tagList"&lt;/span&gt;).appendTo(&lt;span class="str"&gt;"#tagCloud"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 21: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 22: &lt;/span&gt; &lt;span class="rem"&gt;//create tags &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 23: &lt;/span&gt; $.each(data, &lt;span class="kwrd"&gt;function&lt;/span&gt;(i,
val) {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 24: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 25: &lt;/span&gt; &lt;span class="rem"&gt;//create item &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 26: &lt;/span&gt; &lt;span class="kwrd"&gt;var&lt;/span&gt; li = $(&lt;span class="str"&gt;"&amp;lt;li&amp;gt;"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 27: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 28: &lt;/span&gt; &lt;span class="rem"&gt;//create link &lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 29: &lt;/span&gt; $(&lt;span class="str"&gt;"&amp;lt;a&amp;gt;"&lt;/span&gt;).text(val.tag).attr({
title: &lt;span class="str"&gt;"See all pages tagged with "&lt;/span&gt; + val.tag, href: &lt;span class="str"&gt;"http://localhost/tags/"&lt;/span&gt; +
val.tag + &lt;span class="str"&gt;".html"&lt;/span&gt; }).appendTo(li);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 30: &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 31: &lt;/span&gt; &lt;span class="rem"&gt;//add to list&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 32: &lt;/span&gt; li.appendTo(&lt;span class="str"&gt;"#tagList"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 33: &lt;/span&gt; &lt;span class="rem"&gt;//set tag size &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 34: &lt;/span&gt; li.children().css(&lt;span class="str"&gt;"fontSize"&lt;/span&gt;,
(val.freq / 10 &amp;lt; 1) ? val.freq / 10 + 1 + &lt;span class="str"&gt;"em"&lt;/span&gt; : (val.freq
/ 10 &amp;gt; 2) ? &lt;span class="str"&gt;"2em"&lt;/span&gt; : val.freq / 10 + &lt;span class="str"&gt;"em"&lt;/span&gt;); &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 35: &lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 36: &lt;/span&gt; });&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 37: &lt;/span&gt; });&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 38: &lt;/span&gt; }); &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 39: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 40: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 41: &lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;span&gt;As we start to loop through the JSON data Dan was telling jQuery to start inside
tags with data.tags, since we don't have tags we can just use the variable data like
so: &lt;/span&gt;&lt;span&gt;$.each(data, function(i, val) {&lt;br&gt;
&lt;br&gt;
The rest of setting this up is the same as NETTUTS article.&amp;nbsp; All that remains
is the css.&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;img src="http://ralphwhitbeck.com/content/binary/tagcloud-preview.png" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Download the Source&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://ralphwhitbeck.com/content/binary/jQuery-TagCloud_source.zip"&gt;jQuery-TagCloud_source.zip
(44.82 KB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=5180f7aa-519c-4313-8f01-0b63a0bc61c2" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,5180f7aa-519c-4313-8f01-0b63a0bc61c2.aspx</comments>
      <category>ASP.NET MVC;How-to;jQuery;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=0167cccc-95ee-493f-84cf-d144a644bbfe</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,0167cccc-95ee-493f-84cf-d144a644bbfe.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,0167cccc-95ee-493f-84cf-d144a644bbfe.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0167cccc-95ee-493f-84cf-d144a644bbfe</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Check out<a href="http://weblogs.asp.net/scottgu/archive/2009/01/27/asp-net-mvc-1-0-release-candidate-now-available.aspx"> Scott
Guthrie's mammoth blog post</a> on what's changed in this release of the <a href="http://go.microsoft.com/fwlink/?LinkID=141184&amp;clcid=0x409">ASP.NET
MVC RC</a> that was pushed to the public today.  A lot has changed in my opinion. 
One change that I wasn't expecting was that Views and View User Controls do not have
code-behinds any more. 
<br /><br />
The problem was the only way to have strongly typed Views was to inherit in the code
behind.  This caused an issue with intellisense in the aspx/ascx pages. You would
need to create and immediately build in order to have intellisense work. 
<br /><br />
No one was using the code-behinds anyways.  The code should be in the Controllers.<br /><br />
Here is the write up from Scotts Blog:<br /><br /><blockquote><font size="2" face="arial"><p><u>Views without Code-Behind Files</u></p><p>
Based on feedback we’ve changed view-templates to not have a code-behind file by default. 
This change helps reinforce the purpose of views in a MVC application (which are intended
to be purely about rendering and to not contain any non-rendering related code), and
for most people eliminates unused files in the project.
</p><p>
The RC build now adds C# and VB syntax support for inheriting view templates from
base classes that use generics.  For example, below we are using this with the
Edit.aspx view template – whose “inherits” attribute derives from the ViewPage&lt;Product&gt;
type:
</p><p><img src="http://www.scottgu.com/blogposts/mvcrc/mvcrc/step22.png" /></p><p>
One nice benefit of not using a code-behind file is that you'll now get immediate
intellisense within view template files when you add them to the project.  With
previous builds you had to do a build/compile immediately after creating a view in
order to get code intellisense within it.  The RC makes the workflow of adding
and immediately editing a view compile-free and much more seamless.
</p><p><em>Important: If you are upgrading a ASP.NET MVC project that was created with an
earlier build make sure to follow the steps in the release notes – the web.config
file under the \Views directory needs to be updated with some settings in order for
the above generics based syntax to work.</em></p></font></blockquote><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=0167cccc-95ee-493f-84cf-d144a644bbfe" /></body>
      <title>ASP.NET MVC Release Candidate - No Codebehinds on Views</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,0167cccc-95ee-493f-84cf-d144a644bbfe.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/01/28/ASPNETMVCReleaseCandidateNoCodebehindsOnViews.aspx</link>
      <pubDate>Wed, 28 Jan 2009 05:55:32 GMT</pubDate>
      <description>Check out&lt;a href="http://weblogs.asp.net/scottgu/archive/2009/01/27/asp-net-mvc-1-0-release-candidate-now-available.aspx"&gt; Scott
Guthrie's mammoth blog post&lt;/a&gt; on what's changed in this release of the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=141184&amp;amp;clcid=0x409"&gt;ASP.NET
MVC RC&lt;/a&gt; that was pushed to the public today.&amp;nbsp; A lot has changed in my opinion.&amp;nbsp;
One change that I wasn't expecting was that Views and View User Controls do not have
code-behinds any more. 
&lt;br&gt;
&lt;br&gt;
The problem was the only way to have strongly typed Views was to inherit in the code
behind.&amp;nbsp; This caused an issue with intellisense in the aspx/ascx pages. You would
need to create and immediately build in order to have intellisense work. 
&lt;br&gt;
&lt;br&gt;
No one was using the code-behinds anyways.&amp;nbsp; The code should be in the Controllers.&lt;br&gt;
&lt;br&gt;
Here is the write up from Scotts Blog:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;font size="2" face="arial"&gt;
&lt;p&gt;
&lt;u&gt;Views without Code-Behind Files&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
Based on feedback we’ve changed view-templates to not have a code-behind file by default.&amp;nbsp;
This change helps reinforce the purpose of views in a MVC application (which are intended
to be purely about rendering and to not contain any non-rendering related code), and
for most people eliminates unused files in the project.
&lt;/p&gt;
&lt;p&gt;
The RC build now adds C# and VB syntax support for inheriting view templates from
base classes that use generics.&amp;nbsp; For example, below we are using this with the
Edit.aspx view template – whose “inherits” attribute derives from the ViewPage&amp;lt;Product&amp;gt;
type:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.scottgu.com/blogposts/mvcrc/mvcrc/step22.png"&gt; 
&lt;/p&gt;
&lt;p&gt;
One nice benefit of not using a code-behind file is that you'll now get immediate
intellisense within view template files when you add them to the project.&amp;nbsp; With
previous builds you had to do a build/compile immediately after creating a view in
order to get code intellisense within it.&amp;nbsp; The RC makes the workflow of adding
and immediately editing a view compile-free and much more seamless.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Important: If you are upgrading a ASP.NET MVC project that was created with an
earlier build make sure to follow the steps in the release notes – the web.config
file under the \Views directory needs to be updated with some settings in order for
the above generics based syntax to work.&lt;/em&gt;
&lt;/p&gt;
&lt;/font&gt;&lt;/blockquote&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=0167cccc-95ee-493f-84cf-d144a644bbfe" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,0167cccc-95ee-493f-84cf-d144a644bbfe.aspx</comments>
      <category>ASP.NET MVC;Interesting Links;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=e11e89e2-29bf-4560-9a8f-459d35fba465</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,e11e89e2-29bf-4560-9a8f-459d35fba465.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,e11e89e2-29bf-4560-9a8f-459d35fba465.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e11e89e2-29bf-4560-9a8f-459d35fba465</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">BarCamp Rochester 4 has been announced
for April 18th at RIT.  I missed last years and wish I could of attended. 
This year I kicked myself in the butt and signed up to present on ASP.NET MVC. 
This will force me to do a couple of things.  It'll force me to really understand
MVC and it'll force me to be prepared.<br /><br />
Now if it'll force me to rewrite my blog in ASP.NET MVC by then who knows. Would be
a good talking point. 
<br /><br />
Anyway, here is an initial structure of my presentation I am thinking about:<br /><br /><ul><li>
Introduction</li><li>
MVC</li><ul><li>
Current uses (ruby on rails, CakePHP, etc.)</li><li>
MVC in the wild (StackOverflow)</li><li>
Status of MVC<br /></li></ul><li>
MVC vs Web Forms</li><li>
Demo (perhaps build a simple blog)</li></ul>
Any suggestions?<br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=e11e89e2-29bf-4560-9a8f-459d35fba465" /></body>
      <title>BarCamp Rochester 4</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,e11e89e2-29bf-4560-9a8f-459d35fba465.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/01/26/BarCampRochester4.aspx</link>
      <pubDate>Mon, 26 Jan 2009 16:00:23 GMT</pubDate>
      <description>BarCamp Rochester 4 has been announced for April 18th at RIT.&amp;nbsp; I missed last years and wish I could of attended.&amp;nbsp; This year I kicked myself in the butt and signed up to present on ASP.NET MVC.&amp;nbsp; This will force me to do a couple of things.&amp;nbsp; It'll force me to really understand MVC and it'll force me to be prepared.&lt;br&gt;
&lt;br&gt;
Now if it'll force me to rewrite my blog in ASP.NET MVC by then who knows. Would be
a good talking point. 
&lt;br&gt;
&lt;br&gt;
Anyway, here is an initial structure of my presentation I am thinking about:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Introduction&lt;/li&gt;
&lt;li&gt;
MVC&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
Current uses (ruby on rails, CakePHP, etc.)&lt;/li&gt;
&lt;li&gt;
MVC in the wild (StackOverflow)&lt;/li&gt;
&lt;li&gt;
Status of MVC&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
MVC vs Web Forms&lt;/li&gt;
&lt;li&gt;
Demo (perhaps build a simple blog)&lt;/li&gt;
&lt;/ul&gt;
Any suggestions?&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=e11e89e2-29bf-4560-9a8f-459d35fba465" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,e11e89e2-29bf-4560-9a8f-459d35fba465.aspx</comments>
      <category>Programming;Technology;ASP.NET MVC</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=96e28f48-1dcc-4cec-afde-ca0ead964c9f</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,96e28f48-1dcc-4cec-afde-ca0ead964c9f.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,96e28f48-1dcc-4cec-afde-ca0ead964c9f.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=96e28f48-1dcc-4cec-afde-ca0ead964c9f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">While helping people out on twitter with
jQuery lately I've found one of the most common asked questions is, "why won't jQuery
work when I include prototype as well?" Well the answer to the why is simple. jQuery
and prototype are both competing for how $() is going to be used.<br /><br />
I set out to understand how this would break and how to call jQuery.noConflict();
and make both work. 
<br /><p></p><a href="http://ralphwhitbeck.com/content/binary/noConflict_test.html">noConflict_test.html
(2.41 KB)</a><br /><br />
If you look at my code you'll see that I was having a hard time just trying to get
a single line of prototype to work as it should. I tried to display a div that was
hidden with css. A very simple task in jQuery. Unfortunately, it states right on the
Element.show documentation page that prototype is not capable of displaying elements
that are hidden with css. 
<br /><br />
Next I tried to color the text of the other element on the page. Which to my bad luck
I was injecting into the DOM and I was finding that this is impossible to do in both
jQuery and Prototype.<br /><br />
In the end all I wanted to do was fire one prototype command and have it update the
DOM in some way. Needless to say this gave me a bad taste in my mouth for prototype.<br /><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=96e28f48-1dcc-4cec-afde-ca0ead964c9f" /></body>
      <title>jQuery vs Prototype and jQuery.noConflict()</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,96e28f48-1dcc-4cec-afde-ca0ead964c9f.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/01/24/jQueryVsPrototypeAndJQuerynoConflict.aspx</link>
      <pubDate>Sat, 24 Jan 2009 04:33:12 GMT</pubDate>
      <description>While helping people out on twitter with jQuery lately I've found one of the most common asked questions is, "why won't jQuery work when I include prototype as well?" Well the answer to the why is simple.  jQuery and prototype are both competing for how $() is going to be used.&lt;br&gt;
&lt;br&gt;
I set out to understand how this would break and how to call jQuery.noConflict();
and make both work. 
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;a href="http://ralphwhitbeck.com/content/binary/noConflict_test.html"&gt;noConflict_test.html
(2.41 KB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
If you look at my code you'll see that I was having a hard time just trying to get
a single line of prototype to work as it should. I tried to display a div that was
hidden with css. A very simple task in jQuery. Unfortunately, it states right on the
Element.show documentation page that prototype is not capable of displaying elements
that are hidden with css. 
&lt;br&gt;
&lt;br&gt;
Next I tried to color the text of the other element on the page. Which to my bad luck
I was injecting into the DOM and I was finding that this is impossible to do in both
jQuery and Prototype.&lt;br&gt;
&lt;br&gt;
In the end all I wanted to do was fire one prototype command and have it update the
DOM in some way. Needless to say this gave me a bad taste in my mouth for prototype.&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=96e28f48-1dcc-4cec-afde-ca0ead964c9f" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,96e28f48-1dcc-4cec-afde-ca0ead964c9f.aspx</comments>
      <category>jQuery;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=7781da1e-88f2-491f-9de2-77df2ed4a5a8</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,7781da1e-88f2-491f-9de2-77df2ed4a5a8.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7781da1e-88f2-491f-9de2-77df2ed4a5a8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">My #jQuery related twitter posts for the
week of January 13th - January 19th:<br /><br /><ul><li><span id="msgtxt1116858867" class="msgtxt en">RT: How To Build A Custom jQuery Selector <a href="http://tinyurl.com/6vjwjt" onclick="pageTracker._trackPageview('/exit/link/1116858867')" target="_blank">http://tinyurl.com/6vjwjt</a> (via <a href="http://twitter.com/jquery" onclick="pageTracker._trackPageview('/exit/to/jquery')" target="_blank">@jquery</a>) <a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span> Jan
13, 2009 10:55 PM GMT</li><li><span id="msgtxt1118302624" class="msgtxt en">Awesome, I made a "Top 20 jQuery Tweeple
to Follow" list. <a href="http://bit.ly/V8hs" onclick="pageTracker._trackPageview('/exit/link/1118302624')" target="_blank">http://bit.ly/V8hs</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span> Jan
14, 2009 02:14 PM GMT</li><li><span id="msgtxt1118351619" class="msgtxt en">Damn look at the performance gains of
jQuery 1.3 <a href="http://bit.ly/5GqX" onclick="pageTracker._trackPageview('/exit/link/1118351619')" target="_blank">http://bit.ly/5GqX</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span> Jan
14, 2009 02:37 PM GMT</li><li><span id="msgtxt1118355376" class="msgtxt en">Official announcement jQuery 1.3 released <a href="http://bit.ly/xBIP" onclick="pageTracker._trackPageview('/exit/link/1118355376')" target="_blank">http://bit.ly/xBIP</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span> Jan
14, 2009 02:38 PM GMT</li><li><span id="msgtxt1118393349" class="msgtxt en">New jQuery API Browser <a href="http://api.jquery.com/" onclick="pageTracker._trackPageview('/exit/link/1118393349')" target="_blank">http://api.jquery.com/</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span> Jan
14, 2009 02:55 PM GMT</li><li><span id="msgtxt1119199552" class="msgtxt en">"Select Cuts Off Options In IE (Fix)" <a href="http://bit.ly/13fJY" onclick="pageTracker._trackPageview('/exit/link/1119199552')" target="_blank">http://bit.ly/13fJY</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://search.twitter.com/search?q=%23css">#css</a><a href="http://search.twitter.com/search?q=%23ie">#ie</a><a href="http://search.twitter.com/search?q=%23hack">#hack</a></span> Jan
14, 2009 08:31 PM GMT</li><li><span id="msgtxt1119758383" class="msgtxt en">"Building a reusabe font size controller
interface using jQuery" <a href="http://bit.ly/QHLS" onclick="pageTracker._trackPageview('/exit/link/1119758383')" target="_blank">http://bit.ly/QHLS</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span> Jan
15, 2009 12:35 AM GMT</li><li><span id="msgtxt1119792460" class="msgtxt en">"XML Parsing with jQuery" <a href="http://bit.ly/1cynCX" onclick="pageTracker._trackPageview('/exit/link/1119792460')" target="_blank">http://bit.ly/1cynCX</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://search.twitter.com/search?q=%23xml">#xml</a></span> Jan
15, 2009 12:53 AM GMT</li><li><span id="msgtxt1123917142" class="msgtxt en">Unofficial jQuery 1.3 and VS 2008 Intellisense
vsdoc file <a href="http://bit.ly/zOr7" onclick="pageTracker._trackPageview('/exit/link/1123917142')" target="_blank">http://bit.ly/zOr7</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://search.twitter.com/search?q=%23visualstudio">#visualstudio</a></span> Jan
16, 2009 03:34 PM GMT</li><li><span id="msgtxt1123982740" class="msgtxt en">"45+ New jQuery Techniques For Good
User Experience" <a href="http://bit.ly/ati4" onclick="pageTracker._trackPageview('/exit/link/1123982740')" target="_blank">http://bit.ly/ati4</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jQuery"><b>#jQuery</b></a></span> Jan
16, 2009 04:00 PM GMT</li><li><span id="msgtxt1124210067" class="msgtxt en">"jQuery UI 1.6rc5 Compatible with jQuery
1.3" <a href="http://bit.ly/o6A" onclick="pageTracker._trackPageview('/exit/link/1124210067')" target="_blank">http://bit.ly/o6A</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://search.twitter.com/search?q=%23jqueryui">#jqueryui</a></span> Jan
16, 2009 05:31 PM GMT</li><li><span id="msgtxt1124219261" class="msgtxt en">Interesting feature of the jQuery API
Browser <a href="http://bit.ly/24rC" onclick="pageTracker._trackPageview('/exit/link/1124219261')" target="_blank">http://bit.ly/24rC</a><span class="expand"></span> view
only the new 1.3 features <a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span> Jan
16, 2009 05:35 PM GMT</li><li><span id="msgtxt1124689797" class="msgtxt en">RT <a href="http://twitter.com/jquery" onclick="pageTracker._trackPageview('/exit/to/jquery')" target="_blank">@jquery</a>:
Adding the nofollow attribute to external links with jQuery <a href="http://is.gd/g9Kr" onclick="pageTracker._trackPageview('/exit/link/1124689797')" target="_blank">http://is.gd/g9Kr</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span> Jan
16, 2009 08:56 PM GMT</li><li><span id="msgtxt1125089013" class="msgtxt en">FaceBox - Lightbox for everything and
images <a href="http://famspam.com/facebox" onclick="pageTracker._trackPageview('/exit/link/1125089013')" target="_blank">http://famspam.com/facebox</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://search.twitter.com/search?q=%23plugin">#plugin</a></span> Jan
17, 2009 12:13 AM GMT</li><li><span id="msgtxt1125245137" class="msgtxt en">RT <a href="http://twitter.com/rmurphey" onclick="pageTracker._trackPageview('/exit/to/rmurphey')" target="_blank">@rmurphey</a>: <a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a> how
to fix fade glitch in ie using $.support instead of $.browser? <a href="http://tinyurl.com/3gwlwy" onclick="pageTracker._trackPageview('/exit/link/1125245137')" target="_blank">http://tinyurl.com/3gwlwy</a><span class="expand"></span> ...</span> Jan
17, 2009 01:37 AM GMT</li><li><span id="msgtxt1130776330" class="msgtxt en">"The Sexy Curls jQuery Plugin for a
nice page fold" <a href="http://tinyurl.com/a46cpf" onclick="pageTracker._trackPageview('/exit/link/1130776330')" target="_blank">http://tinyurl.com/a46cpf</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a><a href="http://search.twitter.com/search?q=%23plugin">#plugin</a></span> Jan
19, 2009 04:32 PM GMT</li><li><span id="msgtxt1131634274" class="msgtxt en">RT <a href="http://twitter.com/mlane" onclick="pageTracker._trackPageview('/exit/to/mlane')" target="_blank">@mlane</a>:
Build a Tabbed Box with CSS and jQuery - <a href="http://bit.ly/13Zkz" onclick="pageTracker._trackPageview('/exit/link/1131634274')" target="_blank">http://bit.ly/13Zkz</a><span class="expand"></span><a href="http://search.twitter.com/search?q=%23tutorial">#tutorial</a><a href="http://search.twitter.com/search?q=%23jquery"><b>#jquery</b></a></span> Jan
19, 2009 10:39 PM GMT</li></ul><a href="http://twitter.com/redwolves">Follow me</a> to see what I'll twitter next
about jQuery.<br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=7781da1e-88f2-491f-9de2-77df2ed4a5a8" /></body>
      <title>In Case you Missed it: #jQuery Twitter posts</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,7781da1e-88f2-491f-9de2-77df2ed4a5a8.aspx</guid>
      <link>http://ralphwhitbeck.com/2009/01/20/InCaseYouMissedItJQueryTwitterPosts.aspx</link>
      <pubDate>Tue, 20 Jan 2009 18:45:25 GMT</pubDate>
      <description>My #jQuery related twitter posts for the week of January 13th - January 19th:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;span id="msgtxt1116858867" class="msgtxt en"&gt;RT: How To Build A Custom jQuery Selector &lt;a href="http://tinyurl.com/6vjwjt" onclick="pageTracker._trackPageview('/exit/link/1116858867')" target="_blank"&gt;http://tinyurl.com/6vjwjt&lt;/a&gt; (via &lt;a href="http://twitter.com/jquery" onclick="pageTracker._trackPageview('/exit/to/jquery')" target="_blank"&gt;@jquery&lt;/a&gt;) &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
13, 2009 10:55 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1118302624" class="msgtxt en"&gt;Awesome, I made a "Top 20 jQuery Tweeple
to Follow" list. &lt;a href="http://bit.ly/V8hs" onclick="pageTracker._trackPageview('/exit/link/1118302624')" target="_blank"&gt;http://bit.ly/V8hs&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
14, 2009 02:14 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1118351619" class="msgtxt en"&gt;Damn look at the performance gains of
jQuery 1.3 &lt;a href="http://bit.ly/5GqX" onclick="pageTracker._trackPageview('/exit/link/1118351619')" target="_blank"&gt;http://bit.ly/5GqX&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
14, 2009 02:37 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1118355376" class="msgtxt en"&gt;Official announcement jQuery 1.3 released &lt;a href="http://bit.ly/xBIP" onclick="pageTracker._trackPageview('/exit/link/1118355376')" target="_blank"&gt;http://bit.ly/xBIP&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
14, 2009 02:38 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1118393349" class="msgtxt en"&gt;New jQuery API Browser &lt;a href="http://api.jquery.com/" onclick="pageTracker._trackPageview('/exit/link/1118393349')" target="_blank"&gt;http://api.jquery.com/&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
14, 2009 02:55 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1119199552" class="msgtxt en"&gt;"Select Cuts Off Options In IE (Fix)" &lt;a href="http://bit.ly/13fJY" onclick="pageTracker._trackPageview('/exit/link/1119199552')" target="_blank"&gt;http://bit.ly/13fJY&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23css"&gt;#css&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23ie"&gt;#ie&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23hack"&gt;#hack&lt;/a&gt;&lt;/span&gt; Jan
14, 2009 08:31 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1119758383" class="msgtxt en"&gt;"Building a reusabe font size controller
interface using jQuery" &lt;a href="http://bit.ly/QHLS" onclick="pageTracker._trackPageview('/exit/link/1119758383')" target="_blank"&gt;http://bit.ly/QHLS&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
15, 2009 12:35 AM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1119792460" class="msgtxt en"&gt;"XML Parsing with jQuery" &lt;a href="http://bit.ly/1cynCX" onclick="pageTracker._trackPageview('/exit/link/1119792460')" target="_blank"&gt;http://bit.ly/1cynCX&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23xml"&gt;#xml&lt;/a&gt;&lt;/span&gt; Jan
15, 2009 12:53 AM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1123917142" class="msgtxt en"&gt;Unofficial jQuery 1.3 and VS 2008 Intellisense
vsdoc file &lt;a href="http://bit.ly/zOr7" onclick="pageTracker._trackPageview('/exit/link/1123917142')" target="_blank"&gt;http://bit.ly/zOr7&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23visualstudio"&gt;#visualstudio&lt;/a&gt;&lt;/span&gt; Jan
16, 2009 03:34 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1123982740" class="msgtxt en"&gt;"45+ New jQuery Techniques For Good
User Experience" &lt;a href="http://bit.ly/ati4" onclick="pageTracker._trackPageview('/exit/link/1123982740')" target="_blank"&gt;http://bit.ly/ati4&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jQuery"&gt;&lt;b&gt;#jQuery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
16, 2009 04:00 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1124210067" class="msgtxt en"&gt;"jQuery UI 1.6rc5 Compatible with jQuery
1.3" &lt;a href="http://bit.ly/o6A" onclick="pageTracker._trackPageview('/exit/link/1124210067')" target="_blank"&gt;http://bit.ly/o6A&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jqueryui"&gt;#jqueryui&lt;/a&gt;&lt;/span&gt; Jan
16, 2009 05:31 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1124219261" class="msgtxt en"&gt;Interesting feature of the jQuery API
Browser &lt;a href="http://bit.ly/24rC" onclick="pageTracker._trackPageview('/exit/link/1124219261')" target="_blank"&gt;http://bit.ly/24rC&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; view
only the new 1.3 features &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
16, 2009 05:35 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1124689797" class="msgtxt en"&gt;RT &lt;a href="http://twitter.com/jquery" onclick="pageTracker._trackPageview('/exit/to/jquery')" target="_blank"&gt;@jquery&lt;/a&gt;:
Adding the nofollow attribute to external links with jQuery &lt;a href="http://is.gd/g9Kr" onclick="pageTracker._trackPageview('/exit/link/1124689797')" target="_blank"&gt;http://is.gd/g9Kr&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
16, 2009 08:56 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1125089013" class="msgtxt en"&gt;FaceBox - Lightbox for everything and
images &lt;a href="http://famspam.com/facebox" onclick="pageTracker._trackPageview('/exit/link/1125089013')" target="_blank"&gt;http://famspam.com/facebox&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23plugin"&gt;#plugin&lt;/a&gt;&lt;/span&gt; Jan
17, 2009 12:13 AM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1125245137" class="msgtxt en"&gt;RT &lt;a href="http://twitter.com/rmurphey" onclick="pageTracker._trackPageview('/exit/to/rmurphey')" target="_blank"&gt;@rmurphey&lt;/a&gt;: &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; how
to fix fade glitch in ie using $.support instead of $.browser? &lt;a href="http://tinyurl.com/3gwlwy" onclick="pageTracker._trackPageview('/exit/link/1125245137')" target="_blank"&gt;http://tinyurl.com/3gwlwy&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; ...&lt;/span&gt; Jan
17, 2009 01:37 AM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1130776330" class="msgtxt en"&gt;"The Sexy Curls jQuery Plugin for a
nice page fold" &lt;a href="http://tinyurl.com/a46cpf" onclick="pageTracker._trackPageview('/exit/link/1130776330')" target="_blank"&gt;http://tinyurl.com/a46cpf&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23plugin"&gt;#plugin&lt;/a&gt;&lt;/span&gt; Jan
19, 2009 04:32 PM GMT&lt;/li&gt;
&lt;li&gt;
&lt;span id="msgtxt1131634274" class="msgtxt en"&gt;RT &lt;a href="http://twitter.com/mlane" onclick="pageTracker._trackPageview('/exit/to/mlane')" target="_blank"&gt;@mlane&lt;/a&gt;:
Build a Tabbed Box with CSS and jQuery - &lt;a href="http://bit.ly/13Zkz" onclick="pageTracker._trackPageview('/exit/link/1131634274')" target="_blank"&gt;http://bit.ly/13Zkz&lt;/a&gt;&lt;span class="expand"&gt;&lt;/span&gt; &lt;a href="http://search.twitter.com/search?q=%23tutorial"&gt;#tutorial&lt;/a&gt; &lt;a href="http://search.twitter.com/search?q=%23jquery"&gt;&lt;b&gt;#jquery&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; Jan
19, 2009 10:39 PM GMT&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="http://twitter.com/redwolves"&gt;Follow me&lt;/a&gt; to see what I'll twitter next
about jQuery.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=7781da1e-88f2-491f-9de2-77df2ed4a5a8" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,7781da1e-88f2-491f-9de2-77df2ed4a5a8.aspx</comments>
      <category>How-to;Interesting Links;jQuery;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=f3d4c531-a7d0-4d4c-b86a-dd38dcac02ae</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,f3d4c531-a7d0-4d4c-b86a-dd38dcac02ae.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,f3d4c531-a7d0-4d4c-b86a-dd38dcac02ae.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f3d4c531-a7d0-4d4c-b86a-dd38dcac02ae</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">Yesterday, we launched the project I've
been working on since April.  We've redesigned and upgraded St. John's Universities
web site <a href="http://www.stjohns.edu">http://www.stjohns.edu</a><br /><br />
I sent out a note to my fellow team members today thanking them for a job well done
I felt like sharing that note.<br /><br /><blockquote><i>Team,</i><div><i><br /></i></div><div><i>I just wanted to say thank you to everyone that put in long hours and maximum
effort to see st. john's redesign to go live.  It was a long and crater filled
road.  This is by far one of the biggest and longest projects I have ever worked
on and it has provided me with a lot of new knowledge, skills and experience. </i></div><div><i><br /></i></div><div><i>Some major accomplishments we were able to push through:</i></div><div><i><br /></i></div><div><i>Went live with 4 sites. <a href="http://www.stjohns.edu/">http://www.stjohns.edu</a>, <a href="http://digest.stjohns.edu/">http://digest.stjohns.edu</a>,
we upgraded their Intranet to the latest ASP.NET framework and ported over and upgraded
what is left of their old RedStormSports.com site that we are hosting as an archive.</i></div><div><i><br /></i></div><div><i>4GB of data or 40,000 content pages had to be ported and or massaged into
the new database schema.  News and Events had to be striped out of EDU, Intranet
and Digest and merged into one database.</i></div><div><i><br /></i></div><div><i>10GB of images, PDF's and Video's had to be brought over and inserted into
the 40,000 pages with their new designs.</i></div><div><i><br /></i></div><div><i>Set-up 3 physical servers with 10 virtual machines running 4 web servers,
2 file servers, 2 database servers, domain controller and a Web Trends server.  These
were coordinated with IT, set-up, tested, stressed and verified to work
before we put our code on and after.</i></div><div><i><br /></i></div><div><i>The set-up of 25 themes (for the various colleges, schools and departments)
that wanted to have their own unique presence in the site.</i></div><div><i><br /></i></div><div><i>The set-up of 683 templates which are variations of 64 unique templates which
display Home pages, landing pages, content, photo gallery, etc. in the <a href="http://www.stjohns.edu/">www.stjohns.edu</a> site
alone.  I haven't even done a count for the new News Engine Portal (digest).</i></div><div><i><br /></i></div><div><i>3 designers all working together and in parallel to provide a fresh look and
feel for every department, school and college.</i></div><div><i><br /></i></div><div><i>5 developers working together to port, build, upgrade and maintain the code
to make Brand Ensemble better for not only St. John's but for our future clients.
 Already [redacted], [redacted] and [redacted] are seeing some of these benefits.</i></div><div><i><br /></i></div><div><i>There are many accomplishments, too many to name or remember in one sitting. But
the most important accomplishment is that we came together as a team:</i></div><div><i><br /></i></div><div><i><b>Larry, Anne-Marie, Katje:</b> Thanks for being there for support and taking
the brunt of the clients calls.  I am thankful to have you in-between the
client and the rest of the team.</i></div><div><i><br /></i></div><div><i><b>Cheryl, Mary, Susan:</b> Thanks for coming up with a fresh web 2.0 look
and feel and something I am proud to show others and tell them I helped build.  I
hope the development team was able to bring your designs to light.</i></div><div><i><br /></i></div><div><i><b>Ernie, Travis, Ravi, Anna:</b>  Ernie, Travis you guys were always
there when I needed extra hands.  You were willing to jump in and help out when
needed even pulling a couple of all nighters with me and coming in on weekends.  I
am lucky to work with two talented programmers that I can go to when I am stuck on
a problem with the knowledge that one of you will know the answer and if not will
help me figure it out.  You guys push me to be a better programmer.</i></div><div><i><br /></i></div><div><i>Ravi, you really impressed me with your dedication and your SQL knowledge.
 Being able to assign you the data porting script and having to minimally oversee
you was a great burden off my shoulders.  You put in more off hour time then
anyone on the team to get the project accomplished.  I am still impressed at
what you were able to accomplish.</i></div><div><i><br /></i></div><div><i>Anna, you came into the project at just the right time.  Having you work
with us as an intern has been very refreshing.  Your ability to pick this project
up quickly and run with it was hugely beneficial.  I am amazed at how dedicated
you are at constantly nagging me for the next thing to work on and your ability to
take what you were assigned and complete it with high quality and completeness. You
are a huge asset to the team and I hope we are able to keep you around well after
your co-op has ended.  </i></div><div><i><br /></i></div><div><i><b>Chuck, Brad: </b>Chuck I think I've learned the most by working with you.
 You are very detailed oriented and thorough.  I've learned many new skills
in working on setting up the servers.  I feel more experienced in working with
SQL Server 2005 especially.  I also have a new appreciation for Virtual Environments
that we've begun to implement into our development environment.  You are also
a very dedicated person being available at all hours of the day and night.</i></div><div><i><br /></i></div><div><i>Brad,  you've helped me more then you know.  You have this uncanny
ability to keep everyone sane.  You are very supportive and willing to jump in
and get your hands dirty and help the team any way you can.  This is very much
appreciative and was in no way overlooked by your team members. </i></div><div><i><br /></i></div><div><i>In the end this project wasn't perfect.  There are many areas that could
use reflection upon to improve the process going forward.  We've already started
this reflection by starting the discussion of standardizing the design specs that
are created.   Even though we've gone live the job isn't done yet as we need
to polish and maintain.  
<br /></i></div><div><i><br /></i></div><div><i>Again, thank you all for your hard work and effort from one team member to
the team.</i></div></blockquote><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=f3d4c531-a7d0-4d4c-b86a-dd38dcac02ae" /></body>
      <title>Finally Launched www.stjohns.edu</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,f3d4c531-a7d0-4d4c-b86a-dd38dcac02ae.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/12/03/FinallyLaunchedWwwstjohnsedu.aspx</link>
      <pubDate>Wed, 03 Dec 2008 03:42:56 GMT</pubDate>
      <description>Yesterday, we launched the project I've been working on since April.&amp;nbsp; We've redesigned and upgraded St. John's Universities web site &lt;a href="http://www.stjohns.edu"&gt;http://www.stjohns.edu&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
I sent out a note to my fellow team members today thanking them for a job well done
I felt like sharing that note.&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;Team,&lt;/i&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;I just wanted to say thank you to everyone that put in long hours and maximum
effort to see st. john's redesign to go live. &amp;nbsp;It was a long and crater filled
road. &amp;nbsp;This is by far one of the biggest and longest projects I have ever worked
on and it has provided me with a lot of new knowledge, skills and experience.&amp;nbsp;&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;Some major accomplishments we were able to push through:&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;Went live with 4 sites. &lt;a href="http://www.stjohns.edu/"&gt;http://www.stjohns.edu&lt;/a&gt;, &lt;a href="http://digest.stjohns.edu/"&gt;http://digest.stjohns.edu&lt;/a&gt;,
we upgraded their Intranet to the latest ASP.NET framework and ported over and upgraded
what is left of their old RedStormSports.com site that we are hosting as an archive.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;4GB of data or 40,000 content pages had to be ported and or massaged into
the new database schema. &amp;nbsp;News and Events had to be striped out of EDU, Intranet
and Digest and merged into one database.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;10GB of images, PDF's and Video's had to be brought over and inserted into
the 40,000 pages with their new designs.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;Set-up 3 physical servers with 10 virtual machines running 4 web servers,
2 file servers, 2 database servers, domain controller and a Web Trends server. &amp;nbsp;These
were&amp;nbsp;coordinated&amp;nbsp;with IT, set-up, tested, stressed and verified to work
before we put our code on and after.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;The set-up of 25 themes (for the various colleges, schools and departments)
that wanted to have their own unique presence in the site.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;The set-up of 683 templates which are variations of 64 unique templates which
display Home pages, landing pages, content, photo gallery, etc. in the &lt;a href="http://www.stjohns.edu/"&gt;www.stjohns.edu&lt;/a&gt; site
alone. &amp;nbsp;I haven't even done a count for the new News Engine Portal (digest).&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;3 designers all working together and in parallel to provide a fresh look and
feel for every department, school and college.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;5 developers working together to port, build, upgrade and maintain the code
to make Brand Ensemble better for not only St. John's but for our future clients.
&amp;nbsp;Already [redacted], [redacted] and [redacted] are seeing some of these benefits.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;There are many accomplishments, too many to name or remember in one sitting.&amp;nbsp;But
the most important accomplishment is that we came together as a team:&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;&lt;b&gt;Larry, Anne-Marie, Katje:&lt;/b&gt; Thanks for being there for support and taking
the brunt of the clients calls. &amp;nbsp;I am thankful to have you&amp;nbsp;in-between&amp;nbsp;the
client and the rest of the team.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;&lt;b&gt;Cheryl, Mary, Susan:&lt;/b&gt; Thanks for coming up with a fresh web 2.0 look
and feel and something I am proud to show others and tell them I helped build. &amp;nbsp;I
hope the development team was able to bring your designs to light.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;&lt;b&gt;Ernie, Travis, Ravi, Anna:&lt;/b&gt; &amp;nbsp;Ernie, Travis you guys were always
there when I needed extra hands. &amp;nbsp;You were willing to jump in and help out when
needed even pulling a couple of all nighters with me and coming in on weekends. &amp;nbsp;I
am lucky to work with two talented programmers that I can go to when I am stuck on
a problem with the knowledge that one of you will know the answer and if not will
help me figure it out. &amp;nbsp;You guys push me to be a better programmer.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;Ravi, you really impressed me with your dedication and your SQL knowledge.
&amp;nbsp;Being able to assign you the data porting script and having to minimally oversee
you was a great burden off my shoulders. &amp;nbsp;You put in more off hour time then
anyone on the team to get the project accomplished. &amp;nbsp;I am still impressed at
what you were able to accomplish.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;Anna, you came into the project at just the right time. &amp;nbsp;Having you work
with us as an intern has been very refreshing. &amp;nbsp;Your ability to pick this project
up quickly and run with it was hugely beneficial. &amp;nbsp;I am amazed at how dedicated
you are at constantly nagging me for the next thing to work on and your ability to
take what you were assigned and complete it with high quality and completeness. You
are a huge asset to the team and I hope we are able to keep you around well after
your co-op has ended. &amp;nbsp;&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;&lt;b&gt;Chuck, Brad: &lt;/b&gt;Chuck I think I've learned the most by working with you.
&amp;nbsp;You are very detailed oriented and thorough. &amp;nbsp;I've learned many new skills
in working on setting up the servers. &amp;nbsp;I feel more experienced in working with
SQL Server 2005 especially. &amp;nbsp;I also have a new appreciation for Virtual Environments
that we've begun to implement into our development environment. &amp;nbsp;You are also
a very dedicated person being available at all hours of the day and night.&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;Brad, &amp;nbsp;you've helped me more then you know. &amp;nbsp;You have this uncanny
ability to keep everyone sane. &amp;nbsp;You are very supportive and willing to jump in
and get your hands dirty and help the team any way you can. &amp;nbsp;This is very much
appreciative and was in no way overlooked by your team members.&amp;nbsp;&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;In the end this project wasn't perfect. &amp;nbsp;There are many areas that could
use reflection upon to improve the process going forward. &amp;nbsp;We've already started
this reflection by starting the discussion of standardizing the design specs that
are created. &amp;nbsp; Even though we've gone live the job isn't done yet as we need
to polish and maintain.&amp;nbsp; 
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;
&lt;br&gt;
&lt;/i&gt;
&lt;/div&gt;
&lt;div&gt;&lt;i&gt;Again, thank you all for your hard work and effort from one team member to
the team.&lt;/i&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=f3d4c531-a7d0-4d4c-b86a-dd38dcac02ae" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,f3d4c531-a7d0-4d4c-b86a-dd38dcac02ae.aspx</comments>
      <category>BrandLogic;Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=246ccb05-874b-4395-99ca-0ddabba84e26</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,246ccb05-874b-4395-99ca-0ddabba84e26.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,246ccb05-874b-4395-99ca-0ddabba84e26.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=246ccb05-874b-4395-99ca-0ddabba84e26</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">If you open more than a few connections
to the same website using HttpWebRequest, then you'll likely get this misleading exception.
You can fix the problem by making sure you close your HTTP connections. 
<br /><br /><blockquote>HttpWebRequest r = WebRequest.Create("http://xyz");<br />
HttpWebResponse w = r.GetResponse()<br />
... // &lt;&lt; do stuff here<br />
w.Close(); // &lt;&lt; frees the connection<br /><br /></blockquote>This was causing some fun debugging issues for me. Just needed to close
my connection.<br /><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=246ccb05-874b-4395-99ca-0ddabba84e26" /></body>
      <title>System.Net.WebException: The operation has timed-out.</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,246ccb05-874b-4395-99ca-0ddabba84e26.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/11/19/SystemNetWebExceptionTheOperationHasTimedout.aspx</link>
      <pubDate>Wed, 19 Nov 2008 19:12:33 GMT</pubDate>
      <description>If
you open more than a few connections to the same website using
HttpWebRequest, then you'll likely get this misleading exception. You
can fix the problem by making sure you close your HTTP connections.
&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;HttpWebRequest r = WebRequest.Create("http://xyz");&lt;br&gt;
HttpWebResponse w = r.GetResponse()&lt;br&gt;
... // &amp;lt;&amp;lt; do stuff here&lt;br&gt;
w.Close(); // &amp;lt;&amp;lt; frees the connection&lt;br&gt;
&lt;br&gt;
&lt;/blockquote&gt;This was causing some fun debugging issues for me. Just needed to close
my connection.&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=246ccb05-874b-4395-99ca-0ddabba84e26" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,246ccb05-874b-4395-99ca-0ddabba84e26.aspx</comments>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=5e3ca8bd-40d2-4679-90a5-f10430763a57</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,5e3ca8bd-40d2-4679-90a5-f10430763a57.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,5e3ca8bd-40d2-4679-90a5-f10430763a57.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5e3ca8bd-40d2-4679-90a5-f10430763a57</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div>
          <div>
            <div>
    Database mirroring is a software solution, provided by SQL Server
2005, that gives you the ability to replicate your data in real-time.  Mirroring
allows for increased database availability and data protection and works at the database
level on databases that are set to full recovery mode.  You need two instances
ofSQL Server to set up mirroring because it maintains separate copies of data of a
single database across both servers. 
<br /><br />
    Let's look at a common scenario for database mirroring. Take a
company that has their customer database in a data center in New York City. 
They also have a backup data center in Houston. The database in NY is mirroring the
data to the database in Houston.  Let's say the data center in NY loses power
and they need to shut the server down.  With a "flip of a switch" they can move
the database to Houston and continue as if nothing happened.  When the data center
gets power again they can switch to the NY city database as soon as it's resynchronized.<br /><br /><b>Benefits</b><br /><br />
    One benefit of database mirroring is the increased data protection
of your data.  As each transaction is being written to your principle database
it is sending that exact transaction to the mirror database.  This provides complete
or almost complete (depending on which mode you set up; I'll get into this later)
data redundancy in real time.<br /><br />
    High-availability, this is a huge benefit for mission critical
data.  Hardware failures happen and network issues arise, with a "flip of a switch'
you can send the responsibility to the mirrored server to become the principled server
at any time.  You can also set up automatic failover with the addition of a witness
server to monitor the servers.<br /><br />
    Another benefit is that you have the flexibility to install updates
on your server without data disruption.  Because you can manually failover to
the mirror server at any time you can failover, install the updates and reboot if
necessary. When you are done you can then have the new principle server failover again
to restore the principle on to the primary server without any data loss or downtime
and upgrade the mirror server.<br /><br />
    Finally, you can set up mirroring to sync in synchronous or asynchronous
modes.  Synchronous or high-safety mode will write a transaction to the principle
database and send that exact transaction to the mirror and then wait for it to finish
committing that transaction before moving on. With high-safety you are assured that
the data that is on the principle is on the mirror at the exact same time. In that
you trade some latency waiting for the transaction for the true redundancy of the
data.  Automatic and manualfailovers, explained more below, require the use of
high-safety mode. 
<br /><br />
    Asynchronous or high-performance mode will send the stream of transactions
at the mirror server and the mirror will try to keep up.  With high-performance
there can be a gap where the mirror has a back log of transactions to complete that
the principle already has completed.  This gap can become pretty big with heavy
loads on the principle.  
<br /><br /><b>Requirements</b><br /><br />
    Database mirroring requires two servers. With SQL Server 2005 you
can set up mirroring with Standard or Enterprise editions.  It's very important
that both servers are running the same edition.  It is also recommended that
the hardware for both servers be near identical and have the ability to handle the
same load.<br /><br /><b>Setting up a Database Mirror</b><br /><br />
    Let's start with some simple preparation:<br /><br /></div>
            <ol>
              <li>
Make sure that you have the proper logins created on the mirror server. 
</li>
              <li>
Create the mirror database by restoring with NORECOVERY a recent full backup of the
principle database. The principle database must have been set-up with full recovery
when the backup was created.<br /></li>
              <li>
You must also restore all log backups since the full backup was made. Create a backup
of the transaction logs and restore on the mirror server.  You'll want to start
the mirror session as soon as you can after taking the log backup. 
</li>
            </ol>
            <br />
    Configuring Database mirroring:<br /><br /><ol><li>
Connect to the principle database. Select the database you wish to mirror. 
</li><li>
Right-click &gt; Tasks &gt; Mirror; this will bring you to the Mirror tab on the database
properties pop-up. 
</li><li>
Select the Configure Security button to configure the mirror session through the Configure
Database Mirroring Security Wizard (only in this wizard you can add or change the
witness server instance). 
</li><li>
Upon completion of the security wizard and you are still connected to the principle
server click on Start Mirroring.<br /></li></ol><br /><b>Client Connections (Connection Strings)</b><br /><br />
    I am going to assume that you as the reader already know how to
connect to a database in your application code in order to access it.  What I'll
cover here are the required key strings needed in the connection string to handle
connecting to both database servers in a mirror session depending on which one is
acting as the principle at the moment.<br /><br />
    Just as you would with a normal connection string you need to provide
a initial partner name.  This will be the principle server.  If you are
usingTCP/IP then enter in the IP, if you are using named pipes then enter in the name
of your server. Additionally, if your SQL Server is using a Instance Name then you
will need to add that as well (example: 10.10.2.1\InstanceName.  Now we need
to provide the failover partner.  This will be the mirror server.  Add this
information similarly as you would for the initial partner name.<br /><br /><span>    </span>The other item you will need to provide in your connection
string is the network attribute.  This will specify the network protocol to be
used and ensures that the proper network protocol persists between connections to
different partners. ForTCP/IP use the following: 
<br /><br /><div style="margin-left: 40px;"><i>Network=dbmssocn;</i><br /></div><br />
    Named Pipes use:<br /><br /><div style="margin-left: 40px;"><i>Network=dbnmpntw;</i><br /></div><br />
    Putting it all together in a sample connection string, you
can get <a href="http://msdn.microsoft.com/en-us/library/ms130822.aspx" id="uyt." target="_blank" title="more info on connection string keywords here">more
info on connection string keywords here</a>:<br /><i><br /></i><div style="margin-left: 40px;"><i>Data Source = 10.10.2.10/InstanceName; Failover partner = 10.10.2.11\InstanceName;
Initial Catalog = databaseName; User ID = sa; Password = 12345; Network = dbmssocn;</i><br /></div><br /><b>Failover</b><br /><br />
    There are three types of failover: automatic, manual and forced. 
Automatic requires a witness server and the mirror set-up in high-safety mode. 
Manual failover does not use a witness server and also requires the mirror set-up
to be in high-safety mode. Forced is usually used because the principle server has
been disconnected somehow.  Using forced service may result in data lose as all
transactions may not have made it to the mirrored server.  Forced service is
supported on high-availability and high-safety mirrored set-up modes.<br /><br /><i>Automatic Failover</i><br /><br />
    For automatic failover to occur the following conditions are required:<br /><br /><ul><li>
Mirroring sessions must be running high-safety mode and posses a witness server.<br /></li><li>
The mirror database must be synchronised. 
</li><li>
The principle server has lost communication with the witness and mirror servers but
the witness and mirror server are still online.  Note: If all servers lose connectivity
but then the witness and mirror server comes online automatic failover does not occur. 
</li><li>
The mirror server detects the loss of the principle server. 
</li></ul><br />
    How it works<br /><br /><ul><li>
If the principle server is still online and changes it's state to DISCONNECTED and
disconnects all clients. 
</li><li>
The mirror and witness server both register that the principle server is unavailable. 
</li><li>
The mirror server waits for all logs to be written from the redo queue before rolling
forward the mirror database. 
</li><li>
The former mirror server now moves online to be the principle. Recovery will roll
back any uncommitted transactions, locks isolate those transactions. 
</li><li>
When the former principle server comes back online and sees that the mirror has moved
to principle the former principle server will become the new mirror and start synchronising.
Once synchronising is complete failover is possible again. 
</li></ul><br /><i>Manual Failover</i><br /><br />
    With manual failover it's possible to failover to the mirror server
so that updates and upgrades can be performed on the principle server. Manual failover
requires the mirror set-up to be in high-safety mode (transaction safety set to FULL).
The partners need to be connected and synchronised.<br /><br />
    How it works:<br /><br /><ul><li>
Principle server disconnects, sends the last log message to the mirror and switches
to be the mirror server. 
</li><li>
The mirror server records the last log message as the failover log. 
</li><li>
The mirror server waits for all logs to be written from the redo queue before rolling
forward the mirror database. 
</li><li>
The mirror server becomes the principle server and the principle becomes the new mirror. 
</li><li>
The new mirror server quickly resynchronizes with the new principle server. Once complete
failover is possible again. 
</li></ul><br />
    Initiate Manual failover:<br /><br /></div>
          <ol>
            <li>
Connect to the principle server. Choose your database. 
</li>
            <li>
Right-click &gt; Tasks &gt; Mirror; this will bring you to the Mirror tab on the database
properties pop-up. 
</li>
            <li>
Click Failover.  Confirm that you want to failover to the mirror server. 
</li>
          </ol>
          <br />
Note: The client will need to see that the connection to the primary has failed before
it will try to connect to the failover partner.<br /><br /><i>Forced Service</i><br /><br />
    If the Principle server goes down due to hardware issues or is
unreachable you can use forced service to bring the mirror to principle state. 
Doing this may cause data loss as the mirror may not have received all of the transaction
logs from the principle. <a title="Read this Microsoft TechNet article for more information on forced service" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189977.aspx" id="wgqo">Read
this Microsoft TechNet article for more information on forced service</a>. 
<br /><br />
    Initiate Forced Service<br /><br /><ol><li>
Connect to the mirror server.</li><li>
Run the following T-SQL:<br />
ALTER DATABASE <i>&lt;database_name&gt;</i> SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS<br /><br />
The mirror will take over as principle and mirroring will be suspended.</li></ol><br /><b>Summary and Online Resources</b><br /><br />
    Database mirroring has many options and ways to be effective in
maintaining a high-availability database.  This article is my collected research
as I was learning how to set up mirroring. If you would like more information on setting
up database mirroring please look at the following resources:<br /><br /><ul><li><a title="Database Mirroring Overview" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189852.aspx" id="dx3l">Database
Mirroring Overview</a></li><li><a title="How to: Configure a Database Mirroring Session (SQL Server Management Studio)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms188712.aspx" id="srk9">How
to: Configure a Database Mirroring Session (SQL Server Management Studio)</a></li><li><a title="How to: Add or Replace a Database Mirroring Witness (SQL Server Management Studio)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms365603.aspx" id="z3z0">How
to: Add or Replace a Database Mirroring Witness (SQL Server Management Studio)</a></li><li><a title="Making the Initial Connection to a Database Mirroring Session" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms366348.aspx" id="ulmn">Making
the Initial Connection to a Database Mirroring Session</a></li><li><a title="Using Connection String Keywords with SQL Server Native Client" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms130822.aspx" id="gevf">Using
Connection String Keywords with SQL Server Native Client</a></li><li><a title="Role Switching During a Database Mirroring Session" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189850.aspx" id="c93v">Role
Switching During a Database Mirroring Session</a></li><li><a title="Automatic Failover" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189590.aspx" id="apze">Automatic
Failover</a> </li><li><a title="Manual Failover" target="_blank" href="http://technet.microsoft.com/en-us/library/ms191449.aspx" id="f-zj">Manual
Failover</a></li><li><a title="How to: Manually Fail Over a Database Mirroring Session (SQL Server Management Studio)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms186348.aspx" id="q50l">How
to: Manually Fail Over a Database Mirroring Session (SQL Server Management Studio)</a></li><li><a title="Forced Service (with Possible Data Loss)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189977.aspx" id="x.eu">Forced
Service (with Possible Data Loss)</a></li><li><a title="How to: Force Service in a Database Mirroring Session (Transact-SQL)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189270.aspx" id="n-8w">How
to: Force Service in a Database Mirroring Session (Transact-SQL)</a></li></ul></div>
        <br />
        <img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=5e3ca8bd-40d2-4679-90a5-f10430763a57" />
      </body>
      <title>Database Mirroring with SQL Server 2005</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,5e3ca8bd-40d2-4679-90a5-f10430763a57.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/10/13/DatabaseMirroringWithSQLServer2005.aspx</link>
      <pubDate>Mon, 13 Oct 2008 03:15:25 GMT</pubDate>
      <description>    
    
    
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Database mirroring is a software solution, provided by SQL Server
2005, that gives you the ability to replicate your data in real-time.&amp;nbsp; Mirroring
allows for increased database availability and data protection and works at the database
level on databases that are set to full recovery mode.&amp;nbsp; You need two instances
ofSQL Server to set up mirroring because it maintains separate copies of data of a
single database across both servers. 
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Let's look at a common scenario for database mirroring. Take a
company that has their customer database in a data center in New York City.&amp;nbsp;
They also have a backup data center in Houston. The database in NY is mirroring the
data to the database in Houston.&amp;nbsp; Let's say the data center in NY loses power
and they need to shut the server down.&amp;nbsp; With a "flip of a switch" they can move
the database to Houston and continue as if nothing happened.&amp;nbsp; When the data center
gets power again they can switch to the NY city database as soon as it's resynchronized.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Benefits&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;One benefit of database mirroring is the increased data protection
of your data.&amp;nbsp; As each transaction is being written to your principle database
it is sending that exact transaction to the mirror database.&amp;nbsp; This provides complete
or almost complete (depending on which mode you set up; I'll get into this later)
data redundancy in real time.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;High-availability, this is a huge benefit for mission critical
data.&amp;nbsp; Hardware failures happen and network issues arise, with a "flip of a switch'
you can send the responsibility to the mirrored server to become the principled server
at any time.&amp;nbsp; You can also set up automatic failover with the addition of a witness
server to monitor the servers.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Another benefit is that you have the flexibility to install updates
on your server without data disruption.&amp;nbsp; Because you can manually failover to
the mirror server at any time you can failover, install the updates and reboot if
necessary. When you are done you can then have the new principle server failover again
to restore the principle on to the primary server without any data loss or downtime
and upgrade the mirror server.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Finally, you can set up mirroring to sync in synchronous or asynchronous
modes.&amp;nbsp; Synchronous or high-safety mode will write a transaction to the principle
database and send that exact transaction to the mirror and then wait for it to finish
committing that transaction before moving on. With high-safety you are assured that
the data that is on the principle is on the mirror at the exact same time. In that
you trade some latency waiting for the transaction for the true redundancy of the
data.&amp;nbsp; Automatic and manualfailovers, explained more below, require the use of
high-safety mode. 
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;Asynchronous or high-performance mode will send the stream of transactions
at the mirror server and the mirror will try to keep up.&amp;nbsp; With high-performance
there can be a gap where the mirror has a back log of transactions to complete that
the principle already has completed.&amp;nbsp; This gap can become pretty big with heavy
loads on the principle.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Requirements&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Database mirroring requires two servers. With SQL Server 2005 you
can set up mirroring with Standard or Enterprise editions.&amp;nbsp; It's very important
that both servers are running the same edition.&amp;nbsp; It is also recommended that
the hardware for both servers be near identical and have the ability to handle the
same load.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Setting up a Database Mirror&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Let's start with some simple preparation:&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
Make sure that you have the proper logins created on the mirror server. 
&lt;/li&gt;
&lt;li&gt;
Create the mirror database by restoring with NORECOVERY a recent full backup of the
principle database. The principle database must have been set-up with full recovery
when the backup was created.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
You must also restore all log backups since the full backup was made. Create a backup
of the transaction logs and restore on the mirror server.&amp;nbsp; You'll want to start
the mirror session as soon as you can after taking the log backup. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Configuring Database mirroring:&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
Connect to the principle database. Select the database you wish to mirror. 
&lt;/li&gt;
&lt;li&gt;
Right-click &amp;gt; Tasks &amp;gt; Mirror; this will bring you to the Mirror tab on the database
properties pop-up. 
&lt;/li&gt;
&lt;li&gt;
Select the Configure Security button to configure the mirror session through the Configure
Database Mirroring Security Wizard (only in this wizard you can add or change the
witness server instance). 
&lt;/li&gt;
&lt;li&gt;
Upon completion of the security wizard and you are still connected to the principle
server click on Start Mirroring.&lt;br&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;
&lt;b&gt;Client Connections (Connection Strings)&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I am going to assume that you as the reader already know how to
connect to a database in your application code in order to access it.&amp;nbsp; What I'll
cover here are the required key strings needed in the connection string to handle
connecting to both database servers in a mirror session depending on which one is
acting as the principle at the moment.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Just as you would with a normal connection string you need to provide
a initial partner name.&amp;nbsp; This will be the principle server.&amp;nbsp; If you are
usingTCP/IP then enter in the IP, if you are using named pipes then enter in the name
of your server. Additionally, if your SQL Server is using a Instance Name then you
will need to add that as well (example: 10.10.2.1\InstanceName.&amp;nbsp; Now we need
to provide the failover partner.&amp;nbsp; This will be the mirror server.&amp;nbsp; Add this
information similarly as you would for the initial partner name.&lt;br&gt;
&lt;br&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;The other item you will need to provide in your connection
string is the network attribute.&amp;nbsp; This will specify the network protocol to be
used and ensures that the proper network protocol persists between connections to
different partners. ForTCP/IP use the following: 
&lt;br&gt;
&lt;br&gt;
&lt;div style="margin-left: 40px;"&gt;
&lt;i&gt;Network=dbmssocn;&lt;/i&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;Named Pipes use:&lt;br&gt;
&lt;br&gt;
&lt;div style="margin-left: 40px;"&gt;
&lt;i&gt;Network=dbnmpntw;&lt;/i&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Putting it all together in a sample connection string, you
can get &lt;a href="http://msdn.microsoft.com/en-us/library/ms130822.aspx" id="uyt." target="_blank" title="more info on connection string keywords here"&gt;more
info on connection string keywords here&lt;/a&gt;:&lt;br&gt;
&lt;i&gt;
&lt;br&gt;
&lt;/i&gt; 
&lt;div style="margin-left: 40px;"&gt;
&lt;i&gt;Data Source = 10.10.2.10/InstanceName; Failover partner = 10.10.2.11\InstanceName;
Initial Catalog = databaseName; User ID = sa; Password = 12345; Network = dbmssocn;&lt;/i&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;b&gt;Failover&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; There are three types of failover: automatic, manual and forced.&amp;nbsp;
Automatic requires a witness server and the mirror set-up in high-safety mode.&amp;nbsp;
Manual failover does not use a witness server and also requires the mirror set-up
to be in high-safety mode. Forced is usually used because the principle server has
been disconnected somehow.&amp;nbsp; Using forced service may result in data lose as all
transactions may not have made it to the mirrored server.&amp;nbsp; Forced service is
supported on high-availability and high-safety mirrored set-up modes.&lt;br&gt;
&lt;br&gt;
&lt;i&gt;Automatic Failover&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; For automatic failover to occur the following conditions are required:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Mirroring sessions must be running high-safety mode and posses a witness server.&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
The mirror database must be synchronised. 
&lt;/li&gt;
&lt;li&gt;
The principle server has lost communication with the witness and mirror servers but
the witness and mirror server are still online.&amp;nbsp; Note: If all servers lose connectivity
but then the witness and mirror server comes online automatic failover does not occur. 
&lt;/li&gt;
&lt;li&gt;
The mirror server detects the loss of the principle server. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; How it works&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
If the principle server is still online and changes it's state to DISCONNECTED and
disconnects all clients. 
&lt;/li&gt;
&lt;li&gt;
The mirror and witness server both register that the principle server is unavailable. 
&lt;/li&gt;
&lt;li&gt;
The mirror server waits for all logs to be written from the redo queue before rolling
forward the mirror database. 
&lt;/li&gt;
&lt;li&gt;
The former mirror server now moves online to be the principle. Recovery will roll
back any uncommitted transactions, locks isolate those transactions. 
&lt;/li&gt;
&lt;li&gt;
When the former principle server comes back online and sees that the mirror has moved
to principle the former principle server will become the new mirror and start synchronising.
Once synchronising is complete failover is possible again. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;i&gt;Manual Failover&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; With manual failover it's possible to failover to the mirror server
so that updates and upgrades can be performed on the principle server. Manual failover
requires the mirror set-up to be in high-safety mode (transaction safety set to FULL).
The partners need to be connected and synchronised.&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; How it works:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Principle server disconnects, sends the last log message to the mirror and switches
to be the mirror server. 
&lt;/li&gt;
&lt;li&gt;
The mirror server records the last log message as the failover log. 
&lt;/li&gt;
&lt;li&gt;
The mirror server waits for all logs to be written from the redo queue before rolling
forward the mirror database. 
&lt;/li&gt;
&lt;li&gt;
The mirror server becomes the principle server and the principle becomes the new mirror. 
&lt;/li&gt;
&lt;li&gt;
The new mirror server quickly resynchronizes with the new principle server. Once complete
failover is possible again. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Initiate Manual failover:&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
Connect to the principle server. Choose your database. 
&lt;/li&gt;
&lt;li&gt;
Right-click &amp;gt; Tasks &amp;gt; Mirror; this will bring you to the Mirror tab on the database
properties pop-up. 
&lt;/li&gt;
&lt;li&gt;
Click Failover.&amp;nbsp; Confirm that you want to failover to the mirror server. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;
Note: The client will need to see that the connection to the primary has failed before
it will try to connect to the failover partner.&lt;br&gt;
&lt;br&gt;
&lt;i&gt;Forced Service&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; If the Principle server goes down due to hardware issues or is
unreachable you can use forced service to bring the mirror to principle state.&amp;nbsp;
Doing this may cause data loss as the mirror may not have received all of the transaction
logs from the principle. &lt;a title="Read this Microsoft TechNet article for more information on forced service" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189977.aspx" id="wgqo"&gt;Read
this Microsoft TechNet article for more information on forced service&lt;/a&gt;. 
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;Initiate Forced Service&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
Connect to the mirror server.&lt;/li&gt;
&lt;li&gt;
Run the following T-SQL:&lt;br&gt;
ALTER DATABASE &lt;i&gt;&amp;lt;database_name&amp;gt;&lt;/i&gt; SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS&lt;br&gt;
&lt;br&gt;
The mirror will take over as principle and mirroring will be suspended.&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;
&lt;b&gt;Summary and Online Resources&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Database mirroring has many options and ways to be effective in
maintaining a high-availability database.&amp;nbsp; This article is my collected research
as I was learning how to set up mirroring. If you would like more information on setting
up database mirroring please look at the following resources:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a title="Database Mirroring Overview" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189852.aspx" id="dx3l"&gt;Database
Mirroring Overview&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a title="How to: Configure a Database Mirroring Session (SQL Server Management Studio)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms188712.aspx" id="srk9"&gt;How
to: Configure a Database Mirroring Session (SQL Server Management Studio)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a title="How to: Add or Replace a Database Mirroring Witness (SQL Server Management Studio)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms365603.aspx" id="z3z0"&gt;How
to: Add or Replace a Database Mirroring Witness (SQL Server Management Studio)&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a title="Making the Initial Connection to a Database Mirroring Session" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms366348.aspx" id="ulmn"&gt;Making
the Initial Connection to a Database Mirroring Session&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a title="Using Connection String Keywords with SQL Server Native Client" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms130822.aspx" id="gevf"&gt;Using
Connection String Keywords with SQL Server Native Client&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a title="Role Switching During a Database Mirroring Session" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189850.aspx" id="c93v"&gt;Role
Switching During a Database Mirroring Session&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a title="Automatic Failover" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189590.aspx" id="apze"&gt;Automatic
Failover&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;
&lt;a title="Manual Failover" target="_blank" href="http://technet.microsoft.com/en-us/library/ms191449.aspx" id="f-zj"&gt;Manual
Failover&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a title="How to: Manually Fail Over a Database Mirroring Session (SQL Server Management Studio)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms186348.aspx" id="q50l"&gt;How
to: Manually Fail Over a Database Mirroring Session (SQL Server Management Studio)&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a title="Forced Service (with Possible Data Loss)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189977.aspx" id="x.eu"&gt;Forced
Service (with Possible Data Loss)&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a title="How to: Force Service in a Database Mirroring Session (Transact-SQL)" target="_blank" href="http://technet.microsoft.com/en-us/library/ms189270.aspx" id="n-8w"&gt;How
to: Force Service in a Database Mirroring Session (Transact-SQL)&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=5e3ca8bd-40d2-4679-90a5-f10430763a57" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,5e3ca8bd-40d2-4679-90a5-f10430763a57.aspx</comments>
      <category>How-to;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=1d6a02d9-22d2-4c29-aa18-f3654ab6fc65</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,1d6a02d9-22d2-4c29-aa18-f3654ab6fc65.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,1d6a02d9-22d2-4c29-aa18-f3654ab6fc65.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1d6a02d9-22d2-4c29-aa18-f3654ab6fc65</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Usually, whenever I restore a backup of my database in SQL Server I am presented with
the following error:
</p>
        <blockquote>
          <p>
            <font size="2" color="#ff0000" face="Courier New">Msg 3101, Level 16, State 1, Line
1<br />
Exclusive access could not be obtained because the database is in use.<br />
Msg 3013, Level 16, State 1, Line 1<br />
RESTORE DATABASE is terminating abnormally.</font>
            <br />
          </p>
        </blockquote>
        <p>
Usually, to get around this I just restart the server. This was fine when we were
developing on our local server instance on our development machines. But we have a
few programmers that need to make changes to the database and the logistics of having
everyone script their changes and drop them into Subversion was becoming a nightmare.
Regardless our simple solution was to put it on a shared server in the office and
backup the server occasionally, in case someone screwed up the data. 
<br /></p>
        <p>
Well I screwed up some data and needed to restore. Unfortunately, I have another co-worker
in the office who is working on another project and is using the same database server
(different database) for development. To be nice I'd want to restore without restarting
the SQL Server and possibly disrupting his work.
</p>
        <p>
What I need to do is find all the connection processes to the database and kill them:
</p>
        <blockquote>
          <p>
            <font color="#0000ff">Use Master</font>
            <br />
Go<br /><br /><font color="#0000ff">Declare</font> @dbname <font color="#0000ff">sysname</font><br /><br /><font color="#0000ff">Set</font> @dbname = <font color="#ff0000">'databaseName'</font><br /><br /><font color="#0000ff">Declare</font> @spid <font color="#0000ff">int</font><br /><font color="#0000ff">Select</font> @spid = <font color="#ee82ee">min</font>(spid) <font color="#0000ff">from</font> master.dbo.sysprocesses<br /><font color="#0000ff">where dbid</font> = <font color="#ee82ee">db_id</font>(@dbname)<br /><font color="#0000ff">While</font> @spid <font color="#a9a9a9">Is Not Null</font><br /><font color="#0000ff">Begin</font><br />
        <font color="#0000ff">Execute</font> (<font color="#ff0000">'Kill
'</font> + @spid)<br />
        <font color="#0000ff">Select</font> @spid
= <font color="#ee82ee">min</font>(spid) <font color="#0000ff">from</font> master.dbo.sysprocesses<br />
        <font color="#0000ff">where</font> dbid
= <font color="#ee82ee">db_id</font>(@dbname) and spid &gt; @spid<br /><font color="#0000ff">End</font></p>
        </blockquote>
        <p>
Now I can immediately restore:
</p>
        <blockquote>
          <p>
            <font color="#0000ff">USE Master</font>
            <br />
GO<br /><font color="#0000ff">RESTORE DATABASE</font> [databaseName] 
<br /><font color="#0000ff">FROM  DISK</font> = N<font color="#008000"><font color="#ff0000">'physical
disk path to the backup file.bak'</font> --example path: c:\program files\microsoft
sql server\mssql\backup\databaseName.bak</font><br /><font color="#0000ff">WITH  FILE</font> = 1,  <font color="#0000ff">NOUNLOAD</font>,  <font color="#ee82ee">REPLACE</font>,  <font color="#0000ff">STATS</font> =
10<br />
GO
</p>
        </blockquote>
        <p>
This method works best in a development environment with minimum developer connections.
In production/staging environments refer to your database administrator for best practices.
</p>
        <p>
          <br />
        </p>
        <p>
          <b>Related Links</b>
        </p>
        <p>
          <a href="http://stackoverflow.com/questions/183686/how-to-gain-exclusive-access-to-sql-server-2005-db-to-restore">How
to Gain Exclusive Access to SQL Server 2005 DB to restore?</a>
          <br />
        </p>
        <p>
        </p>
        <img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=1d6a02d9-22d2-4c29-aa18-f3654ab6fc65" />
      </body>
      <title>Gaining Exclusive Access to database in SQL Server 2005 via T-SQL</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,1d6a02d9-22d2-4c29-aa18-f3654ab6fc65.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/10/08/GainingExclusiveAccessToDatabaseInSQLServer2005ViaTSQL.aspx</link>
      <pubDate>Wed, 08 Oct 2008 18:01:06 GMT</pubDate>
      <description>&lt;p&gt;
Usually, whenever I restore a backup of my database in SQL Server I am presented with
the following error:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
&lt;font size="2" color="#ff0000" face="Courier New"&gt;Msg 3101, Level 16, State 1, Line
1&lt;br&gt;
Exclusive access could not be obtained because the database is in use.&lt;br&gt;
Msg 3013, Level 16, State 1, Line 1&lt;br&gt;
RESTORE DATABASE is terminating abnormally.&lt;/font&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Usually, to get around this I just restart the server. This was fine when we were
developing on our local server instance on our development machines. But we have a
few programmers that need to make changes to the database and the logistics of having
everyone script their changes and drop them into Subversion was becoming a nightmare.
Regardless our simple solution was to put it on a shared server in the office and
backup the server occasionally, in case someone screwed up the data. 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Well I screwed up some data and needed to restore. Unfortunately, I have another co-worker
in the office who is working on another project and is using the same database server
(different database) for development. To be nice I'd want to restore without restarting
the SQL Server and possibly disrupting his work.
&lt;/p&gt;
&lt;p&gt;
What I need to do is find all the connection processes to the database and kill them:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
&lt;font color="#0000ff"&gt;Use Master&lt;/font&gt;
&lt;br&gt;
Go&lt;br&gt;
&lt;br&gt;
&lt;font color="#0000ff"&gt;Declare&lt;/font&gt; @dbname &lt;font color="#0000ff"&gt;sysname&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font color="#0000ff"&gt;Set&lt;/font&gt; @dbname = &lt;font color="#ff0000"&gt;'databaseName'&lt;/font&gt;
&lt;br&gt;
&lt;br&gt;
&lt;font color="#0000ff"&gt;Declare&lt;/font&gt; @spid &lt;font color="#0000ff"&gt;int&lt;/font&gt;
&lt;br&gt;
&lt;font color="#0000ff"&gt;Select&lt;/font&gt; @spid = &lt;font color="#ee82ee"&gt;min&lt;/font&gt;(spid) &lt;font color="#0000ff"&gt;from&lt;/font&gt; master.dbo.sysprocesses&lt;br&gt;
&lt;font color="#0000ff"&gt;where dbid&lt;/font&gt; = &lt;font color="#ee82ee"&gt;db_id&lt;/font&gt;(@dbname)&lt;br&gt;
&lt;font color="#0000ff"&gt;While&lt;/font&gt; @spid &lt;font color="#a9a9a9"&gt;Is Not Null&lt;/font&gt;
&lt;br&gt;
&lt;font color="#0000ff"&gt;Begin&lt;/font&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;Execute&lt;/font&gt; (&lt;font color="#ff0000"&gt;'Kill
'&lt;/font&gt; + @spid)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;Select&lt;/font&gt; @spid
= &lt;font color="#ee82ee"&gt;min&lt;/font&gt;(spid) &lt;font color="#0000ff"&gt;from&lt;/font&gt; master.dbo.sysprocesses&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000ff"&gt;where&lt;/font&gt; dbid
= &lt;font color="#ee82ee"&gt;db_id&lt;/font&gt;(@dbname) and spid &amp;gt; @spid&lt;br&gt;
&lt;font color="#0000ff"&gt;End&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Now I can immediately restore:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;
&lt;font color="#0000ff"&gt;USE Master&lt;/font&gt;
&lt;br&gt;
GO&lt;br&gt;
&lt;font color="#0000ff"&gt;RESTORE DATABASE&lt;/font&gt; [databaseName] 
&lt;br&gt;
&lt;font color="#0000ff"&gt;FROM&amp;nbsp; DISK&lt;/font&gt; = N&lt;font color="#008000"&gt;&lt;font color="#ff0000"&gt;'physical
disk path to the backup file.bak'&lt;/font&gt; --example path: c:\program files\microsoft
sql server\mssql\backup\databaseName.bak&lt;/font&gt;
&lt;br&gt;
&lt;font color="#0000ff"&gt;WITH&amp;nbsp; FILE&lt;/font&gt; = 1,&amp;nbsp; &lt;font color="#0000ff"&gt;NOUNLOAD&lt;/font&gt;,&amp;nbsp; &lt;font color="#ee82ee"&gt;REPLACE&lt;/font&gt;,&amp;nbsp; &lt;font color="#0000ff"&gt;STATS&lt;/font&gt; =
10&lt;br&gt;
GO
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
This method works best in a development environment with minimum developer connections.
In production/staging environments refer to your database administrator for best practices.
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Related Links&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://stackoverflow.com/questions/183686/how-to-gain-exclusive-access-to-sql-server-2005-db-to-restore"&gt;How
to Gain Exclusive Access to SQL Server 2005 DB to restore?&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=1d6a02d9-22d2-4c29-aa18-f3654ab6fc65" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,1d6a02d9-22d2-4c29-aa18-f3654ab6fc65.aspx</comments>
      <category>How-to;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=57cc2920-34e1-48f6-94e0-e0b111bc614b</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,57cc2920-34e1-48f6-94e0-e0b111bc614b.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,57cc2920-34e1-48f6-94e0-e0b111bc614b.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=57cc2920-34e1-48f6-94e0-e0b111bc614b</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">I've had my head down and focused on this
project at work since April/May.  I've been working long hours and most weekends
throughout the summer.  This project has had it's ups and downs.<br /><br />
For instance, I am managing three other programmers right now who are all smarter
then me and can focus on one thing at a time and crank out great code.  I am
also coordinating with two other designers to put together the final details that
are needed in the design and to be able to deliver photoshop templates for the client
to use to make content assets in the future.  Finally, I am working with a outside
vendor to coordinate the set up of the hardware the virtual server environment and
the installed code base and database for the four sites we are migrating.  Again,
people that are way smarter then I to handle these tasks are making these taks more
manageable.<br /><br />
That is the ups.  The downs?  Well I hit burn out back in July.  I
am on auto-pilot here. It's taking me a little longer to make decisions for people
and don't even get me started on how long it takes me to program a simple template
or control.  Again, one of the major ups is that I have three great programmers
that can focus.  Right now my mind is mush.<br /><br />
I feel that the project is coming together nicely.  We need to have the programming
part done by October 1st and have it installed on the hardware then.  Right now
it's worrying about the details, testing the data port from the old schema and 2000
database to the new schema and the 2005 database, again another smart programmer worked
part-time throughout the summer to build us the most complex SQL package I every seen
to be able to port the data to our new database.<br /><br />
As we are getting towards the end I keep thinking about the vacation time I haven't
used yet.  I can't wait to be able to take them.  I am also excited to start
another project.  It's been so long since I last worked on another project it'll
be nice.<br /><br />
Any tips on how to survive long projects that are actually short on deadline deliverables? 
What about burn-out?  Any tips for pushing through till a vacation can be had?<br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=57cc2920-34e1-48f6-94e0-e0b111bc614b" /></body>
      <title>Light at the End of the Tunnel</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,57cc2920-34e1-48f6-94e0-e0b111bc614b.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/09/26/LightAtTheEndOfTheTunnel.aspx</link>
      <pubDate>Fri, 26 Sep 2008 02:38:56 GMT</pubDate>
      <description>I've had my head down and focused on this project at work since April/May.&amp;nbsp; I've been working long hours and most weekends throughout the summer.&amp;nbsp; This project has had it's ups and downs.&lt;br&gt;
&lt;br&gt;
For instance, I am managing three other programmers right now who are all smarter
then me and can focus on one thing at a time and crank out great code.&amp;nbsp; I am
also coordinating with two other designers to put together the final details that
are needed in the design and to be able to deliver photoshop templates for the client
to use to make content assets in the future.&amp;nbsp; Finally, I am working with a outside
vendor to coordinate the set up of the hardware the virtual server environment and
the installed code base and database for the four sites we are migrating.&amp;nbsp; Again,
people that are way smarter then I to handle these tasks are making these taks more
manageable.&lt;br&gt;
&lt;br&gt;
That is the ups.&amp;nbsp; The downs?&amp;nbsp; Well I hit burn out back in July.&amp;nbsp; I
am on auto-pilot here. It's taking me a little longer to make decisions for people
and don't even get me started on how long it takes me to program a simple template
or control.&amp;nbsp; Again, one of the major ups is that I have three great programmers
that can focus.&amp;nbsp; Right now my mind is mush.&lt;br&gt;
&lt;br&gt;
I feel that the project is coming together nicely.&amp;nbsp; We need to have the programming
part done by October 1st and have it installed on the hardware then.&amp;nbsp; Right now
it's worrying about the details, testing the data port from the old schema and 2000
database to the new schema and the 2005 database, again another smart programmer worked
part-time throughout the summer to build us the most complex SQL package I every seen
to be able to port the data to our new database.&lt;br&gt;
&lt;br&gt;
As we are getting towards the end I keep thinking about the vacation time I haven't
used yet.&amp;nbsp; I can't wait to be able to take them.&amp;nbsp; I am also excited to start
another project.&amp;nbsp; It's been so long since I last worked on another project it'll
be nice.&lt;br&gt;
&lt;br&gt;
Any tips on how to survive long projects that are actually short on deadline deliverables?&amp;nbsp;
What about burn-out?&amp;nbsp; Any tips for pushing through till a vacation can be had?&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=57cc2920-34e1-48f6-94e0-e0b111bc614b" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,57cc2920-34e1-48f6-94e0-e0b111bc614b.aspx</comments>
      <category>BrandLogic;Mussings;Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=04326ce0-3d4c-4bcd-9d9b-a0f8564ad7b6</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,04326ce0-3d4c-4bcd-9d9b-a0f8564ad7b6.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,04326ce0-3d4c-4bcd-9d9b-a0f8564ad7b6.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=04326ce0-3d4c-4bcd-9d9b-a0f8564ad7b6</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <b>UPDATE:</b> Simple Shadow has been set
up on Google Code. <a href="http://code.google.com/p/jquerysimpleshadow/">You can
get the latest here</a>.<br /><br />
We've been researching and trying out javascript shadow solutions for quite sometime.
Our designers are really liking to add subtle dropshadows to elements in their designs. <a href="http://ui.jquery.com/">jQuery
UI</a> had a shadow plugin and it looked promising. I even submitted some bug reports
to help it along. But it's been officially removed from the project for the time being.<br /><br />
We've been using <a href="http://www.ruzee.com/blog/shadedborder/">RUZEE.shadedborder</a> to
handle our shadow needs. It works but adds a lot of undesired div tags to make the
gradient color. But the biggest problem was it was really slow and caused IE to crash
when I had six items on a page RUZZEEIFIED.<br /><br />
I finally gave in and decided to write my own shadow plugin to handle my specific
needs which were to display a shadow of 10px width on the right and bottom sides.
I needed it to be easy as well so it uses graphics to accomplish the shadow.<br /><br />
This will work on any element that has a width and height specified in css. It requires
three image files that are included in the complete zip file below. <a href="http://ralphwhitbeck.com/simpleshadow/test-doc.html">See
demo</a>.<br /><br />
Here is the code to make the shadow:<br /><br /><code class="javascript">$(document).ready(function() { $("div").shadow(); });</code><br /><b><br />
Download</b><br /><br /><b>UPDATE:</b> Simple Shadow has been set up on Google Code. <a href="http://code.google.com/p/jquerysimpleshadow/">You
can get the latest here</a>.<br /><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=04326ce0-3d4c-4bcd-9d9b-a0f8564ad7b6" /></body>
      <title>jQuery Plugin - Simple Shadow</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,04326ce0-3d4c-4bcd-9d9b-a0f8564ad7b6.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/08/27/jQueryPluginSimpleShadow.aspx</link>
      <pubDate>Wed, 27 Aug 2008 02:08:01 GMT</pubDate>
      <description>&lt;b&gt;UPDATE:&lt;/b&gt; Simple Shadow has been set up on Google Code. &lt;a href="http://code.google.com/p/jquerysimpleshadow/"&gt;You
can get the latest here&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
We've been researching and trying out javascript shadow solutions for quite sometime.
Our designers are really liking to add subtle dropshadows to elements in their designs. &lt;a href="http://ui.jquery.com/"&gt;jQuery
UI&lt;/a&gt; had a shadow plugin and it looked promising. I even submitted some bug reports
to help it along. But it's been officially removed from the project for the time being.&lt;br&gt;
&lt;br&gt;
We've been using &lt;a href="http://www.ruzee.com/blog/shadedborder/"&gt;RUZEE.shadedborder&lt;/a&gt; to
handle our shadow needs. It works but adds a lot of undesired div tags to make the
gradient color. But the biggest problem was it was really slow and caused IE to crash
when I had six items on a page RUZZEEIFIED.&lt;br&gt;
&lt;br&gt;
I finally gave in and decided to write my own shadow plugin to handle my specific
needs which were to display a shadow of 10px width on the right and bottom sides.
I needed it to be easy as well so it uses graphics to accomplish the shadow.&lt;br&gt;
&lt;br&gt;
This will work on any element that has a width and height specified in css. It requires
three image files that are included in the complete zip file below. &lt;a href="http://ralphwhitbeck.com/simpleshadow/test-doc.html"&gt;See
demo&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Here is the code to make the shadow:&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt;$(document).ready(function() { $("div").shadow(); });&lt;/code&gt;
&lt;br&gt;
&lt;b&gt;
&lt;br&gt;
Download&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;UPDATE:&lt;/b&gt; Simple Shadow has been set up on Google Code. &lt;a href="http://code.google.com/p/jquerysimpleshadow/"&gt;You
can get the latest here&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=04326ce0-3d4c-4bcd-9d9b-a0f8564ad7b6" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,04326ce0-3d4c-4bcd-9d9b-a0f8564ad7b6.aspx</comments>
      <category>How-to;Programming;Simple Shadow;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=bb29c07c-03cf-42c9-9e2c-d4280d471c3b</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,bb29c07c-03cf-42c9-9e2c-d4280d471c3b.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,bb29c07c-03cf-42c9-9e2c-d4280d471c3b.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bb29c07c-03cf-42c9-9e2c-d4280d471c3b</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">I figured out how to easily add a separator
to a inline displayed unordered list of links using jQuery and so I'd thought I share.<br /><br />
So for a list like so:<br /><br /><code class="html"></code><ul class="subnavigation"><br />
    
<li><a href="http://http://ralphwhitbeck.com" ralph="" whitbeck="">Ralph Whitbeck</a></li><br />
    
<li><a href="http://jquery.com">jQuery</a></li><br />
    
<li><a href="http://brandensemble.com">BrandEnsemble</a></li><br /></ul><br /><br />
I wanted it to display like this:<br /><br /><a href="http://ralphwhitbeck.com">Ralph Whitbeck</a> | <a href="http://jquery.com">jQuery</a> | <a href="http://brandensemble.com">BrandEnsemble</a><br /><br />
Notice that the separator (|) is only between the links and not at either the beginning
or end.  I should also note that when I was rendering the list it was coming
from a dynamic source so I didn't have a set list to work from.<br /><br />
I wrote this jQuery:<br /><br /><code class="javascript">$(document).ready(function(){<br />
   $(".subnavigation li:lt(" + ($(".subnavigation li").length - 1) + ")").append("
| "); 
<br />
});</code><br /><br />
So basically I used the <a href="http://docs.jquery.com/Selectors/lt#index">:lt(index)</a> selector
to match against all the matches that were less then the index value.  I do that
by figuring out the <a href="http://docs.jquery.com/Core/length">length</a> of how
many are selected and subtracting one.  Then finally I <a href="http://docs.jquery.com/Manipulation/append#content">append</a> my
selector to all of my matches.<br /><br /><br /><b>Update: </b><a href="http://ejohn.org/">John Resig</a> (creator of jQuery) chimes
in with an easier way to do the same thing in the comments.<br /><br /><code class="javascript">$(document).ready(function(){<br />
   $(".subnavigation li:not(:last-child)").append(" | "); 
<br />
});</code><br /><p>
This works by selecting all the li's except the last child (or the last li) in the
container. This will work with multiple containers on a page if there are more then
one.  Thanks John for the tip.<br /></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=bb29c07c-03cf-42c9-9e2c-d4280d471c3b" /></body>
      <title>Adding link separators to a unordered list using jQuery</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,bb29c07c-03cf-42c9-9e2c-d4280d471c3b.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/07/15/AddingLinkSeparatorsToAUnorderedListUsingJQuery.aspx</link>
      <pubDate>Tue, 15 Jul 2008 03:24:16 GMT</pubDate>
      <description>I figured out how to easily add a separator to a inline displayed unordered list of links using jQuery and so I'd thought I share.&lt;br&gt;
&lt;br&gt;
So for a list like so:&lt;br&gt;
&lt;br&gt;
&lt;code class="html"&gt;&lt;/code&gt;
&lt;ul class="subnavigation"&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;li&gt;
&lt;a href="http://http://ralphwhitbeck.com" ralph="" whitbeck=""&gt;Ralph Whitbeck&lt;/a&gt;
&lt;/li&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;li&gt;
&lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt;
&lt;/li&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;li&gt;
&lt;a href="http://brandensemble.com"&gt;BrandEnsemble&lt;/a&gt;
&lt;/li&gt;
&lt;br&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;br&gt;
I wanted it to display like this:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://ralphwhitbeck.com"&gt;Ralph Whitbeck&lt;/a&gt; | &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt; | &lt;a href="http://brandensemble.com"&gt;BrandEnsemble&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Notice that the separator (|) is only between the links and not at either the beginning
or end.&amp;nbsp; I should also note that when I was rendering the list it was coming
from a dynamic source so I didn't have a set list to work from.&lt;br&gt;
&lt;br&gt;
I wrote this jQuery:&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt;$(document).ready(function(){&lt;br&gt;
&amp;nbsp;&amp;nbsp; $(".subnavigation li:lt(" + ($(".subnavigation li").length - 1) + ")").append("
| "); 
&lt;br&gt;
});&lt;/code&gt;
&lt;br&gt;
&lt;br&gt;
So basically I used the &lt;a href="http://docs.jquery.com/Selectors/lt#index"&gt;:lt(index)&lt;/a&gt; selector
to match against all the matches that were less then the index value.&amp;nbsp; I do that
by figuring out the &lt;a href="http://docs.jquery.com/Core/length"&gt;length&lt;/a&gt; of how
many are selected and subtracting one.&amp;nbsp; Then finally I &lt;a href="http://docs.jquery.com/Manipulation/append#content"&gt;append&lt;/a&gt; my
selector to all of my matches.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Update: &lt;/b&gt;&lt;a href="http://ejohn.org/"&gt;John Resig&lt;/a&gt; (creator of jQuery) chimes
in with an easier way to do the same thing in the comments.&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt;$(document).ready(function(){&lt;br&gt;
&amp;nbsp;&amp;nbsp; $(".subnavigation li:not(:last-child)").append(" | "); 
&lt;br&gt;
});&lt;/code&gt;
&lt;br&gt;
&lt;p&gt;
This works by selecting all the li's except the last child (or the last li) in the
container. This will work with multiple containers on a page if there are more then
one.&amp;nbsp; Thanks John for the tip.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=bb29c07c-03cf-42c9-9e2c-d4280d471c3b" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,bb29c07c-03cf-42c9-9e2c-d4280d471c3b.aspx</comments>
      <category>How-to;jQuery;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=c3d98d8e-2984-4bb3-a52c-64e325e803b9</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,c3d98d8e-2984-4bb3-a52c-64e325e803b9.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,c3d98d8e-2984-4bb3-a52c-64e325e803b9.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c3d98d8e-2984-4bb3-a52c-64e325e803b9</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>How to target="_blank" a link while keeping it XHTML compliant with jQuery</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,c3d98d8e-2984-4bb3-a52c-64e325e803b9.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/06/29/HowToTargetblankALinkWhileKeepingItXHTMLCompliantWithJQuery.aspx</link>
      <pubDate>Sun, 29 Jun 2008 02:25:09 GMT</pubDate>
      <description>I had to make a bunch of links for a site I am working on for a client
at work open in a new window.  It's not ideal but it was what was
requested.&lt;br&gt;
&lt;br&gt;
So I set up my links like such:&lt;br&gt;
&lt;br&gt;
&lt;code class="html"&gt;&lt;a href="http://ralphwhitbeck.com" target="_blank"&gt;http://ralphwhitbeck.com&lt;/a&gt;&lt;/code&gt;
&lt;p&gt;
I run my page though a HTML validator and am quickly reminded that the target attibute
is not allowed in the XHTML 1.0 Strict standard. I do a quick Google Search and the
first couple of results bring back the following function to make it compliant:
&lt;/p&gt;
&lt;p&gt;
&lt;code class="javascript"&gt;function externalLinks() { 
&lt;br&gt;
if (!document.getElementsByTagName) return; 
&lt;br&gt;
var anchors = document.getElementsByTagName("a"); 
&lt;br&gt;&lt;anchors.length; i++) { &lt;br&gt;
for (var i=0; i var anchor = anchors[i]; 
&lt;br&gt;
if (anchor.getAttribute("href") &amp;&amp; 
&lt;br&gt;
anchor.getAttribute("rel") == "external") 
&lt;br&gt;
anchor.target = "_blank"; 
&lt;br&gt;
} 
&lt;br&gt;
} 
&lt;br&gt;
window.onload = externalLinks;&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
This function expects there to be a rel="external" attribute inside the links you
want to open in a new window.
&lt;/p&gt;
&lt;p&gt;
That function to me looks scary and ugly. jQuery to the rescue.
&lt;/p&gt;
&lt;p&gt;
&lt;code class="javascript"&gt;$(document).ready(function(){&lt;br&gt;
$("a[rel='external']").attr("target","_blank");&lt;br&gt;
});&lt;br&gt;
&lt;/code&gt; 
&lt;/p&gt;
&lt;p&gt;
I was able to shrink all that down to one line of jQuery. And it's a lot easier to
read and more importantly it now makes the document XHTML compliant.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Note:&lt;/b&gt; I did notice a huge argument/discussion on if this is really truely standards
compliant. As when you take the generated html code and run that through the validator
you still get the same compliance error. While others say that you are separating
the action from the presentation and that satisfies the standard. Thirdly others say
that target was depricated and as such we should never use it because the standards
people think we shouldn't open new windows on people. I don't know whose right or
whose wrong but I did find the discussion interesting. Thoughts?&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=c3d98d8e-2984-4bb3-a52c-64e325e803b9" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,c3d98d8e-2984-4bb3-a52c-64e325e803b9.aspx</comments>
      <category>How-to;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=e0d167f6-a504-4b19-95f8-df5ad253ec51</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,e0d167f6-a504-4b19-95f8-df5ad253ec51.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,e0d167f6-a504-4b19-95f8-df5ad253ec51.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e0d167f6-a504-4b19-95f8-df5ad253ec51</wfw:commentRss>
      <title>Book Review: "Smart &amp; Gets Things Done" by Joel Spolsky</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,e0d167f6-a504-4b19-95f8-df5ad253ec51.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/06/16/BookReviewSmartGetsThingsDoneByJoelSpolsky.aspx</link>
      <pubDate>Mon, 16 Jun 2008 04:03:37 GMT</pubDate>
      <description>I went into Borders the other night to look at books that I wanted to
buy.  I wasn't actually going to buy them but just wanted to see what
books looked good and would pick them up on Amazon.  Cause let's face
it Borders charges full price for it's books Amazon doesn't.&lt;br id="m6vc"&gt;
&lt;br id="m6vc0"&gt;
&lt;a href="http://www.amazon.com/gp/product/1590598385?ie=UTF8&amp;tag=mediagab0c-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1590598385"&gt;&lt;img id="w2ql" style="border: medium none ; margin: 1em 1em 0pt 0pt; width: 126px; height: 210px; float: left;" src="http://ralphwhitbeck.com/content/binary/smartgetthingsdone-cover.jpeg"&gt;&lt;/a&gt;Anyways,
I ran across a book by &lt;a title="Joel Spolsky" href="http://www.joelonsoftware.com/" id="d.i5"&gt;Joel
Spolsky&lt;/a&gt; called "&lt;a title="Smart &amp; Get Things Done" href="http://www.amazon.com/gp/product/1590598385?ie=UTF8&amp;tag=mediagab0c-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1590598385" id="vhy3"&gt;Smart
&amp; Get Things Done&lt;/a&gt;". Now I know of Joel from the &lt;a title="Stackoverflow podcast" href="http://blog.stackoverflow.com/" id="coc8"&gt;Stackoverflow
podcast&lt;/a&gt; he is doing with &lt;a href="http://www.codinghorror.com"&gt;Jeff Atwood&lt;/a&gt;.
He is the founder of Fog Creek Software that makes the project management software
FogBugz. Before that he worked for Microsoft and Juno Online Services. He was even
a paratrooper in the Israeli Defense Forces (an interesting fact that I learned from
the book).&lt;br id="bdr."&gt;
&lt;br id="bdr.0"&gt;
The book is pretty small and short. It's 182 pages and I was able to read it cover-to-cover
in a few hours in one sitting. This book is aimed at those who hire technical talent
to their organization (aka Programmers). This affects me as I have recently been tasked
with hiring co-ops for 6 month positions at &lt;a title="BrandLogic" href="http://www.brandlogic.com" id="h._-"&gt;BrandLogic&lt;/a&gt;.
I have hired three people so far but I feel that I could learn quite a bit in the
interview and selection process. I actually purchased the book from Borders that day
because it was less the $20 ($16.99 at Borders, &lt;a title="$11.55 at Amazon" href="http://www.amazon.com/gp/product/1590598385?ie=UTF8&amp;tag=mediagab0c-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1590598385" id="msrr"&gt;$11.55
at Amazon&lt;/a&gt;) and because I found it to be an easy read and it would be a great help
to me going forward. I think this book would also be great to programmers who are
about to head into the job market. This is a great insight into what hiring managers
are looking for.&lt;br id="u7.3"&gt;
&lt;br id="y9ie"&gt;
Joel goes through the whole gamut in hiring a developer. He starts out by outlining
how one measures a great developer, defines where to find great developers, to what
makes a developer happy. He then goes through the selection process with how to sort
through the resumes to weeding out candidates with a phone interview. He gets into
the details of the interview once you have a candidate that has passed through the
selection process before it. Finally, Joel takes through the hiring process and talks
briefly on how to fix suboptimal teams.&lt;br id="hmwj"&gt;
&lt;br id="hmwj0"&gt;
I felt that the book was direct and outlined the issues with hiring developers and
talked about how the great developers are not on the market. Advertising for jobs
in traditional job boards (Monster.com, Craigslist, etc.) is only going to bring out
the desperate job seekers the great developers are going to seek out the exact job
that they want. Getting resumes from the traditional methods is only going to bring
in a lot of noise and lot of resumes that just don't fit.&lt;br id="qa-q"&gt;
&lt;br id="qa-q0"&gt;
So where do you find great developers? Joel states three ways to finding great developers:
1. Go to the mountain- Go to conferences where great developers will hang out and
start conversations. WWDC for Apple Devs, PDC for Microsoft Devs, etc. Go to conferences
where early adopters might hang out (Ruby on Rails, etc) and talk to them. 2. Internships
- This is the method that BrandLogic employs. Being that 100% of our office is RIT
graduates we also feel our duty to help fellow RIT students with achieving their credits
to graduate. Anyways Joel's philosophy is that if you can bring in a student one,
two years before they graduate and have them working in a summer internship it's like
6 months of an interview at the end of which you can thank them for their work and
send them on their way or give them a offer in which you know exactly how they are
going to work for you without anymore risk. And Finally the third way is to Build
your own Community. Basically if you start a blog or are known to people in the blogosphere
and have a community following then when it comes down to needing to fill a position
and you post a comment on your blog about that you will seem to get a higher quality
selection of resumes to pick from. Of course this is all easier said then done. The
how to build a community and being able to attract people is all hit or miss and Joel
alludes to that. It's not the easiest thing to do but if you can build a community
it's a great resource to draw from.&lt;br id="cd4-"&gt;
&lt;br id="cd4-0"&gt;
Joel tries to define a developer in terms of how to make them happy and egger to work
and thus more productive or be hired. He stats each developer needs his own private
office. This will make them more productive. He goes into the reasons behind all of
this. One point is that developers seem to get into a zone when developing and a private
office will help them stay in that zone longer. Additionally he goes into the physical
office, big monitors, Areon chairs, etc. But the important part and the piece I think
we've really tried hard to encompass at BrandLogic is that the personality of developers
has to be inline with everyone else. You can't hire jerks and think that people are
going to be happy to work with jerks, even though he states Microsoft does just that.
Ha!&lt;br id="ty3w"&gt;
&lt;br id="ty3w0"&gt;
Sorting out the resumes. Joel lays out his criteria for sorting out the good from
the bad. Don't hire someone based on a resume but eliminate people based on their
resume. Some criteria to look for Passion (look for evidence for passion to work with
computers), Pickiness (look at their resume for glaring errors), English (can they
communicate effectively in their resume, if not probably aren't going to communicate
effectively in a team), Brains (high GPA or some other high honors [I disagree with
this as it relates to our selection process at BrandLogic]), Selectivity (Has the
applicant been though another selection process meaning did he make it into a school
that only accepts 30% of it's applicants or something similar [again at BrandLogic
we favor RIT and usually only advertise at RIT that this isn't an issue for us]),
Hard-Core (ability to work in hard-core languages like Assembler etc. is seen as being
better then working with Java or PHP [again I don't entirely agree with this statement,
we look for someone with web programming experience so hard-core languages don't usually
add to the experience desired for our needs]) and finally diversity (ability for new
people to bring new ideas and ways of thinking to the table [I whole-heartily agree
with this statement]).&lt;br id="elxw"&gt;
&lt;br id="elxw0"&gt;
After you've sorted through the resumes you need to weed through the resumes with
a phone interview. This will save money as you can probably get eliminate many people
by just talking to them. One example Joel gives is that after ten minutes he felt
he couldn't stand listening to a candidate any longer. He was able to weed that person
out and saved money on not having to bring him out. The benefits to a phone interview
is that you can listen to what someone is saying without visual prejudices getting
in the way. 
&lt;br id="zp1a"&gt;
&lt;br id="zp1a0"&gt;
The Interview. Joel works in NYC so for him he uses the city to entice his potential
hires or if they don't work out in the interview at least use that experience to still
leave an impression on that person. When they go home and tell their friends how awesome
the place was and how awesome the interview was, their friends will apply next summer
for that chance for the trip. This all goes back to how to find great developers.
By using your interview as a way to get known virally it's another way to draw them
in. 
&lt;br&gt;
&lt;br&gt;
The interview needs to be a conversation and needs to have the applicant writing some
kind of code. It doesn't matter what language the code is in or if it's right or wrong
the purpose is to get the person talking to find out how they think, how are they
going to solve a problem. If they make mistakes see if they catch them, ask them "Are
you happy with this code?" and see if they catch their mistake. Even if they don't
make a mistake it'll be great to see if they are confident to say yes it's perfect
when you ask them if they are happy with their code. Don't dwell on the technicalities
you should base your decision on whether the person is 1. smart and 2. can get things
done. 
&lt;br&gt;
&lt;br&gt;
Joel's company has many developers interview a person and usually has them come back
with a HIRE or NO HIRE verdict within 15 minutes of the interview. One person usually
can't decide their fate but once a certain number of people come back with NO HIRE
the interview is over and they won't be hired. 
&lt;br id="rc61"&gt;
&lt;br id="rc610"&gt;
The rest of the book goes into how to hire someone and how to deal with a team that
might be poisoning the rest of the team. I'll leave those chapters to you to read.
I think the dealing with a team chapter is just a brief insight into management but
Joel gives his recommendation into other books you can pick up to help with project/team
management.&lt;br id="nsrc"&gt;
&lt;br id="nsrc0"&gt;
I really enjoyed this book. It was easy to read and was clear and to the point. I
have many ideas on how I can update and tweak our interview process at BrandLogic
for future hires. 
&lt;br id="gua_"&gt;
&lt;br id="gua_0"&gt;
Help support this blog by &lt;a title="purchasing this book from my Amazon link" href="http://www.amazon.com/gp/product/1590598385?ie=UTF8&amp;tag=mediagab0c-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1590598385" id="z43o"&gt;purchasing
this book from my Amazon link&lt;/a&gt;.&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=e0d167f6-a504-4b19-95f8-df5ad253ec51" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,e0d167f6-a504-4b19-95f8-df5ad253ec51.aspx</comments>
      <category>BrandLogic;Entertainment;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=32f03b71-4da8-4653-9044-3a6cca481e0f</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,32f03b71-4da8-4653-9044-3a6cca481e0f.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,32f03b71-4da8-4653-9044-3a6cca481e0f.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=32f03b71-4da8-4653-9044-3a6cca481e0f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I wanted to share my first real use of
JSON (JavaScript Object Notation) I created today at work. The reason I find this
exciting is cause I never really understood the use of JSON or how to create and use
it. I found a simple use when I <a title="wrote about pulling in twitter updated into my blog using jQuery and the Twitter API using the JSON data" href="http://ralphwhitbeck.com/2007/11/20/PullingTwitterUpdatesWithJSONAndJQuery.aspx" id="rqmi">wrote
about pulling in twitter updated into my blog using jQuery and the Twitter API using
the JSON data</a>, but I didn't create the JSON and was just consumming it.<br id="gfq10" /><br id="gfq11" />
Well today I was tasked with creating a JavaScript array that could be easily updated
by an administrator of a web site and the data would be used to populate a dropdown
box. Yes there are probably better solutions to populate a dropdown box but this was
what I was tasked with. 
<br id="ne9x0" /><br id="ne9x1" />
Now a year ago, I would have probably created an XML file to hold onto this data but
a recent blog post from <a title="Jeff Atwood over at Coding Horror" href="http://www.codinghorror.com/blog/archives/001114.html" id="nq48">Jeff
Atwood over at Coding Horror</a> made me realize that XML is ugly. From that article
JSON seemed like a cleaner choice.<br id="jca_0" /><br id="jca_1" />
So basically my data needed to hold geographical regions of the US with sections or
cities for each region. Each region/city would have a url associated with it. So in
a separate js file I created this:<br id="d6:00" /><br id="d6:01" /><code class="javascript"> { regions: [<br id="d6:02" />
{<br id="d6:03" />
text: "NorthEast",<br id="d6:04" />
value: "http://ralphwhitbeck.com/northeast",<br id="d6:05" />
sections: [<br id="d6:06" />
{<br id="d6:07" />
text: "New York",<br id="ww5m0" />
value: "http://ralphwhitbeck.com/newyork"<br id="ww5m1" />
},<br id="fmw-0" />
{<br id="d6:07" />
text: "Boston",<br id="ww5m0" />
value: "http://ralphwhitbeck.com/boston"<br id="ww5m1" />
}<br id="q83_0" />
]<br id="d6:011" />
},<br id="wdpp0" />
{<br id="wdpp1" />
text: "South East",<br id="wdpp2" />
value: "http://ralphwhitbeck.com/southeast",<br id="wdpp3" />
sections: [<br id="wdpp4" />
{<br id="wdpp5" />
text: "Orlando",<br id="wdpp6" />
value: "http://ralphwhitbeck.com/southeast"<br id="wdpp7" />
}<br id="wdpp8" />
]<br id="li4_0" />
}<br id="d6:012" /><br id="d6:013" />
]<br id="d6:014" /><br id="d6:015" />
}<br id="dgv30" /><br id="dgv31" /></code> So looking at this you can see that it's very clean and easy to read. We can
see that it's two levels deep and we can see which sections are related to which regions
at a quick glance.<br id="xm1l0" /><br id="xm1l1" />
Now I needed to take this JSON data and consume it and populate a dropdown. I turn
to jQuery to help me out (which was very slow today due to the 1.5 release of the
UI plugin). Here is the code to consume display it:<br id="ydab0" /><br id="ydab1" /><code class="javascript"> $(document).ready(function(){<br id="ydab2" />
$.getJSON("sections.js",function(json){<br id="ydab3" />
$.each(json.regions, function(i,ritem){<br id="u4:u0" />
$("#select_dropdown").append("<option value=" + ritem.value + ">" + ritem.text + "</option>");<br id="zye30" />
$.each(ritem.sections, function(i,sitem){<br id="zye31" />
$("#select_dropdown").append("<option value=" + sitem.value + ">--" + sitem.text +
"</option>");<br id="zye32" />
});<br id="u4:u1" />
});<br id="ydab4" />
});<br id="ydab5" />
});<br id="hqir0" /></code><br id="hqir1" />
This requires a select element on the page with an id of select_dropdown. 
<br /><br />
Download the example code <a href="http://ralphwhitbeck.com/content/binary/JSON_Example-DamnRalph.zip">JSON_Example-DamnRalph.zip
(1.24 KB)</a><br /><br /><b>Update:</b> So an interesting problem came up at work today where we needed to
validate the JSON because the data we entered had a syntax error (we figure this was
the case cause it wasn't working as expected) and so we needed a validator to validate
the JSON data. Unfortunately the way we are consumming the JSON if it tries to parse
it and it's not valid then the user doesn't get an error (is this the desired choice
in jQuery's getJSON method?) so there is no feedback to what the sytax problem might
be. We found this online <a href="http://www.jsonlint.com/">JSON Validator</a> that
worked to help us identify the syntax errors.<br /><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=32f03b71-4da8-4653-9044-3a6cca481e0f" /></body>
      <title>My first JSON Implementation</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,32f03b71-4da8-4653-9044-3a6cca481e0f.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/06/10/MyFirstJSONImplementation.aspx</link>
      <pubDate>Tue, 10 Jun 2008 01:09:13 GMT</pubDate>
      <description>I wanted to share my first real use of JSON (JavaScript Object
Notation) I created today at work.  The reason I find this exciting is
cause I never really understood the use of JSON or how to create and
use it.  I found a simple use when I &lt;a title="wrote about pulling in twitter updated into my blog using jQuery and the Twitter API using the JSON data" href="http://ralphwhitbeck.com/2007/11/20/PullingTwitterUpdatesWithJSONAndJQuery.aspx" id="rqmi"&gt;wrote
about pulling in twitter updated into my blog using jQuery and the Twitter API using
the JSON data&lt;/a&gt;, but I didn't create the JSON and was just consumming it.&lt;br id="gfq10"&gt;
&lt;br id="gfq11"&gt;
Well today I was tasked with creating a JavaScript array that could be easily updated
by an administrator of a web site and the data would be used to populate a dropdown
box. Yes there are probably better solutions to populate a dropdown box but this was
what I was tasked with. 
&lt;br id="ne9x0"&gt;
&lt;br id="ne9x1"&gt;
Now a year ago, I would have probably created an XML file to hold onto this data but
a recent blog post from &lt;a title="Jeff Atwood over at Coding Horror" href="http://www.codinghorror.com/blog/archives/001114.html" id="nq48"&gt;Jeff
Atwood over at Coding Horror&lt;/a&gt; made me realize that XML is ugly. From that article
JSON seemed like a cleaner choice.&lt;br id="jca_0"&gt;
&lt;br id="jca_1"&gt;
So basically my data needed to hold geographical regions of the US with sections or
cities for each region. Each region/city would have a url associated with it. So in
a separate js file I created this:&lt;br id="d6:00"&gt;
&lt;br id="d6:01"&gt;
&lt;code class="javascript"&gt; { regions: [&lt;br id="d6:02"&gt;
{&lt;br id="d6:03"&gt;
text: "NorthEast",&lt;br id="d6:04"&gt;
value: "http://ralphwhitbeck.com/northeast",&lt;br id="d6:05"&gt;
sections: [&lt;br id="d6:06"&gt;
{&lt;br id="d6:07"&gt;
text: "New York",&lt;br id="ww5m0"&gt;
value: "http://ralphwhitbeck.com/newyork"&lt;br id="ww5m1"&gt;
},&lt;br id="fmw-0"&gt;
{&lt;br id="d6:07"&gt;
text: "Boston",&lt;br id="ww5m0"&gt;
value: "http://ralphwhitbeck.com/boston"&lt;br id="ww5m1"&gt;
}&lt;br id="q83_0"&gt;
]&lt;br id="d6:011"&gt;
},&lt;br id="wdpp0"&gt;
{&lt;br id="wdpp1"&gt;
text: "South East",&lt;br id="wdpp2"&gt;
value: "http://ralphwhitbeck.com/southeast",&lt;br id="wdpp3"&gt;
sections: [&lt;br id="wdpp4"&gt;
{&lt;br id="wdpp5"&gt;
text: "Orlando",&lt;br id="wdpp6"&gt;
value: "http://ralphwhitbeck.com/southeast"&lt;br id="wdpp7"&gt;
}&lt;br id="wdpp8"&gt;
]&lt;br id="li4_0"&gt;
}&lt;br id="d6:012"&gt;
&lt;br id="d6:013"&gt;
]&lt;br id="d6:014"&gt;
&lt;br id="d6:015"&gt;
}&lt;br id="dgv30"&gt;
&lt;br id="dgv31"&gt;
&lt;/code&gt; So looking at this you can see that it's very clean and easy to read. We can
see that it's two levels deep and we can see which sections are related to which regions
at a quick glance.&lt;br id="xm1l0"&gt;
&lt;br id="xm1l1"&gt;
Now I needed to take this JSON data and consume it and populate a dropdown. I turn
to jQuery to help me out (which was very slow today due to the 1.5 release of the
UI plugin). Here is the code to consume display it:&lt;br id="ydab0"&gt;
&lt;br id="ydab1"&gt;
&lt;code class="javascript"&gt; $(document).ready(function(){&lt;br id="ydab2"&gt;
$.getJSON("sections.js",function(json){&lt;br id="ydab3"&gt;
$.each(json.regions, function(i,ritem){&lt;br id="u4:u0"&gt;
$("#select_dropdown").append("&lt;option value=" + ritem.value + "&gt;" + ritem.text + "&lt;/option&gt;");&lt;br id="zye30"&gt;
$.each(ritem.sections, function(i,sitem){&lt;br id="zye31"&gt;
$("#select_dropdown").append("&lt;option value=" + sitem.value + "&gt;--" + sitem.text +
"&lt;/option&gt;");&lt;br id="zye32"&gt;
});&lt;br id="u4:u1"&gt;
});&lt;br id="ydab4"&gt;
});&lt;br id="ydab5"&gt;
});&lt;br id="hqir0"&gt;
&lt;/code&gt; 
&lt;br id="hqir1"&gt;
This requires a select element on the page with an id of select_dropdown. 
&lt;br&gt;
&lt;br&gt;
Download the example code &lt;a href="http://ralphwhitbeck.com/content/binary/JSON_Example-DamnRalph.zip"&gt;JSON_Example-DamnRalph.zip
(1.24 KB)&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Update:&lt;/b&gt; So an interesting problem came up at work today where we needed to
validate the JSON because the data we entered had a syntax error (we figure this was
the case cause it wasn't working as expected) and so we needed a validator to validate
the JSON data. Unfortunately the way we are consumming the JSON if it tries to parse
it and it's not valid then the user doesn't get an error (is this the desired choice
in jQuery's getJSON method?) so there is no feedback to what the sytax problem might
be. We found this online &lt;a href="http://www.jsonlint.com/"&gt;JSON Validator&lt;/a&gt; that
worked to help us identify the syntax errors.&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=32f03b71-4da8-4653-9044-3a6cca481e0f" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,32f03b71-4da8-4653-9044-3a6cca481e0f.aspx</comments>
      <category>How-to;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=91ff2583-f1ec-446e-b1e5-6eeed3267caf</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,91ff2583-f1ec-446e-b1e5-6eeed3267caf.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,91ff2583-f1ec-446e-b1e5-6eeed3267caf.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=91ff2583-f1ec-446e-b1e5-6eeed3267caf</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img id="rqoa0" style="margin: 1em 1em 0pt 0pt; width: 240px; height: 160px; float: left;" src="http://docs.google.com/File?id=dd2zph28_69cbb22m9d_b" />
        <a title="Google IO" href="http://code.google.com/events/io/" id="x8j1">Google
IO</a> is a two day developer conference in San Francisco which is held in the Moscone
Center.  This year the conference is focusing on technologies like Android (mobile
phone OS), Gears (ability to extend the browser to make your site work offline and
sync when your online again), Gdata (API to work with Google Services like Calendar,
Gmail, etc.) and finally a look into OpenID, OAuth and OpenSocial.<br id="lxr:0" /><br id="lxr:1" />
Since this was in San Fran it was fairly heavily covered and T<a title="echCrunch has a good write up" href="http://www.techcrunch.com/2008/05/28/live-from-google-io/" id="ygpf">echCrunch
has a good write up</a> with live blogging, video demo's (embedded below) and many
pics. <a title="James Hamilton provides some rough notes" href="http://perspectives.mvdirona.com/2008/05/29/RoughNotesFromSelectedSessionsAtGoogleIODay1.aspx" id="rxhc">James
Hamilton provides some rough notes</a> from various talks from throughout the day. <b>Update:</b><a href="http://googleconference.blogspot.com/">Andy
O posted his blog in the comments</a> which has a well written detailed thoughts of
the conference.<br id="q7d.0" /><br id="q7d.1" />
Some interesting announcements from the keynote.  <a title="MySpace is going to work with Gears" href="http://www.techcrunch.com/2008/05/28/myspace-shows-facebook-how-its-done-google-gears-to-power-messaging/" id="u:xp">MySpace
is going to work with Gears</a>.  <a title="Gears officially changed it name to Gears" href="http://googleblog.blogspot.com/2008/05/happy-birthday-google-gears.html" id="v4dq">Gears
officially changed it name to Gears</a> dropping Google from the previous name of
Google Gears.  The reasoning is that Google wants to strongly urge that Gears
is Open Source and is for the community.<a title="AOL officially joins OpenSocial" href="http://alwayson.goingon.com/permalink/post/27332" id="jg2-">AOL
officially joins OpenSocial</a>.<br /><br />
Here is a video demo of Android:<br /><br /><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/arXolJrLVEg&amp;hl=en" /><param name="wmode" value="transparent" /><embed src="http://www.youtube.com/v/arXolJrLVEg&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></embed></object><br /><p>
Finally, Scoble gives an idea of what the hot topics are at the Google Party:
</p><p><br /><object height="280" width="320"></object></p><p><object height="280" width="320"><param name="movie" value="http://qik.com/player.swf?streamname=42a1e9582a3546d0bb6bd6319823f495&amp;vid=89008&amp;playback=false&amp;polling=false&amp;user=scobleizer&amp;userlock=true&amp;islive=&amp;username=anonymous" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><embed src="http://qik.com/player.swf?streamname=42a1e9582a3546d0bb6bd6319823f495&amp;vid=89008&amp;playback=false&amp;polling=false&amp;user=scobleizer&amp;userlock=true&amp;islive=&amp;username=anonymous" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" height="280" width="320"></embed></object></p><p><i>(Photo from flickr user <a href="http://www.flickr.com/photos/zonagirl/2532556386/">Nancy-</a>.
Used undeer the <a href="http://creativecommons.org/licenses/by-sa/2.0/deed.en">Creative
Commons License</a>)</i></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=91ff2583-f1ec-446e-b1e5-6eeed3267caf" /></body>
      <title>Google I/O 2008 - Day 1</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,91ff2583-f1ec-446e-b1e5-6eeed3267caf.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/05/29/GoogleIO2008Day1.aspx</link>
      <pubDate>Thu, 29 May 2008 02:54:34 GMT</pubDate>
      <description>&lt;img id="rqoa0" style="margin: 1em 1em 0pt 0pt; width: 240px; height: 160px; float: left;" src="http://docs.google.com/File?id=dd2zph28_69cbb22m9d_b"&gt;&lt;a title="Google IO" href="http://code.google.com/events/io/" id="x8j1"&gt;Google
IO&lt;/a&gt; is a two day developer conference in San Francisco which is held in the Moscone
Center.&amp;nbsp; This year the conference is focusing on technologies like Android (mobile
phone OS), Gears (ability to extend the browser to make your site work offline and
sync when your online again), Gdata (API to work with Google Services like Calendar,
Gmail, etc.) and finally a look into OpenID, OAuth and OpenSocial.&lt;br id="lxr:0"&gt;
&lt;br id="lxr:1"&gt;
Since this was in San Fran it was fairly heavily covered and T&lt;a title="echCrunch has a good write up" href="http://www.techcrunch.com/2008/05/28/live-from-google-io/" id="ygpf"&gt;echCrunch
has a good write up&lt;/a&gt; with live blogging, video demo's (embedded below) and many
pics. &lt;a title="James Hamilton provides some rough notes" href="http://perspectives.mvdirona.com/2008/05/29/RoughNotesFromSelectedSessionsAtGoogleIODay1.aspx" id="rxhc"&gt;James
Hamilton provides some rough notes&lt;/a&gt; from various talks from throughout the day. &lt;b&gt;Update:&lt;/b&gt; &lt;a href="http://googleconference.blogspot.com/"&gt;Andy
O posted his blog in the comments&lt;/a&gt; which has a well written detailed thoughts of
the conference.&lt;br id="q7d.0"&gt;
&lt;br id="q7d.1"&gt;
Some interesting announcements from the keynote.&amp;nbsp; &lt;a title="MySpace is going to work with Gears" href="http://www.techcrunch.com/2008/05/28/myspace-shows-facebook-how-its-done-google-gears-to-power-messaging/" id="u:xp"&gt;MySpace
is going to work with Gears&lt;/a&gt;.&amp;nbsp; &lt;a title="Gears officially changed it name to Gears" href="http://googleblog.blogspot.com/2008/05/happy-birthday-google-gears.html" id="v4dq"&gt;Gears
officially changed it name to Gears&lt;/a&gt; dropping Google from the previous name of
Google Gears.&amp;nbsp; The reasoning is that Google wants to strongly urge that Gears
is Open Source and is for the community.&lt;a title="AOL officially joins OpenSocial" href="http://alwayson.goingon.com/permalink/post/27332" id="jg2-"&gt;AOL
officially joins OpenSocial&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Here is a video demo of Android:&lt;br&gt;
&lt;br&gt;
&lt;object height="355" width="425"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/arXolJrLVEg&amp;amp;hl=en"&gt;
&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/arXolJrLVEg&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;
&lt;/object&gt;
&lt;br&gt;
&lt;p&gt;
Finally, Scoble gives an idea of what the hot topics are at the Google Party:
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;object height="280" width="320"&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;object height="280" width="320"&gt;
&lt;param name="movie" value="http://qik.com/player.swf?streamname=42a1e9582a3546d0bb6bd6319823f495&amp;amp;vid=89008&amp;amp;playback=false&amp;amp;polling=false&amp;amp;user=scobleizer&amp;amp;userlock=true&amp;amp;islive=&amp;amp;username=anonymous"&gt;
&lt;param name="wmode" value="transparent"&gt;
&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://qik.com/player.swf?streamname=42a1e9582a3546d0bb6bd6319823f495&amp;amp;vid=89008&amp;amp;playback=false&amp;amp;polling=false&amp;amp;user=scobleizer&amp;amp;userlock=true&amp;amp;islive=&amp;amp;username=anonymous" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" height="280" width="320"&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;(Photo from flickr user &lt;a href="http://www.flickr.com/photos/zonagirl/2532556386/"&gt;Nancy-&lt;/a&gt;.
Used undeer the &lt;a href="http://creativecommons.org/licenses/by-sa/2.0/deed.en"&gt;Creative
Commons License&lt;/a&gt;)&lt;/i&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=91ff2583-f1ec-446e-b1e5-6eeed3267caf" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,91ff2583-f1ec-446e-b1e5-6eeed3267caf.aspx</comments>
      <category>Interesting Links;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=31804e52-273a-48f8-8eeb-bd6787b538c5</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,31804e52-273a-48f8-8eeb-bd6787b538c5.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,31804e52-273a-48f8-8eeb-bd6787b538c5.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=31804e52-273a-48f8-8eeb-bd6787b538c5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Last month I first heard of ROFLCon from
a coworker who asked for a couple of days off to go to Boston to attend this convention. 
Well when he went I was doing some searching on Flickr and watched blogs to see if
I could see any pictures of him from the uploaded pics.  Needless to say we didn't
see any pictures of him.  I did however see 10 or more pics of John Resig and
100+ images of <a title="Jay Maynard (the Tron Guy)" href="http://www.flickr.com/photos/tags/tronguy/" id="yfes">Jay
Maynard (the Tron Guy)</a>.  So needless to say we are on the verge of firing
our employee for lying to us about attending a convention he obviously didn't attend
(I am only joking about firing him...or am I?).<br id="l5e10" /><br id="l5e11" />
Anyways, the point I am trying to make is that I felt that I in some way experienced
the convention through the eyes of everyone that attended.  There were countless <a title="photos" href="http://www.flickr.com/photos/tags/roflcon/" id="hixb">photos</a>, <a title="video's" href="http://www.flickr.com/photos/laughingsquid/2441721241/" id="gv1m">video's</a>,
blog posts and twitter was huge as well.<br id="grwu0" /><br id="grwu1" />
So today I heard about the <a title="Kings of Code" href="http://www.kingsofcode.nl/" id="b4_s">Kings
of Code</a> conference that is happening in the Netherlands today.  I only heard
about it because <a title="John Resig" href="http://ejohn.org/" id="ja-0">John Resig</a> is
a speaker.  So I try the normal routine of doing flickr searches and blog searches
on Kings of Code.  Sure enough I got enough info from people that posted on it
that I felt like I truly experienced a part of it.<br id="x8eg0" /><br id="x8eg1" />
First I started out with the <a title="conferences web site" href="http://www.kingsofcode.nl/" id="bp1z">conferences
web site</a> (<a title="which is translated via Google Translate" href="http://translate.google.com/translate?u=http%3A%2F%2Fwww.kingsofcode.nl%2F&amp;hl=en&amp;ie=UTF8&amp;sl=auto&amp;tl=en" id="tblp">which
is translated via Google Translate</a>) and I got a sense of who the speakers are
and what the schedule is like.<br id="ginx0" /><br id="ginx1" /><img id="bjpd" style="margin: 1em 1em 0pt 0pt; width: 240px; height: 180px; float: left;" src="https://docs.google.com/File?id=dd2zph28_67dcxtw7cx_b" />I
then went to Flickr to see if there are people there that are posting pics. 
This usually tells me if there are people there who are willing to post info on the
conference.  Sure enough there are people <a title="posting pics" href="http://www.flickr.com/photos/inferis/sets/72157605285749137/" id="jgig">posting
pics</a>.  And there is a picture of John speaking.  So that's cool I get
the feel of how big the conference is and what the stage and stuff look like.<br id="qbs:0" /><br id="qbs:1" />
Now let's see if I can dig up what the speakers are actually talking about. 
I go to Google Blogs (or Technorati) and do a search for Kings of Code and sort by
date added.  Jackpot, I stumble on to <span id="ok930" style="" onmouseover="_tipon(this)" onmouseout="_tipoff()">Gijs
van Zon's blog</span> who live blogged the whole thing. He broke it up by per break. 
We need to use Google Translate again and the translation isn't 100% perfect but you
still get a lot of the information that was presented. Here are his live blogs:<br id="ok931" /><br id="ok932" /><ul id="q:yr0"><li id="q:yr1"><a title="Javascript Events and NetLogs" href="http://64.233.179.104/translate_c?hl=en&amp;sl=auto&amp;tl=en&amp;u=http://blog.freshheads.com/2008/05/live-verslag-kings-of-code-javascript-events-netlog/" id="evs0">Javascript
Events and NetLog</a></li><li id="a81i1"><a title="W3C and CakePHP" href="http://64.233.179.104/translate_c?hl=en&amp;sl=auto&amp;tl=en&amp;u=http://blog.freshheads.com/2008/05/live-verslag-kings-of-code-w3c-cakephp/" id="uji2">W3C
and CakePHP</a></li><li id="q:yr1"><a title="Yahoo! and Open Source Pitches" href="http://64.233.179.104/translate_c?hl=en&amp;sl=auto&amp;tl=en&amp;u=http://blog.freshheads.com/2008/05/live-verslag-kings-of-code-yahoo-open-source-pitches/" id="fzip">Yahoo!
and Open Source Pitches</a> </li><li id="q:yr1"><a title="eBuddy and jQuery - Mozilla" href="http://64.233.179.104/translate_c?hl=en&amp;sl=auto&amp;tl=en&amp;u=http://blog.freshheads.com/2008/05/live-verslag-kings-of-code-ebuddy-jquery-mozilla/" id="btnh">eBuddy
and jQuery - Mozilla</a> </li></ul><br id="n.180" />
I found some of the info in these talks useful and I wanted to share.  Thanks
to those who posted pics and took the time to live blog the conference for those of
us on the other side of the world to enjoy.<br id="n.181" /><br /><b>Update:</b> With a little more digging I found some live streams of John Resig's
talk.<br /><br /><object height="280" width="320"><param name="movie" value="http://qik.com/player.swf?streamname=444a3883b4b9426198ed0e15f53c6544&amp;vid=87739&amp;playback=false&amp;polling=false&amp;user=edwin&amp;userlock=true&amp;islive=&amp;username=anonymous" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><embed src="http://qik.com/player.swf?streamname=444a3883b4b9426198ed0e15f53c6544&amp;vid=87739&amp;playback=false&amp;polling=false&amp;user=edwin&amp;userlock=true&amp;islive=&amp;username=anonymous" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" height="280" width="320"></embed></object><br /><br /><object height="280" width="320"><param name="movie" value="http://qik.com/player.swf?streamname=1a3a2c13b97a400289a8cbe07cf4c37f&amp;vid=87749&amp;playback=false&amp;polling=false&amp;user=edwin&amp;userlock=true&amp;islive=&amp;username=anonymous" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><embed src="http://qik.com/player.swf?streamname=1a3a2c13b97a400289a8cbe07cf4c37f&amp;vid=87749&amp;playback=false&amp;polling=false&amp;user=edwin&amp;userlock=true&amp;islive=&amp;username=anonymous" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" height="280" width="320"></embed></object><br /><br id="n.182" /><em id="xgbk0">(Photo from flickr user <a id="xgbk2" href="http://www.flickr.com/photos/inferis/" title="">Inferis</a>.
Used under <a title="Creative Commons license" href="http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en" id="sh._">Creative
Commons license</a>.)</em><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=31804e52-273a-48f8-8eeb-bd6787b538c5" /></body>
      <title>Kings of Code 2008</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,31804e52-273a-48f8-8eeb-bd6787b538c5.aspx</guid>
      <link>http://ralphwhitbeck.com/2008/05/28/KingsOfCode2008.aspx</link>
      <pubDate>Wed, 28 May 2008 01:09:38 GMT</pubDate>
      <description>Last month I first heard of ROFLCon from a coworker who asked for a
couple of days off to go to Boston to attend this convention.&amp;nbsp; Well
when he went I was doing some searching on Flickr and watched blogs to
see if I could see any pictures of him from the uploaded pics.&amp;nbsp;
Needless to say we didn't see any pictures of him.&amp;nbsp; I did however see
10 or more pics of John Resig and 100+ images of &lt;a title="Jay Maynard (the Tron Guy)" href="http://www.flickr.com/photos/tags/tronguy/" id="yfes"&gt;Jay
Maynard (the Tron Guy)&lt;/a&gt;.&amp;nbsp; So needless to say we are on the verge of firing
our employee for lying to us about attending a convention he obviously didn't attend
(I am only joking about firing him...or am I?).&lt;br id="l5e10"&gt;
&lt;br id="l5e11"&gt;
Anyways, the point I am trying to make is that I felt that I in some way experienced
the convention through the eyes of everyone that attended.&amp;nbsp; There were countless &lt;a title="photos" href="http://www.flickr.com/photos/tags/roflcon/" id="hixb"&gt;photos&lt;/a&gt;, &lt;a title="video's" href="http://www.flickr.com/photos/laughingsquid/2441721241/" id="gv1m"&gt;video's&lt;/a&gt;,
blog posts and twitter was huge as well.&lt;br id="grwu0"&gt;
&lt;br id="grwu1"&gt;
So today I heard about the &lt;a title="Kings of Code" href="http://www.kingsofcode.nl/" id="b4_s"&gt;Kings
of Code&lt;/a&gt; conference that is happening in the Netherlands today.&amp;nbsp; I only heard
about it because &lt;a title="John Resig" href="http://ejohn.org/" id="ja-0"&gt;John Resig&lt;/a&gt; is
a speaker.&amp;nbsp; So I try the normal routine of doing flickr searches and blog searches
on Kings of Code.&amp;nbsp; Sure enough I got enough info from people that posted on it
that I felt like I truly experienced a part of it.&lt;br id="x8eg0"&gt;
&lt;br id="x8eg1"&gt;
First I started out with the &lt;a title="conferences web site" href="http://www.kingsofcode.nl/" id="bp1z"&gt;conferences
web site&lt;/a&gt; (&lt;a title="which is translated via Google Translate" href="http://translate.google.com/translate?u=http%3A%2F%2Fwww.kingsofcode.nl%2F&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;sl=auto&amp;amp;tl=en" id="tblp"&gt;which
is translated via Google Translate&lt;/a&gt;) and I got a sense of who the speakers are
and what the schedule is like.&lt;br id="ginx0"&gt;
&lt;br id="ginx1"&gt;
&lt;img id="bjpd" style="margin: 1em 1em 0pt 0pt; width: 240px; height: 180px; float: left;" src="https://docs.google.com/File?id=dd2zph28_67dcxtw7cx_b"&gt;I
then went to Flickr to see if there are people there that are posting pics.&amp;nbsp;
This usually tells me if there are people there who are willing to post info on the
conference.&amp;nbsp; Sure enough there are people &lt;a title="posting pics" href="http://www.flickr.com/photos/inferis/sets/72157605285749137/" id="jgig"&gt;posting
pics&lt;/a&gt;.&amp;nbsp; And there is a picture of John speaking.&amp;nbsp; So that's cool I get
the feel of how big the conference is and what the stage and stuff look like.&lt;br id="qbs:0"&gt;
&lt;br id="qbs:1"&gt;
Now let's see if I can dig up what the speakers are actually talking about.&amp;nbsp;
I go to Google Blogs (or Technorati) and do a search for Kings of Code and sort by
date added.&amp;nbsp; Jackpot, I stumble on to &lt;span id="ok930" style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;Gijs
van Zon's blog&lt;/span&gt; who live blogged the whole thing. He broke it up by per break.&amp;nbsp;
We need to use Google Translate again and the translation isn't 100% perfect but you
still get a lot of the information that was presented. Here are his live blogs:&lt;br id="ok931"&gt;
&lt;br id="ok932"&gt;
&lt;ul id="q:yr0"&gt;
&lt;li id="q:yr1"&gt;
&lt;a title="Javascript Events and NetLogs" href="http://64.233.179.104/translate_c?hl=en&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http://blog.freshheads.com/2008/05/live-verslag-kings-of-code-javascript-events-netlog/" id="evs0"&gt;Javascript
Events and NetLog&lt;/a&gt;
&lt;/li&gt;
&lt;li id="a81i1"&gt;
&lt;a title="W3C and CakePHP" href="http://64.233.179.104/translate_c?hl=en&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http://blog.freshheads.com/2008/05/live-verslag-kings-of-code-w3c-cakephp/" id="uji2"&gt;W3C
and CakePHP&lt;/a&gt;
&lt;/li&gt;
&lt;li id="q:yr1"&gt;
&lt;a title="Yahoo! and Open Source Pitches" href="http://64.233.179.104/translate_c?hl=en&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http://blog.freshheads.com/2008/05/live-verslag-kings-of-code-yahoo-open-source-pitches/" id="fzip"&gt;Yahoo!
and Open Source Pitches&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li id="q:yr1"&gt;
&lt;a title="eBuddy and jQuery - Mozilla" href="http://64.233.179.104/translate_c?hl=en&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http://blog.freshheads.com/2008/05/live-verslag-kings-of-code-ebuddy-jquery-mozilla/" id="btnh"&gt;eBuddy
and jQuery - Mozilla&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br id="n.180"&gt;
I found some of the info in these talks useful and I wanted to share.&amp;nbsp; Thanks
to those who posted pics and took the time to live blog the conference for those of
us on the other side of the world to enjoy.&lt;br id="n.181"&gt;
&lt;br&gt;
&lt;b&gt;Update:&lt;/b&gt; With a little more digging I found some live streams of John Resig's
talk.&lt;br&gt;
&lt;br&gt;
&lt;object height="280" width="320"&gt;
&lt;param name="movie" value="http://qik.com/player.swf?streamname=444a3883b4b9426198ed0e15f53c6544&amp;amp;vid=87739&amp;amp;playback=false&amp;amp;polling=false&amp;amp;user=edwin&amp;amp;userlock=true&amp;amp;islive=&amp;amp;username=anonymous"&gt;
&lt;param name="wmode" value="transparent"&gt;
&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://qik.com/player.swf?streamname=444a3883b4b9426198ed0e15f53c6544&amp;amp;vid=87739&amp;amp;playback=false&amp;amp;polling=false&amp;amp;user=edwin&amp;amp;userlock=true&amp;amp;islive=&amp;amp;username=anonymous" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" height="280" width="320"&gt;
&lt;/object&gt;
&lt;br&gt;
&lt;br&gt;
&lt;object height="280" width="320"&gt;
&lt;param name="movie" value="http://qik.com/player.swf?streamname=1a3a2c13b97a400289a8cbe07cf4c37f&amp;amp;vid=87749&amp;amp;playback=false&amp;amp;polling=false&amp;amp;user=edwin&amp;amp;userlock=true&amp;amp;islive=&amp;amp;username=anonymous"&gt;
&lt;param name="wmode" value="transparent"&gt;
&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://qik.com/player.swf?streamname=1a3a2c13b97a400289a8cbe07cf4c37f&amp;amp;vid=87749&amp;amp;playback=false&amp;amp;polling=false&amp;amp;user=edwin&amp;amp;userlock=true&amp;amp;islive=&amp;amp;username=anonymous" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" height="280" width="320"&gt;
&lt;/object&gt;
&lt;br&gt;
&lt;br id="n.182"&gt;
&lt;em id="xgbk0"&gt;(Photo from flickr user &lt;a id="xgbk2" href="http://www.flickr.com/photos/inferis/" title=""&gt;Inferis&lt;/a&gt;.
Used under &lt;a title="Creative Commons license" href="http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en" id="sh._"&gt;Creative
Commons license&lt;/a&gt;.)&lt;/em&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=31804e52-273a-48f8-8eeb-bd6787b538c5" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,31804e52-273a-48f8-8eeb-bd6787b538c5.aspx</comments>
      <category>Interesting Links;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=cd8e241c-11d1-43ff-9557-70fab698ea1f</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,cd8e241c-11d1-43ff-9557-70fab698ea1f.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,cd8e241c-11d1-43ff-9557-70fab698ea1f.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=cd8e241c-11d1-43ff-9557-70fab698ea1f</wfw:commentRss>
      <slash:comments>14</slash:comments>
      <title>Pulling twitter updates with JSON and jQuery</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,cd8e241c-11d1-43ff-9557-70fab698ea1f.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/11/20/PullingTwitterUpdatesWithJSONAndJQuery.aspx</link>
      <pubDate>Tue, 20 Nov 2007 03:32:15 GMT</pubDate>
      <description>I wrote a little script tonight to pull in my latest 3 tweets from twitter and display them on my blog.  You can see it in action on the right.&lt;br&gt;
&lt;br&gt;
Here is how I did it. I used the Twitter's API and called my timeline with a JSON
call and comsummed it with jQuery and outputted it to a blank div.&lt;br&gt;
&lt;br&gt;
&lt;code class="javascript"&gt; var url = "http://twitter.com/status/user_timeline/RedWolves.json?count=3&amp;callback=?";
$.getJSON(url, function(data){ $.each(data, function(i, item) { $("img#profile").attr("src",
item.user["profile_image_url"]); $("#tweets ul").append("&lt;li&gt;
" + item.text.linkify() + " &lt;span class='created_at'&gt;" + relative_time(item.created_at)
+ " via " + item.source + "&lt;/span&gt;
&lt;/li&gt;"); }); }); &lt;/code&gt;
&lt;p&gt;
Basically what this does is pulls in the data from twitter and makes them available
as objects. I then loop through each item and pull out the data I want and write it
out to a unordered list. &lt;b&gt;Update:&lt;/b&gt; &lt;i&gt;make sure to look at the complete working
example below as it has the two functions this code block is using (linkify and relative_time)
to transform the JSON data into how I'd like it to look.&lt;/i&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Here is the HTML stub it's going to:&lt;br&gt;
&lt;br&gt;
&lt;code class="html"&gt; 
&lt;div id="tweets"&gt;
&lt;img id="profile"&gt; 
&lt;ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
You can download a working example here: &lt;a href="http://ralphwhitbeck.com/content/binary/twitter-json-jquery.html"&gt;twitter-json-jquery.html
(1.79 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=cd8e241c-11d1-43ff-9557-70fab698ea1f" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,cd8e241c-11d1-43ff-9557-70fab698ea1f.aspx</comments>
      <category>How-to;Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=7be5b7bd-178b-4c91-9fc9-949bb9c1ded6</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,7be5b7bd-178b-4c91-9fc9-949bb9c1ded6.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,7be5b7bd-178b-4c91-9fc9-949bb9c1ded6.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7be5b7bd-178b-4c91-9fc9-949bb9c1ded6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Last month <a href="http://ralphwhitbeck.com/2007/10/27/MyFirstJQueryBug.aspx">I
posted about my problems with the jQuery UI shadow plugin</a> where it wasn't working
with absolute positioned divs.<br /><br />
I was looking at the <a href="http://forum.jquery.com/#Forum/developing-jquery-ui">Development
jQuery UI forum</a> this morning and came across <a href="http://forum.jquery.com/topic/shadow-enhancements-optimizations-and-clean-ups">this
post by Brandon Aaron</a> detailing how he cleaned up the shadow plugin.<br /><br />
I politely mentioned my bug I submitted and he politely told me that the <a href="http://dev.jquery.com/browser/trunk/fx/current/fx.shadow.js?rev=3823">latest
version in SVN</a> will now solve my problem.<br /><br />
And it does:<br /><br /><p></p><img src="http://ralphwhitbeck.com/content/binary/shadow-bug-fixed.png" border="0" /><br /><br />
Yay, open source!<br /><br />
Interesting fact, when they release the next version there will now be a <a href="http://dev.jquery.com/browser/trunk/ui">UI</a> branch
and a <a href="http://dev.jquery.com/browser/trunk/fx">FX</a> branch. Shadow was moved
and will be in the FX branch.<br /><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=7be5b7bd-178b-4c91-9fc9-949bb9c1ded6" /></body>
      <title>Update on my jQuery bug</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,7be5b7bd-178b-4c91-9fc9-949bb9c1ded6.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/11/14/UpdateOnMyJQueryBug.aspx</link>
      <pubDate>Wed, 14 Nov 2007 20:27:03 GMT</pubDate>
      <description>Last month &lt;a href="http://ralphwhitbeck.com/2007/10/27/MyFirstJQueryBug.aspx"&gt;I posted
about my problems with the jQuery UI shadow plugin&lt;/a&gt; where it wasn't working with
absolute positioned divs.&lt;br&gt;
&lt;br&gt;
I was looking at the &lt;a href="http://forum.jquery.com/#Forum/developing-jquery-ui"&gt;Development
jQuery UI forum&lt;/a&gt; this morning and came across &lt;a href="http://forum.jquery.com/topic/shadow-enhancements-optimizations-and-clean-ups"&gt;this
post by Brandon Aaron&lt;/a&gt; detailing how he cleaned up the shadow plugin.&lt;br&gt;
&lt;br&gt;
I politely mentioned my bug I submitted and he politely told me that the &lt;a href="http://dev.jquery.com/browser/trunk/fx/current/fx.shadow.js?rev=3823"&gt;latest
version in SVN&lt;/a&gt; will now solve my problem.&lt;br&gt;
&lt;br&gt;
And it does:&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://ralphwhitbeck.com/content/binary/shadow-bug-fixed.png" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
Yay, open source!&lt;br&gt;
&lt;br&gt;
Interesting fact, when they release the next version there will now be a &lt;a href="http://dev.jquery.com/browser/trunk/ui"&gt;UI&lt;/a&gt; branch
and a &lt;a href="http://dev.jquery.com/browser/trunk/fx"&gt;FX&lt;/a&gt; branch. Shadow was moved
and will be in the FX branch.&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=7be5b7bd-178b-4c91-9fc9-949bb9c1ded6" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,7be5b7bd-178b-4c91-9fc9-949bb9c1ded6.aspx</comments>
      <category>Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=ef3661a9-f3ee-44fa-b6ef-2f56c17932f6</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,ef3661a9-f3ee-44fa-b6ef-2f56c17932f6.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,ef3661a9-f3ee-44fa-b6ef-2f56c17932f6.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ef3661a9-f3ee-44fa-b6ef-2f56c17932f6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Sometimes in VS.NET 2005 the codebehind
for the aspx file show up in the solution explorer not connected.<br /><p>
To Solve this problem: 
</p><ol><li>
Close Visual Studio 
</li><li>
Open up the proj file with a text/XML editor. 
</li><li>
Scroll down till you find the &lt;EmbeddedResource&gt; section. 
</li><li>
Find around where you need to enter in a new resource in relation to the file you're
having issues with. 
</li><li>
add this for each file except the aspx file: 
</li></ol><pre>    &lt;EmbeddedResource Include="Admin\Author\MassUpload\upload.aspx.cs"&gt;<br />
&lt;DependentUpon&gt;upload.aspx&lt;/DependentUpon&gt;<br />
&lt;/EmbeddedResource&gt;<br />
&lt;EmbeddedResource Include="Admin\Author\MassUpload\upload.aspx.resx"&gt;<br />
&lt;DependentUpon&gt;upload.aspx.cs&lt;/DependentUpon&gt;<br />
&lt;/EmbeddedResource&gt;<br /><br /></pre><p><b>Related Links</b></p><p><a href="http://www.thescripts.com/forum/thread538321.html">Form &amp; Designer File
Becoming Separated</a><br /></p><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=ef3661a9-f3ee-44fa-b6ef-2f56c17932f6" /></body>
      <title>VS.NET IDE Issue - ASPX gets separated from codebehind</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,ef3661a9-f3ee-44fa-b6ef-2f56c17932f6.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/11/05/VSNETIDEIssueASPXGetsSeparatedFromCodebehind.aspx</link>
      <pubDate>Mon, 05 Nov 2007 21:05:23 GMT</pubDate>
      <description>Sometimes in VS.NET 2005 the codebehind for the aspx file show up in the solution explorer not connected.&lt;br&gt;
&lt;p&gt;
To Solve this problem: 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Close Visual Studio 
&lt;/li&gt;
&lt;li&gt;
Open up the proj file with a text/XML editor. 
&lt;/li&gt;
&lt;li&gt;
Scroll down till you find the &amp;lt;EmbeddedResource&amp;gt; section. 
&lt;/li&gt;
&lt;li&gt;
Find around where you need to enter in a new resource in relation to the file you're
having issues with. 
&lt;/li&gt;
&lt;li&gt;
add this for each file except the aspx file: 
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;    &amp;lt;EmbeddedResource Include="Admin\Author\MassUpload\upload.aspx.cs"&amp;gt;&lt;br&gt;
&amp;lt;DependentUpon&amp;gt;upload.aspx&amp;lt;/DependentUpon&amp;gt;&lt;br&gt;
&amp;lt;/EmbeddedResource&amp;gt;&lt;br&gt;
&amp;lt;EmbeddedResource Include="Admin\Author\MassUpload\upload.aspx.resx"&amp;gt;&lt;br&gt;
&amp;lt;DependentUpon&amp;gt;upload.aspx.cs&amp;lt;/DependentUpon&amp;gt;&lt;br&gt;
&amp;lt;/EmbeddedResource&amp;gt;&lt;br&gt;
&lt;br&gt;
&lt;/pre&gt;
&lt;p&gt;
&lt;b&gt;Related Links&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.thescripts.com/forum/thread538321.html"&gt;Form &amp;amp; Designer File
Becoming Separated&lt;/a&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=ef3661a9-f3ee-44fa-b6ef-2f56c17932f6" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,ef3661a9-f3ee-44fa-b6ef-2f56c17932f6.aspx</comments>
      <category>How-to;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=db5ed8e7-cab1-43f4-a8e3-6c19eb4ccf82</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,db5ed8e7-cab1-43f4-a8e3-6c19eb4ccf82.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,db5ed8e7-cab1-43f4-a8e3-6c19eb4ccf82.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=db5ed8e7-cab1-43f4-a8e3-6c19eb4ccf82</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://ralphwhitbeck.com/content/binary/rails_logo.gif" align="left" border="0" />I
installed Ruby on Rails,I think ;), on a VMWare Server installation of Ubuntu 7.10
using the following tutorials.<br /><br />
To install VMWare Server and Ubuntu: <a href="http://cmsproducer.com/Ubuntu-Linux-Windows-VMware-Server">http://cmsproducer.com/Ubuntu-Linux-Windows-VMware-Server</a><br /><br />
To install Ruby on Rails on Ubuntu: <a href="http://paulgoscicki.com/archives/2005/09/ruby-on-rails-on-ubuntu/">http://paulgoscicki.com/archives/2005/09/ruby-on-rails-on-ubuntu/</a><br /><br />
Total installation time took me about two hours from the start of downloading Ubuntu
to finishing the last step.<br /><br />
Now let's see if I can figure out how to program Ruby on Rails.<br /><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=db5ed8e7-cab1-43f4-a8e3-6c19eb4ccf82" /></body>
      <title>Installing Rails on Ubuntu using VMWare Server</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,db5ed8e7-cab1-43f4-a8e3-6c19eb4ccf82.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/10/28/InstallingRailsOnUbuntuUsingVMWareServer.aspx</link>
      <pubDate>Sun, 28 Oct 2007 00:48:36 GMT</pubDate>
      <description>&lt;img src="http://ralphwhitbeck.com/content/binary/rails_logo.gif" align="left" border="0"&gt;I
installed Ruby on Rails,I think ;), on a VMWare Server installation of Ubuntu 7.10
using the following tutorials.&lt;br&gt;
&lt;br&gt;
To install VMWare Server and Ubuntu: &lt;a href="http://cmsproducer.com/Ubuntu-Linux-Windows-VMware-Server"&gt;http://cmsproducer.com/Ubuntu-Linux-Windows-VMware-Server&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
To install Ruby on Rails on Ubuntu: &lt;a href="http://paulgoscicki.com/archives/2005/09/ruby-on-rails-on-ubuntu/"&gt;http://paulgoscicki.com/archives/2005/09/ruby-on-rails-on-ubuntu/&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
Total installation time took me about two hours from the start of downloading Ubuntu
to finishing the last step.&lt;br&gt;
&lt;br&gt;
Now let's see if I can figure out how to program Ruby on Rails.&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=db5ed8e7-cab1-43f4-a8e3-6c19eb4ccf82" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,db5ed8e7-cab1-43f4-a8e3-6c19eb4ccf82.aspx</comments>
      <category>How-to;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=4933efce-5436-4b65-a9ec-6b79dbfb072a</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,4933efce-5436-4b65-a9ec-6b79dbfb072a.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,4933efce-5436-4b65-a9ec-6b79dbfb072a.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4933efce-5436-4b65-a9ec-6b79dbfb072a</wfw:commentRss>
      <title>My first jQuery bug</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,4933efce-5436-4b65-a9ec-6b79dbfb072a.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/10/27/MyFirstJQueryBug.aspx</link>
      <pubDate>Sat, 27 Oct 2007 21:50:11 GMT</pubDate>
      <description>&lt;b&gt;Update:&lt;/b&gt; &lt;i&gt;Bug has been fixed/closed.&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
I submitted my first jQuery bug today, I am pretty sure that it's a bug and not something
I am doing wrong, but hey it wouldn't be the first time.&lt;br&gt;
&lt;br&gt;
I was trying to use the new jQuery UI to add a drop shadow to a floating DIV. Unfortunately,
I was not getting the results I was expecting.&lt;br&gt;
&lt;br&gt;
Here is the test HTML I was using to recreate the bug:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;font color="GREEN"&gt;&lt;i&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&gt;&lt;/i&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;html&lt;/b&gt;&lt;/font&gt; xmlns&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"http://www.w3.org/1999/xhtml"&lt;/font&gt; &lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;head&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;title&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;Shadow
Page Test&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;title&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/font&gt; src&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"jquery.js"&lt;/font&gt; type&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"text/javascript"&lt;/font&gt; language&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"javascript"&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/font&gt; src&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"jquery.dimensions.js"&lt;/font&gt; type&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"text/javascript"&lt;/font&gt; language&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"javascript"&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/font&gt; src&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"ui.shadow.js"&lt;/font&gt; type&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"text/javascript"&lt;/font&gt; language&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"javascript"&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;style&lt;/b&gt;&lt;/font&gt; type&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"text/css"&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
#Alert&lt;br&gt;
{&lt;br&gt;
position: absolute;&lt;br&gt;
top: 200px;&lt;br&gt;
left: 200px;&lt;br&gt;
background-color: #ffffff;&lt;br&gt;
width: 200px;&lt;br&gt;
height: 200px;&lt;br&gt;
padding: 10px;&lt;br&gt;
font-weight: bold;&lt;br&gt;
border: 2px solid #ff0000;&lt;br&gt;
}&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;style&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/font&gt; type&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"text/javascript"&lt;/font&gt; language&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"javascript"&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
$(document).ready(function () {&lt;br&gt;
$(&lt;/font&gt;&lt;/span&gt;&lt;font color="PURPLE"&gt;"#Alert"&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;).shadow({
offset: 5, color: &lt;/font&gt;&lt;/span&gt;&lt;font color="PURPLE"&gt;"#000000"&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt; });&lt;br&gt;
&lt;br&gt;
});&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;script&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;head&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;body&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/font&gt; id&lt;font color="BLUE" size="+1"&gt;=&lt;/font&gt;&lt;font color="PURPLE"&gt;"Alert"&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
This is some Alert text!&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;div&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;body&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;/font&gt;&lt;span class="cch1"&gt;&lt;font color="gray"&gt;
&lt;br&gt;
&lt;/font&gt;&lt;/span&gt;&lt;font color="BLUE" size="+1"&gt;&lt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;/&lt;/font&gt;&lt;font color="RED"&gt;&lt;b&gt;html&lt;/b&gt;&lt;/font&gt;&lt;font color="BLUE" size="+1"&gt;&gt;&lt;br&gt;
&lt;/font&gt;
&lt;/pre&gt;
&lt;/blockquote&gt;Again I was using the Shadow pluggin from &lt;a href="http://ui.jQuery.com"&gt;http://ui.jQuery.com&lt;/a&gt; but
this is what I was getting:&lt;br&gt;
&lt;pre&gt;
&lt;br&gt;
&lt;/pre&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://www.damnralph.com/content/binary/jQuery_shadow_bug.png" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
Notice how the three different colored shadow layers line up under the div instead
of stacked so it looks like a shadow?&lt;br&gt;
&lt;br&gt;
Anyway I sent it into the bug tracker in jQuery, I am &lt;a href="http://dev.jquery.com/ticket/1853"&gt;ticket
number 1853&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Here are the files to recreate this bug. &lt;a href="http://ralphwhitbeck.com/content/binary/ui.shadow_bug.zip"&gt;ui.shadow_bug.zip
(17.71 KB)&lt;/a&gt;&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=4933efce-5436-4b65-a9ec-6b79dbfb072a" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,4933efce-5436-4b65-a9ec-6b79dbfb072a.aspx</comments>
      <category>Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=533c1aa3-3ca7-4937-b930-8ff1b83d2095</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,533c1aa3-3ca7-4937-b930-8ff1b83d2095.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,533c1aa3-3ca7-4937-b930-8ff1b83d2095.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=533c1aa3-3ca7-4937-b930-8ff1b83d2095</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img src="http://www.codinghorror.com/blog/images/join-inner.png" align="left" width="150" />Jeff
Atwood over at <a href="http://www.codinghorror.com/blog/">Coding Horror</a> explains
with visual Venn diagrams how joins work.  Even if you know how joins work it
is still nice to see it in visual form.<br /><a href="http://www.codinghorror.com/blog/archives/000976.html"><br />
Click here to see the joins.</a><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=533c1aa3-3ca7-4937-b930-8ff1b83d2095" /></body>
      <title>A Visual Explaination of SQL Joins</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,533c1aa3-3ca7-4937-b930-8ff1b83d2095.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/10/12/AVisualExplainationOfSQLJoins.aspx</link>
      <pubDate>Fri, 12 Oct 2007 18:59:39 GMT</pubDate>
      <description>&lt;img src="http://www.codinghorror.com/blog/images/join-inner.png" align="left" width="150"&gt;Jeff
Atwood over at &lt;a href="http://www.codinghorror.com/blog/"&gt;Coding Horror&lt;/a&gt; explains
with visual Venn diagrams how joins work.&amp;nbsp; Even if you know how joins work it
is still nice to see it in visual form.&lt;br&gt;
&lt;a href="http://www.codinghorror.com/blog/archives/000976.html"&gt;
&lt;br&gt;
Click here to see the joins.&lt;/a&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=533c1aa3-3ca7-4937-b930-8ff1b83d2095" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,533c1aa3-3ca7-4937-b930-8ff1b83d2095.aspx</comments>
      <category>Interesting Links;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=124900f7-ff10-4813-af32-f26288dc8ab1</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,124900f7-ff10-4813-af32-f26288dc8ab1.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,124900f7-ff10-4813-af32-f26288dc8ab1.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=124900f7-ff10-4813-af32-f26288dc8ab1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://weblogs.asp.net/lkempe/archive/2007/10/11/testing-your-google-adsense.aspx">Laurent
Kempé</a> writes:<br /><blockquote><p>
If you are developing a site containing <a href="http://www.google.com/adsense/" target="_blank">Google
Adsense</a> you might know that clicking on your own ad is not allowed.
</p><p>
To be able to test and click on your own ad and still follow <a href="https://www.google.com/adsense/support/bin/answer.py?answer=48182&amp;sourceid=aso&amp;subid=ww-ww-et-asui&amp;medium=link" target="_blank">Google
AdSense Program Policies</a>, just add following to your pages: 
</p><p><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">script</span><span style="color: rgb(255, 0, 0);">type</span>=<span style="color: rgb(0, 0, 255);">"text/javascript"</span><span style="color: rgb(0, 0, 255);">&gt;</span><strong>google_adtest</strong> =
'on';<span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">script</span><span style="color: rgb(0, 0, 255);">&gt;</span></p><p>
Don't forget to remove it on your production server! ;)
</p></blockquote><p>
That's cool! The biggest worry of any Google Adsense participant is getting dropped
from the program for clicking on your own links.<br /><span style="color: rgb(0, 0, 255);"></span></p><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=124900f7-ff10-4813-af32-f26288dc8ab1" /></body>
      <title>Click on your own Google Adsense links without breaking policy</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,124900f7-ff10-4813-af32-f26288dc8ab1.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/10/12/ClickOnYourOwnGoogleAdsenseLinksWithoutBreakingPolicy.aspx</link>
      <pubDate>Fri, 12 Oct 2007 00:15:08 GMT</pubDate>
      <description>&lt;a href="http://weblogs.asp.net/lkempe/archive/2007/10/11/testing-your-google-adsense.aspx"&gt;Laurent
Kempé&lt;/a&gt; writes:&lt;br&gt;
&lt;blockquote&gt;
&lt;p&gt;
If you are developing a site containing &lt;a href="http://www.google.com/adsense/" target="_blank"&gt;Google
Adsense&lt;/a&gt; you might know that clicking on your own ad is not allowed.
&lt;/p&gt;
&lt;p&gt;
To be able to test and click on your own ad and still follow &lt;a href="https://www.google.com/adsense/support/bin/answer.py?answer=48182&amp;amp;sourceid=aso&amp;amp;subid=ww-ww-et-asui&amp;amp;medium=link" target="_blank"&gt;Google
AdSense Program Policies&lt;/a&gt;, just add following to your pages: 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;script&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 255);"&gt;"text/javascript"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;strong&gt;google_adtest&lt;/strong&gt; =
'on';&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;script&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Don't forget to remove it on your production server! ;)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
That's cool! The biggest worry of any Google Adsense participant is getting dropped
from the program for clicking on your own links.&lt;br&gt;
&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=124900f7-ff10-4813-af32-f26288dc8ab1" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,124900f7-ff10-4813-af32-f26288dc8ab1.aspx</comments>
      <category>How-to;Interesting Links;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=938eb072-271d-43d6-b77e-2c6d3c8647de</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,938eb072-271d-43d6-b77e-2c6d3c8647de.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,938eb072-271d-43d6-b77e-2c6d3c8647de.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=938eb072-271d-43d6-b77e-2c6d3c8647de</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">We are working on a project at work that
has four developers working against the SVN repository in Visual Studio.NET 2005. 
The other day I had to create a new project in the solution.  I got it all set
up and committed the project into the repository using Ankh, great.  I started
to close down for the day and in explorer I noticed that there were still files that
were flagged that they needed to be committed.  Looking at it, it was the project
file that needed to be committed. So I right clicked and committed it with Tortoise. 
<br /><br />
Yesterday another developer was trying to checkout the repository to his computer
and they ran into an error trying to load the project I had committed.  I was
roughly told that it was my project file was missing.  They were able to work
around it because the project I committed wasn't needed to work on what they needed. 
So I took note of it and would look into it when I had a chance.<br /><br />
Fast forward to this morning.  Based on the feedback I had been given I went
into explorer to see if the project file was indeed the one that needed to be added
to the repository.  But it showed that it was already committed.  Hmm...so
I went to the developer and asked him to forward me the error messages he was getting
when updating.<br /><br />
Here was ankh's message:<br /><blockquote><code>NSvn.Core.SvnClientException:<br />
Failed to add file '[Path to file]\Web.config': object of the same name already exists<br />
at NSvn.Core.Client.Update(String[] paths, Revision revision, Recurse recurse, Boolean
ignoreExternals) in d:\tmp\build-2\src\nsvn.core\client.cpp:line 356<br />
at Ankh.Commands.UpdateItem.UpdateRunner.Work(IContext context) in D:\tmp\build-2\src\Ankh\Commands\UpdateItemCommand.cs:line
131<br />
at Ankh.ProgressRunner.Run() in D:\tmp\build-2\src\Ankh\ProgressRunner.cs:line 95 
<br /></code></blockquote>Same file conflict?  That didn't make any sense.  We
started speculating.  I run different a different version of Tortoise on my machine
then everyone else and thus my client version of Subversion is newer then the server
and everyone else.  But I've been running like this for weeks with no problems
up to this point.<br /><br />
I have the developer try checking out a project that only I worked on for another
client in the past couple of days.  He said he had no problems getting those
files.<br /><br />
He then went back and tried to update the original problem project from Tortoise and
pasted the errors he got:<br /><blockquote><code>Error: In directory '[Directory Path Specified]' 
<br />
Error: Can't copy '[Path Specified]\.svn\tmp\text-base\web.config.svn-base' to '[Path
specified]\web.config.tmp': The system cannot find the file specified.<br /></code></blockquote>I went and googled for "<code>Can't copy '': The system cannot
find the file specified." the results led me to this <a href="http://tortoisesvn.net/node/167">explaination</a>.<br /></code><blockquote><i>There are actually 2 different files in the repository whose
names differ only in case. This cannot work on a Windows checkout, because the Windows
file system is not case-sensitive. It is likely that one of the files got added by
mistake, so you need to find out which one, make sure there are no changes committed
to the wrong file, then delete it.</i><br /></blockquote><img src="http://www.damnralph.com/content/binary/case-sens-files.png" align="right" border="0" />I
went to our Trac site and looked at the source files and sure enough there was web.config
and Web.config files listed.  Going back to Visual Studio.Net and Explorer I
noticed that Visual Studio.NET had the Web.config and Explorer had the web.config.  
<br /><br />
Here is the solution I came up with, there's probably a better way of doing this and
I'd love to hear about them in the comments but this solution did work.  I made
a backup of the Web.config file and then I deleted the Web.config in VS.NET and committed
my changes. Looking in Trac again I see that I am down to just web.config in the repository. 
I figure at this point I can just update and use that single version of web.config
but I got the same error as above. 
<br /><br />
I close Visual Studio and open up Tortoises Repository Browser and I delete web.config.
I then delete the whole project folder out of explorer (you have to do this because
the svn folders have the web.config still listed in it's cache and you'll get the
same errors).  
<br /><br />
After the folder had been deleted I reopened Visual Studio.NET and opened the solution. 
After I updated the solution from the repository I added my backed up copy of web.config
(with the proper case that I am looking for) into the project and committed it. 
Everything now had the right case, Visual Studio, Explorer and trac (which is the
SVN Repository version).  
<br /><br />
I went to the other developers and after they committed all the work they were doing
they closed out of Visual Studio. Deleted the problem project folder in Explorer. 
Reopened the solution in VS and updated and refreshed the project with a now working
copy.<br /><br />
So make sure if you're working with a SVN client in Windows against a Linux based
SVN repository that you have the same case throughout or you'll need to fix it. 
And so far the only way to fix it is a manual process.<br /><br /><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=938eb072-271d-43d6-b77e-2c6d3c8647de" /></body>
      <title>Case sensitivity, SVN and Windows is a recipe for disaster</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,938eb072-271d-43d6-b77e-2c6d3c8647de.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/02/01/CaseSensitivitySVNAndWindowsIsARecipeForDisaster.aspx</link>
      <pubDate>Thu, 01 Feb 2007 17:33:59 GMT</pubDate>
      <description>We are working on a project at work that has four developers working against the SVN repository in Visual Studio.NET 2005.&amp;nbsp; The other day I had to create a new project in the solution.&amp;nbsp; I got it all set up and committed the project into the repository using Ankh, great.&amp;nbsp; I started to close down for the day and in explorer I noticed that there were still files that were flagged that they needed to be committed.&amp;nbsp; Looking at it, it was the project file that needed to be committed. So I right clicked and committed it with Tortoise. &lt;br&gt;
&lt;br&gt;
Yesterday another developer was trying to checkout the repository to his computer
and they ran into an error trying to load the project I had committed.&amp;nbsp; I was
roughly told that it was my project file was missing.&amp;nbsp; They were able to work
around it because the project I committed wasn't needed to work on what they needed.&amp;nbsp;
So I took note of it and would look into it when I had a chance.&lt;br&gt;
&lt;br&gt;
Fast forward to this morning.&amp;nbsp; Based on the feedback I had been given I went
into explorer to see if the project file was indeed the one that needed to be added
to the repository.&amp;nbsp; But it showed that it was already committed.&amp;nbsp; Hmm...so
I went to the developer and asked him to forward me the error messages he was getting
when updating.&lt;br&gt;
&lt;br&gt;
Here was ankh's message:&lt;br&gt;
&lt;blockquote&gt;&lt;code&gt;NSvn.Core.SvnClientException:&lt;br&gt;
Failed to add file '[Path to file]\Web.config': object of the same name already exists&lt;br&gt;
at NSvn.Core.Client.Update(String[] paths, Revision revision, Recurse recurse, Boolean
ignoreExternals) in d:\tmp\build-2\src\nsvn.core\client.cpp:line 356&lt;br&gt;
at Ankh.Commands.UpdateItem.UpdateRunner.Work(IContext context) in D:\tmp\build-2\src\Ankh\Commands\UpdateItemCommand.cs:line
131&lt;br&gt;
at Ankh.ProgressRunner.Run() in D:\tmp\build-2\src\Ankh\ProgressRunner.cs:line 95 
&lt;br&gt;
&lt;/code&gt;&lt;/blockquote&gt;Same file conflict?&amp;nbsp; That didn't make any sense.&amp;nbsp; We
started speculating.&amp;nbsp; I run different a different version of Tortoise on my machine
then everyone else and thus my client version of Subversion is newer then the server
and everyone else.&amp;nbsp; But I've been running like this for weeks with no problems
up to this point.&lt;br&gt;
&lt;br&gt;
I have the developer try checking out a project that only I worked on for another
client in the past couple of days.&amp;nbsp; He said he had no problems getting those
files.&lt;br&gt;
&lt;br&gt;
He then went back and tried to update the original problem project from Tortoise and
pasted the errors he got:&lt;br&gt;
&lt;blockquote&gt;&lt;code&gt;Error: In directory '[Directory Path Specified]' 
&lt;br&gt;
Error: Can't copy '[Path Specified]\.svn\tmp\text-base\web.config.svn-base' to '[Path
specified]\web.config.tmp': The system cannot find the file specified.&lt;br&gt;
&lt;/code&gt;&lt;/blockquote&gt;I went and googled for "&lt;code&gt;Can't copy '': The system cannot
find the file specified." the results led me to this &lt;a href="http://tortoisesvn.net/node/167"&gt;explaination&lt;/a&gt;.&lt;br&gt;
&lt;/code&gt;&lt;blockquote&gt;&lt;i&gt;There are actually 2 different files in the repository whose
names differ only in case. This cannot work on a Windows checkout, because the Windows
file system is not case-sensitive. It is likely that one of the files got added by
mistake, so you need to find out which one, make sure there are no changes committed
to the wrong file, then delete it.&lt;/i&gt;
&lt;br&gt;
&lt;/blockquote&gt;&lt;img src="http://www.damnralph.com/content/binary/case-sens-files.png" align="right" border="0"&gt;I
went to our Trac site and looked at the source files and sure enough there was web.config
and Web.config files listed.&amp;nbsp; Going back to Visual Studio.Net and Explorer I
noticed that Visual Studio.NET had the Web.config and Explorer had the web.config.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
Here is the solution I came up with, there's probably a better way of doing this and
I'd love to hear about them in the comments but this solution did work.&amp;nbsp; I made
a backup of the Web.config file and then I deleted the Web.config in VS.NET and committed
my changes. Looking in Trac again I see that I am down to just web.config in the repository.&amp;nbsp;
I figure at this point I can just update and use that single version of web.config
but I got the same error as above. 
&lt;br&gt;
&lt;br&gt;
I close Visual Studio and open up Tortoises Repository Browser and I delete web.config.
I then delete the whole project folder out of explorer (you have to do this because
the svn folders have the web.config still listed in it's cache and you'll get the
same errors).&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
After the folder had been deleted I reopened Visual Studio.NET and opened the solution.&amp;nbsp;
After I updated the solution from the repository I added my backed up copy of web.config
(with the proper case that I am looking for) into the project and committed it.&amp;nbsp;
Everything now had the right case, Visual Studio, Explorer and trac (which is the
SVN Repository version).&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
I went to the other developers and after they committed all the work they were doing
they closed out of Visual Studio. Deleted the problem project folder in Explorer.&amp;nbsp;
Reopened the solution in VS and updated and refreshed the project with a now working
copy.&lt;br&gt;
&lt;br&gt;
So make sure if you're working with a SVN client in Windows against a Linux based
SVN repository that you have the same case throughout or you'll need to fix it.&amp;nbsp;
And so far the only way to fix it is a manual process.&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=938eb072-271d-43d6-b77e-2c6d3c8647de" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,938eb072-271d-43d6-b77e-2c6d3c8647de.aspx</comments>
      <category>Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=1a2962ee-0ead-45bf-8f16-8542731f7ecd</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,1a2962ee-0ead-45bf-8f16-8542731f7ecd.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,1a2962ee-0ead-45bf-8f16-8542731f7ecd.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1a2962ee-0ead-45bf-8f16-8542731f7ecd</wfw:commentRss>
      <title>Redesigned BrandLogic.com Launches</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,1a2962ee-0ead-45bf-8f16-8542731f7ecd.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/01/27/RedesignedBrandLogiccomLaunches.aspx</link>
      <pubDate>Sat, 27 Jan 2007 18:54:04 GMT</pubDate>
      <description>We've spent quite sometime recently getting &lt;a href="http://www.brandlogic.com"&gt;BrandLogic.com&lt;/a&gt; ported
over to our &lt;a href="http://www.brandensemble.com"&gt;BrandEnsemble&lt;/a&gt; product. It's
pretty exciting to actually have our website using our product. Before we did it in
JSP because it was a great selling feature for some companies that we were multi talented
(which we are by the way). 
&lt;br&gt;
&lt;br&gt;
I think though that we were never really proud of our site before. But now, I think
this is the best version of our website, and we are really proud of going live with
it. 
&lt;br&gt;
&lt;br&gt;
It runs on ASP.NET 1.1 and SQL Server 2000. It runs on our BrandLogic BrandEnsemble
Content Management System. 
&lt;br&gt;
&lt;br&gt;
Here are some screen shots of the site (click to enlarge).&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;a href="http://ralphwhitbeck.com/content/binary/bl-home.jpg" target="_new"&gt;&lt;img src="http://ralphwhitbeck.com/content/binary/bl-home_thumb.jpg" border="0"&gt;&lt;/a&gt; &lt;a href="http://ralphwhitbeck.com/content/binary/bl-case.jpg" target="_new"&gt;&lt;img src="http://ralphwhitbeck.com/content/binary/bl-case_thumb.jpg" border="0"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
And some of our admin tools which our CEO states are "&lt;i&gt;the best admin tools I have
ever seen.&lt;/i&gt;"&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;a href="http://ralphwhitbeck.com/content/binary/bl-admin-edit.jpg" target="_new"&gt;&lt;img src="http://ralphwhitbeck.com/content/binary/bl-admin-edit_thumb.jpg" border="0"&gt;&lt;/a&gt; &lt;a href="http://ralphwhitbeck.com/content/binary/bl-version.jpg" target="_new"&gt;&lt;img src="http://ralphwhitbeck.com/content/binary/bl-version_thumb.jpg" border="0"&gt;&lt;/a&gt; &lt;a href="http://ralphwhitbeck.com/content/binary/bl_groupview.jpg" target="_new"&gt;&lt;img src="http://ralphwhitbeck.com/content/binary/bl_groupview_thumb.jpg" border="0"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
These shots show how our pages can be edited inline so you get a feel for what the
page will look like before you're ready to publish, version control history of a page
with the ability to revert a page back to a previous version and how a typical view
of a group (our terminology of a directory) looks within the system.&lt;br&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;i&gt;BrandEnsemble&lt;/i&gt; has been used in many of our clients sites as well:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.stjohns.edu/"&gt;St. John's University&lt;/a&gt; (&lt;a href="http://www.brandlogic.com/experience/case_studies/st_johns_university_web.be"&gt;Case
study&lt;/a&gt;)&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.redstormsports.com"&gt;Red Storm Sports&lt;/a&gt; (St. John's Athletics
Web site)&lt;/li&gt;
&lt;li&gt;
Image Manager (&lt;a href="http://www.brandlogic.com/experience/case_studies/st_johns_university_thousands_of_pictures_at_st_jo.be"&gt;Case
study&lt;/a&gt;)&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;a href="http://www.careerspace.com/"&gt;CareerSpace&lt;/a&gt; (&lt;a href="http://www.brandlogic.com/experience/case_studies/career_space.be"&gt;Case
study&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
Rockwell Collins (&lt;a href="http://www.brandlogic.com/experience/case_studies/rockwell_collins.be"&gt;Intranet
Brand Identity site&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
Bausch &amp; Lomb (&lt;a href="http://www.brandlogic.com/experience/case_studies/bausch.be"&gt;Intranet
Brand Identity site&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
Texaco (&lt;a href="http://www.brandlogic.com/experience/case_studies/texaco_creating_brand_champions.be"&gt;Intranet
Brand Identity site&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
Wyeth (&lt;a href="http://www.brandlogic.com/experience/case_studies/wyeth_american_home_products_becomes_wyeth.be"&gt;Intranet
Brand Identity site&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
Of course &lt;i&gt;BrandEnsemble&lt;/i&gt; is only a piece of the overall branding puzzle that
BrandLogic services offer to clients. &lt;i&gt;BrandEnsemble&lt;/i&gt; is what I am close to as
I have contributed to it's development over these past eight years.&lt;br&gt;
&lt;br&gt;
Here are some of BrandLogics other services we offer:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.brandlogic.com/practices/brand_strategy_research"&gt;Brand Strategy/Research&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.brandlogic.com/practices/brand_design"&gt;Brand Design&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.brandlogic.com/practices/brand_implementation"&gt;Brand Implementation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.brandlogic.com/practices/brand_management"&gt;Brand Management&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
And &lt;a href="http://www.brandlogic.com/experience"&gt;who we did it for&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Feel free to &lt;a href="http://www.brandlogic.com/contact.be"&gt;contact BrandLogic&lt;/a&gt; for
your branding needs.&lt;br&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=1a2962ee-0ead-45bf-8f16-8542731f7ecd" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,1a2962ee-0ead-45bf-8f16-8542731f7ecd.aspx</comments>
      <category>Interesting Links;Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=21dfaa49-bdda-49ad-88e6-c7810109a4d4</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,21dfaa49-bdda-49ad-88e6-c7810109a4d4.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,21dfaa49-bdda-49ad-88e6-c7810109a4d4.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=21dfaa49-bdda-49ad-88e6-c7810109a4d4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Where is the future heading with web programming/technologies? 
I have considered myself Microsoft programmer since I graduated college.  I learned
Classic ASP on the job, eventually I learned ASP.NET with VB.NET first then realized
the power of C#.  I love C# I really do.  It makes programming a complex
web site simple and straight forward.<br /><br />
We at <a href="http://www.brandlogic.com">BrandLogic</a> would of never been able
to program a complete CMS system for <a href="http://www.stjohns.edu">St. John's University</a> in
3 weeks if it had not been for the robust framework that .NET offers.  Hell I
am still to this day maintaining that code.<br /><br />
We've taken that code base and improved upon it and created the <a href="http://www.brandensemble.com/">BrandEnsemble</a> suite
out of it.  Many clients are enjoying the benefits of the ease of programming
C# provided us to be able to make a robust versioned CMS system.<br /><br />
So why do I feel uneasy?  Why do I feel like I am going down the wrong path?<br /><br />
It might be because ASP.NET 2.0 and Visual Studio.NET 2005 doesn't excite me like
VS.NET 2003 did.  It doesn't excite me like the promise of what Ruby on Rails
can provide. 
<br /><br />
But I think the most important part is it doesn't wow me in the wallet.  As a
freelance web developer paying $1000 for a copy of Visual Studio.NET is a huge chunk
of my annual freelance salary.  So upgrading to the next release isn't on the
top of my lists of things to do right away.  Plus there is the cost of SQL Server,
Windows, etc. etc. Basically I need a MSDN subscription.  What are they up to
now?  $3000?  I stopped caring, I guess, the last time I looked at the new
MSDN offerings and I thought I needed a lawyer to explain it to me.<br /><br />
So that brings me back to my original question: Where is the future?  Lately,
I have been seriously thinking that the future, as is the present, is in open source
software and the technologies that support it, programming languages like PHP and
Ruby on Rails (there is a reason why they are so popular now).  If you own a
PC (and if you don't save a paycheck and go out and get a barebones computer) everything
else is free, free as in beer.  
<br /><br />
So you got an idea for a cool web site? Get a computer, download a linux distro for
your operating system, install the packages you need, get programming IDE's for PHP
or Ruby free off of sites like SourceForge.  Get a Enterprise level database
like MySql or Postgres free again by downloading it off the internet.  Download
TheGimp for image processing.  Bam! You're up and running on the simple cost
of the hardware.  And best of all your legal too!  Plus there is a community
of starving programmer that are on the web willing to help you out.<br /><br /><b>But PHP is Old</b><br /><br />
Yeah, PHP has been around a long long time, but it's robust and again it's free. 
And as I've highlighted before, <a href="http://www.damnralph.com/2006/12/01/ChrisPirilloDiscussesNewPublishingPlatform.aspx">Chris
Prillio nailed it on the head</a> once when he was stating the reasons why he was
using PHP on his CMS Publishing project: PHP is prevailant on most if not all hosts
that are out there right now.  So make a PHP site and chances are the majority
of webmasters can install your software on their site.   Try to do that
with an ASP.NET site with a SQL Server 2000 backend.<br /><br />
If you look around Silicon Valley now most Web 2.0 companies are using LAMP 
(<font size="-1">Linux + Apache + MySQL + PHP) partly due to the low cost in a market
where the revenue stream is still up in the air for most.  But they need the
appeal of the masses to get the word out. 
<br /><br /><a href="http://scobleizer.com/2007/01/18/calling-jonathan-schwartz/">Scoble said
something tonight</a> that got me to write this post tonight, even though I been thinking
it for the past couple of weeks.  He said, "</font><i>LAMP is sure getting traction
— I’ve stopped asking entrepreneurs what infrastructure they are using since the answer
was so consistently LAMP.</i>"<br /><br />
A couple of days ago I saw a <a href="http://www.techcrunch.com/2007/01/17/commercial-break-for-our-sponsors/">sponsor
on TechCrunch</a> post <a href="http://207.218.248.46/">job listings for web developers/designers</a> and
it got me thinking if I all of a sudden found myself out in the mix again fighting
for a job, I think my resume would fall to the bottom of the pile for most places
that I think I would find fun to work at (although I have a family, which means the
fun places are too risky for me).  My resume is very impressive I think. 
My strengths are meeting the needs of our clients in a productive and efficient manner,
providing the best customer service and experience with our clients, maintaining a
long lasting and trusting relationship with our clients (in the 8 years I've worked
at BrandLogic I can probably count the number of clients I've worked with on my one
hand, not because we don't get clients but because I help maintain the longest lasting
clients.  Which I think is a testiment of the quality of service I as well as
the rest of the team provide.)  And last but not least are my Microsoft skills. 
Which in my opinion is a technology that is becoming more and more obsolete.<br /><br />
I guess I'll add a new resolution to the New Year.  Learn Web 2.0 technologies!<br /><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=21dfaa49-bdda-49ad-88e6-c7810109a4d4" /></body>
      <title>What does the future hold?</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,21dfaa49-bdda-49ad-88e6-c7810109a4d4.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/01/19/WhatDoesTheFutureHold.aspx</link>
      <pubDate>Fri, 19 Jan 2007 05:04:45 GMT</pubDate>
      <description>Where is the future heading with web programming/technologies?&amp;nbsp; I have considered myself Microsoft programmer since I graduated college.&amp;nbsp; I learned Classic ASP on the job, eventually I learned ASP.NET with VB.NET first then realized the power of C#.&amp;nbsp; I love C# I really do.&amp;nbsp; It makes programming a complex web site simple and straight forward.&lt;br&gt;
&lt;br&gt;
We at &lt;a href="http://www.brandlogic.com"&gt;BrandLogic&lt;/a&gt; would of never been able
to program a complete CMS system for &lt;a href="http://www.stjohns.edu"&gt;St. John's University&lt;/a&gt; in
3 weeks if it had not been for the robust framework that .NET offers.&amp;nbsp; Hell I
am still to this day maintaining that code.&lt;br&gt;
&lt;br&gt;
We've taken that code base and improved upon it and created the &lt;a href="http://www.brandensemble.com/"&gt;BrandEnsemble&lt;/a&gt; suite
out of it.&amp;nbsp; Many clients are enjoying the benefits of the ease of programming
C# provided us to be able to make a robust versioned CMS system.&lt;br&gt;
&lt;br&gt;
So why do I feel uneasy?&amp;nbsp; Why do I feel like I am going down the wrong path?&lt;br&gt;
&lt;br&gt;
It might be because ASP.NET 2.0 and Visual Studio.NET 2005 doesn't excite me like
VS.NET 2003 did.&amp;nbsp; It doesn't excite me like the promise of what Ruby on Rails
can provide. 
&lt;br&gt;
&lt;br&gt;
But I think the most important part is it doesn't wow me in the wallet.&amp;nbsp; As a
freelance web developer paying $1000 for a copy of Visual Studio.NET is a huge chunk
of my annual freelance salary.&amp;nbsp; So upgrading to the next release isn't on the
top of my lists of things to do right away.&amp;nbsp; Plus there is the cost of SQL Server,
Windows, etc. etc. Basically I need a MSDN subscription.&amp;nbsp; What are they up to
now?&amp;nbsp; $3000?&amp;nbsp; I stopped caring, I guess, the last time I looked at the new
MSDN offerings and I thought I needed a lawyer to explain it to me.&lt;br&gt;
&lt;br&gt;
So that brings me back to my original question: Where is the future?&amp;nbsp; Lately,
I have been seriously thinking that the future, as is the present, is in open source
software and the technologies that support it, programming languages like PHP and
Ruby on Rails (there is a reason why they are so popular now).&amp;nbsp; If you own a
PC (and if you don't save a paycheck and go out and get a barebones computer) everything
else is free, free as in beer.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
So you got an idea for a cool web site? Get a computer, download a linux distro for
your operating system, install the packages you need, get programming IDE's for PHP
or Ruby free off of sites like SourceForge.&amp;nbsp; Get a Enterprise level database
like MySql or Postgres free again by downloading it off the internet.&amp;nbsp; Download
TheGimp for image processing.&amp;nbsp; Bam! You're up and running on the simple cost
of the hardware.&amp;nbsp; And best of all your legal too!&amp;nbsp; Plus there is a community
of starving programmer that are on the web willing to help you out.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;But PHP is Old&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
Yeah, PHP has been around a long long time, but it's robust and again it's free.&amp;nbsp;
And as I've highlighted before, &lt;a href="http://www.damnralph.com/2006/12/01/ChrisPirilloDiscussesNewPublishingPlatform.aspx"&gt;Chris
Prillio nailed it on the head&lt;/a&gt; once when he was stating the reasons why he was
using PHP on his CMS Publishing project: PHP is prevailant on most if not all hosts
that are out there right now.&amp;nbsp; So make a PHP site and chances are the majority
of webmasters can install your software on their site.&amp;nbsp;&amp;nbsp; Try to do that
with an ASP.NET site with a SQL Server 2000 backend.&lt;br&gt;
&lt;br&gt;
If you look around Silicon Valley now most Web 2.0 companies are using LAMP&amp;nbsp;
(&lt;font size="-1"&gt;Linux + Apache + MySQL + PHP) partly due to the low cost in a market
where the revenue stream is still up in the air for most.&amp;nbsp; But they need the
appeal of the masses to get the word out. 
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://scobleizer.com/2007/01/18/calling-jonathan-schwartz/"&gt;Scoble said
something tonight&lt;/a&gt; that got me to write this post tonight, even though I been thinking
it for the past couple of weeks.&amp;nbsp; He said, "&lt;/font&gt;&lt;i&gt;LAMP is sure getting traction
— I’ve stopped asking entrepreneurs what infrastructure they are using since the answer
was so consistently LAMP.&lt;/i&gt;"&lt;br&gt;
&lt;br&gt;
A couple of days ago I saw a &lt;a href="http://www.techcrunch.com/2007/01/17/commercial-break-for-our-sponsors/"&gt;sponsor
on TechCrunch&lt;/a&gt; post &lt;a href="http://207.218.248.46/"&gt;job listings for web developers/designers&lt;/a&gt; and
it got me thinking if I all of a sudden found myself out in the mix again fighting
for a job, I think my resume would fall to the bottom of the pile for most places
that I think I would find fun to work at (although I have a family, which means the
fun places are too risky for me).&amp;nbsp; My resume is very impressive I think.&amp;nbsp;
My strengths are meeting the needs of our clients in a productive and efficient manner,
providing the best customer service and experience with our clients, maintaining a
long lasting and trusting relationship with our clients (in the 8 years I've worked
at BrandLogic I can probably count the number of clients I've worked with on my one
hand, not because we don't get clients but because I help maintain the longest lasting
clients.&amp;nbsp; Which I think is a testiment of the quality of service I as well as
the rest of the team provide.)&amp;nbsp; And last but not least are my Microsoft skills.&amp;nbsp;
Which in my opinion is a technology that is becoming more and more obsolete.&lt;br&gt;
&lt;br&gt;
I guess I'll add a new resolution to the New Year.&amp;nbsp; Learn Web 2.0 technologies!&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=21dfaa49-bdda-49ad-88e6-c7810109a4d4" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,21dfaa49-bdda-49ad-88e6-c7810109a4d4.aspx</comments>
      <category>Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=9c15fe90-1ebb-498c-815c-4b01aaf06e9f</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,9c15fe90-1ebb-498c-815c-4b01aaf06e9f.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,9c15fe90-1ebb-498c-815c-4b01aaf06e9f.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9c15fe90-1ebb-498c-815c-4b01aaf06e9f</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">I spent most of this week figuring out
how to send out a HTML e-mail for our company.  I started thinking I could just
craft a HTML page and then send it out.  Well that's not the case at all. 
GMail was a huge pain in the butt.  It was striping tags left and right.<br /><br />
I found this <a href="http://www.onenw.org/toolkit/guidelines-for-css-and-email-newsletters/">page
from One NorthWest</a> with the do's and don'ts of HTML E-mail and CSS.<br /><br /><blockquote><b>The Don'ts</b><br /><ol><li>
Do not rely on <b>external</b> (&lt;link rel="stylesheet"&gt;) or <b>embedded</b> style
sheets (those contained within the <b>&lt;style&gt;</b> tag above the <b>&lt;body&gt;</b> tag).
This is the most important thing to avoid. Many email services cut everything above
the body tag and disable external style sheets.</li><li>
Don't use <b>javascript</b> in an email newsletter. Ever. There's no better way to
have your newsletter marked as spam.</li><li>
Don't use the <b>&lt;body&gt;</b> or <b>&lt;html&gt;</b> tag. Most email services
will ignore them. You can try putting your whole newsletter inside a <b>&lt;div&gt;</b> and
apply inline styles to it. Results may vary.</li></ol><b>The Do's</b><br /></blockquote><blockquote><ol><li><p>
Use tables. Lots of them. You're welcome to try <b>&lt;div&gt;</b> tags for positioning
and layout, but my research shows that tables are more consistently supported. C'mon
now. Get over your table-phobia.
</p></li><li><p>
Use inline styles liberally in tables. In fact, you'll find you can get the best millage
out of inline styles in <b>&lt;td&gt;</b> tags. That way you are setting up little
style regions within each table. Think of these inline styles as miniture style sheets.
This allows non-technical users to swap content in and out of pre-formatted cells
in a modular fashion.<br /></p></li><li><p>
Define the background color in a <b>td cell</b> or <b>table tag</b> with <b>bgcolor=</b>,
not the CSS style. This works in all email services I tested.
</p></li><li>
Test your newsletter by sending to yourself or colleagues. This will give you the
chance to catch any problems before your whole subscriber list does!</li></ol><b>Images</b><br /><ol><li><p>
Define background images using <b>background=</b> instead of the inline <b>background-image</b> call.
Gmail, among others, will ignore any <b>url() </b>attribute in an inline style. Keep
in mind, though that if the background image is ignored, the default color is going
to be white. Sooooo your white on black text will disappear! Don't do it! Stick with
text colors that are visible against a white background. 
<br /></p></li><li><p>
Don’t use images for important content like calls to action, headlines and links to
your web site. Outlook, Gmail and others turn images off until allowed by the user.
If your entire newsletter is graphical, all your recipients are going to see is a
lot of broken images.
</p></li><li><p>
Use <b>alt text</b> for all images. 
<br /></p></li><li><p>
Declare BOTH height AND width parameters for images. Poor old <b>Outlook Web Access</b> especially
needs this for your table layout to display properly.
</p></li></ol><br /></blockquote><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=9c15fe90-1ebb-498c-815c-4b01aaf06e9f" /></body>
      <title>Sending HTML E-Mails</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,9c15fe90-1ebb-498c-815c-4b01aaf06e9f.aspx</guid>
      <link>http://ralphwhitbeck.com/2007/01/06/SendingHTMLEMails.aspx</link>
      <pubDate>Sat, 06 Jan 2007 17:49:55 GMT</pubDate>
      <description>I spent most of this week figuring out how to send out a HTML e-mail for our company.&amp;nbsp; I started thinking I could just craft a HTML page and then send it out.&amp;nbsp; Well that's not the case at all.&amp;nbsp; GMail was a huge pain in the butt.&amp;nbsp; It was striping tags left and right.&lt;br&gt;
&lt;br&gt;
I found this &lt;a href="http://www.onenw.org/toolkit/guidelines-for-css-and-email-newsletters/"&gt;page
from One NorthWest&lt;/a&gt; with the do's and don'ts of HTML E-mail and CSS.&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;b&gt;The Don'ts&lt;/b&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
Do not rely on &lt;b&gt;external&lt;/b&gt; (&amp;lt;link rel="stylesheet"&amp;gt;) or &lt;b&gt;embedded&lt;/b&gt; style
sheets (those contained within the &lt;b&gt;&amp;lt;style&amp;gt;&lt;/b&gt; tag above the &lt;b&gt;&amp;lt;body&amp;gt;&lt;/b&gt; tag).
This is the most important thing to avoid. Many email services cut everything above
the body tag and disable external style sheets.&lt;/li&gt;
&lt;li&gt;
Don't use &lt;b&gt;javascript&lt;/b&gt; in an email newsletter. Ever. There's no better way to
have your newsletter marked as spam.&lt;/li&gt;
&lt;li&gt;
Don't use the &lt;b&gt;&amp;lt;body&amp;gt;&lt;/b&gt; or &lt;b&gt;&amp;lt;html&amp;gt;&lt;/b&gt; tag. Most email services
will ignore them. You can try putting your whole newsletter inside a &lt;b&gt;&amp;lt;div&amp;gt;&lt;/b&gt; and
apply inline styles to it. Results may vary.&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;The Do's&lt;/b&gt;
&lt;br&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Use tables. Lots of them. You're welcome to try &lt;b&gt;&amp;lt;div&amp;gt;&lt;/b&gt; tags for positioning
and layout, but my research shows that tables are more consistently supported. C'mon
now. Get over your table-phobia.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Use inline styles liberally in tables. In fact, you'll find you can get the best millage
out of inline styles in &lt;b&gt;&amp;lt;td&amp;gt;&lt;/b&gt; tags. That way you are setting up little
style regions within each table. Think of these inline styles as miniture style sheets.
This allows non-technical users to swap content in and out of pre-formatted cells
in a modular fashion.&lt;br&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Define the background color in a &lt;b&gt;td cell&lt;/b&gt; or &lt;b&gt;table tag&lt;/b&gt; with &lt;b&gt;bgcolor=&lt;/b&gt;,
not the CSS style. This works in all email services I tested.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
Test your newsletter by sending to yourself or colleagues. This will give you the
chance to catch any problems before your whole subscriber list does!&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;Images&lt;/b&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
Define background images using &lt;b&gt;background=&lt;/b&gt; instead of the inline &lt;b&gt;background-image&lt;/b&gt; call.
Gmail, among others, will ignore any &lt;b&gt;url() &lt;/b&gt;attribute in an inline style. Keep
in mind, though that if the background image is ignored, the default color is going
to be white. Sooooo your white on black text will disappear! Don't do it! Stick with
text colors that are visible against a white background. 
&lt;br&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Don’t use images for important content like calls to action, headlines and links to
your web site. Outlook, Gmail and others turn images off until allowed by the user.
If your entire newsletter is graphical, all your recipients are going to see is a
lot of broken images.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Use &lt;b&gt;alt text&lt;/b&gt; for all images. 
&lt;br&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Declare BOTH height AND width parameters for images. Poor old &lt;b&gt;Outlook Web Access&lt;/b&gt; especially
needs this for your table layout to display properly.
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=9c15fe90-1ebb-498c-815c-4b01aaf06e9f" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,9c15fe90-1ebb-498c-815c-4b01aaf06e9f.aspx</comments>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=bfe4a668-9a1c-48c5-9cf7-34cdd3c213f8</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,bfe4a668-9a1c-48c5-9cf7-34cdd3c213f8.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,bfe4a668-9a1c-48c5-9cf7-34cdd3c213f8.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bfe4a668-9a1c-48c5-9cf7-34cdd3c213f8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">The internet is abuzz today about Sun's
announcement to release Java to the open source community.  So what does this
mean?  Is it an admission from Sun that Java is a dying technology and this is
a ploy to get developers re-enthused about working with Java again?<br /><br />
"<i>Sun is hoping that this step will attract more developers, as well as extend the
lifespan of Java.</i>" -Slashdot.<br /><br />
It'll be interesting to see how this works out for them as this may force other companies
like Microsoft to open up more of their source in an attempt to drive participation
from the developer community.  Isn't that why Ruby on Rails is the hot language? 
Will we see Java on Rails in the near future?  
<br /><b><br />
Related Links:</b><br /><br /><a href="http://developers.slashdot.org/article.pl?sid=06/11/13/0724252&amp;from=rss">Sun
Open Sources Java Under GPL</a> (Slashdot)<br /><a href="http://scobleizer.com/2006/11/12/sun-to-opensource-java-and-gpl-it/">Sun
to Opensource Java and GPL it</a> (Scoble)<br /><a href="http://www.digg.com/programming/Sun_to_Open_Source_Java_Under_GPL_v2">Sun
to Open-Source Java Under GPL v2</a> (digg)<br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=bfe4a668-9a1c-48c5-9cf7-34cdd3c213f8" /></body>
      <title>Today's Big News: Sun to release Java under the GPLv2</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,bfe4a668-9a1c-48c5-9cf7-34cdd3c213f8.aspx</guid>
      <link>http://ralphwhitbeck.com/2006/11/13/TodaysBigNewsSunToReleaseJavaUnderTheGPLv2.aspx</link>
      <pubDate>Mon, 13 Nov 2006 15:44:16 GMT</pubDate>
      <description>The internet is abuzz today about Sun's announcement to release Java to the open source community.&amp;nbsp; So what does this mean?&amp;nbsp; Is it an admission from Sun that Java is a dying technology and this is a ploy to get developers re-enthused about working with Java again?&lt;br&gt;
&lt;br&gt;
"&lt;i&gt;Sun is hoping that this step will attract more developers, as well as extend the
lifespan of Java.&lt;/i&gt;" -Slashdot.&lt;br&gt;
&lt;br&gt;
It'll be interesting to see how this works out for them as this may force other companies
like Microsoft to open up more of their source in an attempt to drive participation
from the developer community.&amp;nbsp; Isn't that why Ruby on Rails is the hot language?&amp;nbsp;
Will we see Java on Rails in the near future?&amp;nbsp; 
&lt;br&gt;
&lt;b&gt;
&lt;br&gt;
Related Links:&lt;/b&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href="http://developers.slashdot.org/article.pl?sid=06/11/13/0724252&amp;amp;from=rss"&gt;Sun
Open Sources Java Under GPL&lt;/a&gt; (Slashdot)&lt;br&gt;
&lt;a href="http://scobleizer.com/2006/11/12/sun-to-opensource-java-and-gpl-it/"&gt;Sun
to Opensource Java and GPL it&lt;/a&gt; (Scoble)&lt;br&gt;
&lt;a href="http://www.digg.com/programming/Sun_to_Open_Source_Java_Under_GPL_v2"&gt;Sun
to Open-Source Java Under GPL v2&lt;/a&gt; (digg)&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=bfe4a668-9a1c-48c5-9cf7-34cdd3c213f8" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,bfe4a668-9a1c-48c5-9cf7-34cdd3c213f8.aspx</comments>
      <category>Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=2daec402-e26c-4d6a-bbb3-d7dececa64b3</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,2daec402-e26c-4d6a-bbb3-d7dececa64b3.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,2daec402-e26c-4d6a-bbb3-d7dececa64b3.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2daec402-e26c-4d6a-bbb3-d7dececa64b3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Here is a <a href="http://magnetiq.com/2006/08/27/using-less-images">simple
and elegant solution</a> to doing image rollovers using one image and css to position
the image to the rollover state.<br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=2daec402-e26c-4d6a-bbb3-d7dececa64b3" /></body>
      <title>A Slick CSS Solution to Image Rollovers</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,2daec402-e26c-4d6a-bbb3-d7dececa64b3.aspx</guid>
      <link>http://ralphwhitbeck.com/2006/10/08/ASlickCSSSolutionToImageRollovers.aspx</link>
      <pubDate>Sun, 08 Oct 2006 17:27:42 GMT</pubDate>
      <description>Here is a &lt;a href="http://magnetiq.com/2006/08/27/using-less-images"&gt;simple and elegant
solution&lt;/a&gt; to doing image rollovers using one image and css to position the image
to the rollover state.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=2daec402-e26c-4d6a-bbb3-d7dececa64b3" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,2daec402-e26c-4d6a-bbb3-d7dececa64b3.aspx</comments>
      <category>Interesting Links;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=8c9f836d-3d3e-4f2e-9138-f258fa1582b1</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,8c9f836d-3d3e-4f2e-9138-f258fa1582b1.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,8c9f836d-3d3e-4f2e-9138-f258fa1582b1.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8c9f836d-3d3e-4f2e-9138-f258fa1582b1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">When I load up a web project in VS.NET
now that I have Subversion installed I get this dialog box that says:<br /><blockquote><i>Refreshing the project failed. Unable to retrieve folder information
from the server.</i><br /></blockquote>Thankfully this isn't a real problem just a nuisance as after you click
ok (the only choice given) the project loads just fine.<br /><br />
So what's going on?<br /><br />
Well a bug is happening.  VS.NET refuses to read/load directory names that start
with a "." and guess what new directory in my web project now starts with a "."? 
.svn<br /><br />
I do not have VS.NET SP1 installed yet...I'll install that tomorrow and let you know
if it contains a fix for this particular issue.  But digging around the net Microsoft
has known about this issue back in 2003 when people first started to complain about
it.<br /><br /><b>Update (1/30/2007):</b> I see alot of people finding this post via google having
the same error above.  I found a better way around this.  So instead of
starting a new post I'll just add it here.<br /><br />
You can set up Subversion to use _svn instrad of .svn here's how, if you set an environment
path variable SVN_ASP_DOT_NET_HACK to true and then restart your computer (you must
restart to have tools like Tortoise and Ankh recognize the _svn folder).  You
will need to recheck out your repository and then VS.NET 2003 will work as expected
with no error messages.   The problem lies in VS.NET 2003 only 2005 will
read .svn folders fine.  But the good thing is 2005 will also run _svn folders
with no problems.  
<br /><br />
So rule of thumb if your on windows and using Subversion with any version of VS.NET
just add the path variable.  Also very important...make sure you commit everything
before you do the variable cause you won't be able to after it's added, you'll have
to undo the variable and commit and then add the variable back.<br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=8c9f836d-3d3e-4f2e-9138-f258fa1582b1" /></body>
      <title>New Dialog box in VS.NET 2003</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,8c9f836d-3d3e-4f2e-9138-f258fa1582b1.aspx</guid>
      <link>http://ralphwhitbeck.com/2006/09/13/NewDialogBoxInVSNET2003.aspx</link>
      <pubDate>Wed, 13 Sep 2006 01:57:20 GMT</pubDate>
      <description>When I load up a web project in VS.NET now that I have Subversion installed I get this dialog box that says:&lt;br&gt;
&lt;blockquote&gt;&lt;i&gt;Refreshing the project failed. Unable to retrieve folder information
from the server.&lt;/i&gt;
&lt;br&gt;
&lt;/blockquote&gt;Thankfully this isn't a real problem just a nuisance as after you click
ok (the only choice given) the project loads just fine.&lt;br&gt;
&lt;br&gt;
So what's going on?&lt;br&gt;
&lt;br&gt;
Well a bug is happening.&amp;nbsp; VS.NET refuses to read/load directory names that start
with a "." and guess what new directory in my web project now starts with a "."?&amp;nbsp;
.svn&lt;br&gt;
&lt;br&gt;
I do not have VS.NET SP1 installed yet...I'll install that tomorrow and let you know
if it contains a fix for this particular issue.&amp;nbsp; But digging around the net Microsoft
has known about this issue back in 2003 when people first started to complain about
it.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Update (1/30/2007):&lt;/b&gt; I see alot of people finding this post via google having
the same error above.&amp;nbsp; I found a better way around this.&amp;nbsp; So instead of
starting a new post I'll just add it here.&lt;br&gt;
&lt;br&gt;
You can set up Subversion to use _svn instrad of .svn here's how, if you set an environment
path variable SVN_ASP_DOT_NET_HACK to true and then restart your computer (you must
restart to have tools like Tortoise and Ankh recognize the _svn folder).&amp;nbsp; You
will need to recheck out your repository and then VS.NET 2003 will work as expected
with no error messages.&amp;nbsp;&amp;nbsp; The problem lies in VS.NET 2003 only 2005 will
read .svn folders fine.&amp;nbsp; But the good thing is 2005 will also run _svn folders
with no problems.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
So rule of thumb if your on windows and using Subversion with any version of VS.NET
just add the path variable.&amp;nbsp; Also very important...make sure you commit everything
before you do the variable cause you won't be able to after it's added, you'll have
to undo the variable and commit and then add the variable back.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=8c9f836d-3d3e-4f2e-9138-f258fa1582b1" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,8c9f836d-3d3e-4f2e-9138-f258fa1582b1.aspx</comments>
      <category>Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=11897c9c-737d-452c-9cdc-64b0b61494b1</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,11897c9c-737d-452c-9cdc-64b0b61494b1.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,11897c9c-737d-452c-9cdc-64b0b61494b1.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=11897c9c-737d-452c-9cdc-64b0b61494b1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">At work we started exploring using SVN
for source control with Visual Studio as Visual Source Safe is still living in 1999
and Visual Studio 2005 doesn't seem to be anymore promising (Jeff Atwood recommends
"<a href="http://www.codinghorror.com/blog/archives/000660.html">Anything but SourceSafe</a>").  <a href="http://ankhsvn.tigris.org/">AnkhSVN</a> was
made to integrate with Visual Studio but wasn't the easiest to set-up...<a href="http://www.hanselman.com/blog/AnkhSVNUsingSubversionWithinVisualStudio.aspx">Scott
Hanselman</a> says there is a new version out but it's still in Release Candidate
and requires you to upgrade to a release candidate version of subversion too. 
<br /><br />
Anyway with SVN being open source I was looking at setting up a version control solution
for my personal projects.<br /><br /><a href="http://www.lifehacker.com">Lifehacker</a> recently ran a two part series
(<a href="http://www.lifehacker.com/software/top/hack-attack-how-to-set-up-a-personal-home-subversion-server-188582.php">part
1</a>, <a href="http://www.lifehacker.com/software/top/hack-attack-using-subversion-with-tortoisesvn-192367.php">part
2</a>) in it's weekly Hack Attack column about setting up Subversion and TortoiseSVN
for Windows.  It also includes an optional Apache install to access files from
other computers.<br /><br />
I followed the Lifehacker articles and installed <a href="http://subversion.tigris.org/">Subversion</a> and <a href="http://tortoisesvn.sourceforge.net/downloads">TortoiseSVN</a> and
created a couple of repositories for projects I am working on. I elected to skip the
Apache install on my machine as I only develop from my laptop.<br /><br />
I'll tell you that it already saved my butt once this weekend...in a rare act of stupidity
(OK it really wasn't that rare) I copied files into the wrong directory...it only
overwrote one file.  But with version control I just right clicked on the file
and hit revert and pulled up the original file I overwrote...without source control
I would of had to recreate that file.<br /><br />
I still need to figure out a backup solution that is easy and unobtrusive.  I
am thinking about one of those one-click backup external hard-drives.  Maybe
for my birthday ;)<br /><br /><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=11897c9c-737d-452c-9cdc-64b0b61494b1" /></body>
      <title>SVN Source Control in Windows</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,11897c9c-737d-452c-9cdc-64b0b61494b1.aspx</guid>
      <link>http://ralphwhitbeck.com/2006/08/21/SVNSourceControlInWindows.aspx</link>
      <pubDate>Mon, 21 Aug 2006 16:03:48 GMT</pubDate>
      <description>At work we started exploring using SVN for source control with Visual Studio as Visual Source Safe is still living in 1999 and Visual Studio 2005 doesn't seem to be anymore promising (Jeff Atwood recommends "&lt;a href="http://www.codinghorror.com/blog/archives/000660.html"&gt;Anything
but SourceSafe&lt;/a&gt;").&amp;nbsp; &lt;a href="http://ankhsvn.tigris.org/"&gt;AnkhSVN&lt;/a&gt; was made
to integrate with Visual Studio but wasn't the easiest to set-up...&lt;a href="http://www.hanselman.com/blog/AnkhSVNUsingSubversionWithinVisualStudio.aspx"&gt;Scott
Hanselman&lt;/a&gt; says there is a new version out but it's still in Release Candidate
and requires you to upgrade to a release candidate version of subversion too. 
&lt;br&gt;
&lt;br&gt;
Anyway with SVN being open source I was looking at setting up a version control solution
for my personal projects.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.lifehacker.com"&gt;Lifehacker&lt;/a&gt; recently ran a two part series
(&lt;a href="http://www.lifehacker.com/software/top/hack-attack-how-to-set-up-a-personal-home-subversion-server-188582.php"&gt;part
1&lt;/a&gt;, &lt;a href="http://www.lifehacker.com/software/top/hack-attack-using-subversion-with-tortoisesvn-192367.php"&gt;part
2&lt;/a&gt;) in it's weekly Hack Attack column about setting up Subversion and TortoiseSVN
for Windows.&amp;nbsp; It also includes an optional Apache install to access files from
other computers.&lt;br&gt;
&lt;br&gt;
I followed the Lifehacker articles and installed &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; and &lt;a href="http://tortoisesvn.sourceforge.net/downloads"&gt;TortoiseSVN&lt;/a&gt; and
created a couple of repositories for projects I am working on. I elected to skip the
Apache install on my machine as I only develop from my laptop.&lt;br&gt;
&lt;br&gt;
I'll tell you that it already saved my butt once this weekend...in a rare act of stupidity
(OK it really wasn't that rare) I copied files into the wrong directory...it only
overwrote one file.&amp;nbsp; But with version control I just right clicked on the file
and hit revert and pulled up the original file I overwrote...without source control
I would of had to recreate that file.&lt;br&gt;
&lt;br&gt;
I still need to figure out a backup solution that is easy and unobtrusive.&amp;nbsp; I
am thinking about one of those one-click backup external hard-drives.&amp;nbsp; Maybe
for my birthday ;)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=11897c9c-737d-452c-9cdc-64b0b61494b1" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,11897c9c-737d-452c-9cdc-64b0b61494b1.aspx</comments>
      <category>Interesting Links;Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=bf24f29e-6a4b-4911-80dd-88b01a6a47db</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,bf24f29e-6a4b-4911-80dd-88b01a6a47db.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,bf24f29e-6a4b-4911-80dd-88b01a6a47db.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bf24f29e-6a4b-4911-80dd-88b01a6a47db</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">Me on <a href="http://jquery.com/blog/2006/08/02/jquery-suckerfish-menu/">jQuery's
blog</a><br /><br /><blockquote><p>
I think we all have heard of or used <a title="A List Apart - Suckerfish Menu's" href="http://alistapart.com/articles/dropdowns/">Suckerfish
CSS Menu's</a> before, written by Pattrick Griffiths and Dan Webb for <a title="A List Apart" href="http://alistapart.com/">A
List Apart</a>. If not, it's a cool way to make drop down menu's using standards based
semantic HTML and CSS. Unfortunately, with IE still dominating the browser marketplace
we still need a way to handle the hover state in IE. To do that we need a little bit
of JavaScript to attach mouseover and mouseout events to HTML elements.
</p><p>
Myles Angell decided to <a title="jQuery Suckerfish Menu" href="http://be.twixt.us/jquery/suckerFish.php">rewrite
Suckerfish's JavaScript with jQuery</a>. Myles uses jQuery's <a title="jQuery Basic Effects Docs" href="http://jquery.com/docs/fx/">Basic
Effects</a> to show and hide the submenus and jQuery's <a title="jQuery's BaseStyle Methods" href="http://jquery.com/docs/BaseStyle/">BaseStyle
Base module methods</a> to highlight the current moused over menu item. Pretty slick.
</p><p>
Check out some of Myles <a title="jQuery Tests" href="http://be.twixt.us/jquery/">other
experiments with jQuery</a>. For the jQuery beginner these are good examples to start
out with. The <a title="Treeview" href="http://be.twixt.us/jquery/treeView.php">treeview</a> is
another experiment that caught my eye. 
</p></blockquote><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=bf24f29e-6a4b-4911-80dd-88b01a6a47db" /></body>
      <title>Suckerfish Menu with jQuery</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,bf24f29e-6a4b-4911-80dd-88b01a6a47db.aspx</guid>
      <link>http://ralphwhitbeck.com/2006/08/03/SuckerfishMenuWithJQuery.aspx</link>
      <pubDate>Thu, 03 Aug 2006 05:09:14 GMT</pubDate>
      <description>Me on &lt;a href="http://jquery.com/blog/2006/08/02/jquery-suckerfish-menu/"&gt;jQuery's
blog&lt;/a&gt;
&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;
&lt;p&gt;
I think we all have heard of or used &lt;a title="A List Apart - Suckerfish Menu's" href="http://alistapart.com/articles/dropdowns/"&gt;Suckerfish
CSS Menu's&lt;/a&gt; before, written by Pattrick Griffiths and Dan Webb for &lt;a title="A List Apart" href="http://alistapart.com/"&gt;A
List Apart&lt;/a&gt;. If not, it's a cool way to make drop down menu's using standards based
semantic HTML and CSS. Unfortunately, with IE still dominating the browser marketplace
we still need a way to handle the hover state in IE. To do that we need a little bit
of JavaScript to attach mouseover and mouseout events to HTML elements.
&lt;/p&gt;
&lt;p&gt;
Myles Angell decided to &lt;a title="jQuery Suckerfish Menu" href="http://be.twixt.us/jquery/suckerFish.php"&gt;rewrite
Suckerfish's JavaScript with jQuery&lt;/a&gt;. Myles uses jQuery's &lt;a title="jQuery Basic Effects Docs" href="http://jquery.com/docs/fx/"&gt;Basic
Effects&lt;/a&gt; to show and hide the submenus and jQuery's &lt;a title="jQuery's BaseStyle Methods" href="http://jquery.com/docs/BaseStyle/"&gt;BaseStyle
Base module methods&lt;/a&gt; to highlight the current moused over menu item. Pretty slick.
&lt;/p&gt;
&lt;p&gt;
Check out some of Myles &lt;a title="jQuery Tests" href="http://be.twixt.us/jquery/"&gt;other
experiments with jQuery&lt;/a&gt;. For the jQuery beginner these are good examples to start
out with. The &lt;a title="Treeview" href="http://be.twixt.us/jquery/treeView.php"&gt;treeview&lt;/a&gt; is
another experiment that caught my eye. 
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=bf24f29e-6a4b-4911-80dd-88b01a6a47db" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,bf24f29e-6a4b-4911-80dd-88b01a6a47db.aspx</comments>
      <category>Interesting Links;Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=dc2875e5-2a77-4684-80b8-d245f17b0c20</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,dc2875e5-2a77-4684-80b8-d245f17b0c20.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,dc2875e5-2a77-4684-80b8-d245f17b0c20.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=dc2875e5-2a77-4684-80b8-d245f17b0c20</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Check out my <a href="http://jquery.com/blog/2006/07/30/aptana-ide-now-includes-jquery/">first
blog</a> on <a href="http://jquery.com/blog">jquery.com</a> about Aptana IDE now including
jQuery as a imported JavaScript Library.<br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=dc2875e5-2a77-4684-80b8-d245f17b0c20" /></body>
      <title>I am now blogging for jQuery</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,dc2875e5-2a77-4684-80b8-d245f17b0c20.aspx</guid>
      <link>http://ralphwhitbeck.com/2006/07/30/IAmNowBloggingForJQuery.aspx</link>
      <pubDate>Sun, 30 Jul 2006 17:27:30 GMT</pubDate>
      <description>Check out my &lt;a href="http://jquery.com/blog/2006/07/30/aptana-ide-now-includes-jquery/"&gt;first
blog&lt;/a&gt; on &lt;a href="http://jquery.com/blog"&gt;jquery.com&lt;/a&gt; about Aptana IDE now including
jQuery as a imported JavaScript Library.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=dc2875e5-2a77-4684-80b8-d245f17b0c20" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,dc2875e5-2a77-4684-80b8-d245f17b0c20.aspx</comments>
      <category>Interesting Links;Programming</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=90e96601-a610-428e-a33d-bdf29f4c301b</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,90e96601-a610-428e-a33d-bdf29f4c301b.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,90e96601-a610-428e-a33d-bdf29f4c301b.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=90e96601-a610-428e-a33d-bdf29f4c301b</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">I had an itch today to run Ubuntu. 
I actually wanted to see how Konqueror compared to Safari in rendering as I needed
a way to test since I don't own a Mac. Since Safari is a descendent of Konqueror it
makes sense that they render the same for the most part.<br /><br />
I started by downloading and installing the free <a href="http://www.vmware.com/products/player/">VMware
Player</a>.<br /><p></p><br />
I then downloaded the <a href="http://www.ubuntu.com/download">Ubuntu iso (disk image)
from Ubuntu's site</a>.  I had the best luck with the torrent files.  I
was able to download the 696mb iso in 20 minutes.  Since I'll be touching on
it later you can also get the <a href="http://www.kubuntu.org/download.php">Kbuntu
iso from the Kbuntu site</a>.<br /><br />
Now that I have VMware and the iso's I need to make a Virtual Hard Disk.  I found
directions online <a href="http://johnbokma.com/mexit/2005/11/07/vmware-player-ubuntu-installation.html">here</a>.  
<br /><br />
First I needed to download and install <a href="http://www.h7.dion.ne.jp/%7Eqemu-win/">QEMU</a> because
you need the qemu-image.exe to emulate/create the virtual hard disk.<br /><br />
After you installed QEMU open a command window and change directories to c:\program
files\QEMU or whatever the directory name you put the files.  Once you are in
the directory run the following command which will allowcate 3GB for a Ubuntu virtual
hard drive.<br /><br /><blockquote><code>qemu-img.exe create -f vmdk Ubuntu.vmdk 3G Formating 'Ubuntu.vmdk',
fmt=vmdk, size=3097152 kB<br /><br /></code></blockquote>For Kbuntu:<br /><br /><blockquote><code>qemu-img.exe create -f vmdk Kbuntu.vmdk 3G Formating 'Kbuntu.vmdk',
fmt=vmdk, size=3097152 kB<br /><br /></code></blockquote>This will create a file Ubuntu.vmdk or Kbuntu.vmdk in the QEMU
folder. 
<br /><br />
Create a folder called Ubuntu or Kbuntu in My Documents &gt; My Virtual Machines and
move the vmdk file you just created in there. Also copy the iso file to this folder.
Finally, create a blank text file and name it either Ubuntu.vmx or Kbuntu.vmx which
are VMware Configuration files.<br /><br />
In the Ubunti.vmx files paste this:<br /><br /><blockquote><pre><code>config.version = "8"<br />
virtualHW.version = "3"<br />
ide0:0.present = "TRUE"<br />
ide0:0.filename = "Ubuntu.vmdk"<br />
memsize = "256"<br />
MemAllowAutoScaleDown = "FALSE"<br />
ide1:0.present = "TRUE"<br /><br />
#ide1:0.fileName = "auto detect"<br />
#ide1:0.deviceType = "cdrom-raw"<br /><br />
ide1:0.fileName = "ubuntu-6.06-desktop-i386.iso"<br />
ide1:0.deviceType = "cdrom-image"<br /><br />
ide1:0.autodetect = "TRUE"<br />
floppy0.present = "FALSE"<br />
ethernet0.present = "TRUE"<br />
usb.present = "TRUE"<br />
sound.present = "TRUE"<br />
sound.virtualDev = "es1371"<br />
displayName = "Ubuntu"<br />
guestOS = "Ubuntu"<br />
nvram = "Ubuntu.nvram"<br />
MemTrimRate = "-1"<br /><br />
ide0:0.redo = ""<br />
ethernet0.addressType = "generated"<br />
uuid.location = "56 4d 5c cc 3d 4a 43 29-55 89 5c 28 1e 7e 06 58"<br />
uuid.bios = "56 4d 5c cc 3d 4a 43 29-55 89 5c 28 1e 7e 06 58"<br />
ethernet0.generatedAddress = "00:0c:29:7e:06:58"<br />
ethernet0.generatedAddressOffset = "0"<br /><br />
tools.syncTime = "TRUE"<br />
ide1:0.startConnected = "TRUE"<br /><br />
uuid.action = "create"<br /><br />
checkpoint.vmState = ""<br /><br /></code></pre></blockquote>For Kbuntu.vmx paste this:<br /><br /><blockquote>config.version = "8"<br />
virtualHW.version = "3"<br />
ide0:0.present = "TRUE"<br />
ide0:0.filename = "Kbuntu.vmdk"<br />
memsize = "256"<br />
MemAllowAutoScaleDown = "FALSE"<br />
ide1:0.present = "TRUE"<br /><br />
#ide1:0.fileName = "auto detect"<br />
#ide1:0.deviceType = "cdrom-raw"<br /><br />
ide1:0.fileName = "kubuntu-6.06-desktop-i386.iso"<br />
ide1:0.deviceType = "cdrom-image"<br /><br />
ide1:0.autodetect = "TRUE"<br />
floppy0.present = "FALSE"<br />
ethernet0.present = "TRUE"<br />
usb.present = "TRUE"<br />
sound.present = "TRUE"<br />
sound.virtualDev = "es1371"<br />
displayName = "Kbuntu"<br />
guestOS = "ubuntu"<br />
nvram = "Kbuntu.nvram"<br />
MemTrimRate = "-1"<br /><br />
ide0:0.redo = ""<br />
ethernet0.addressType = "generated"<br />
uuid.location = "56 4d cf a0 97 ef 95 ad-c2 6a 6e 62 5b f2 78 ff"<br />
uuid.bios = "56 4d cf a0 97 ef 95 ad-c2 6a 6e 62 5b f2 78 ff"<br />
ethernet0.generatedAddress = "00:0c:29:f2:78:ff"<br />
ethernet0.generatedAddressOffset = "0"<br /><br />
tools.syncTime = "TRUE"<br />
ide1:0.startConnected = "TRUE"<br /><br />
uuid.action = "create"<br /><br />
checkpoint.vmState = ""<br /></blockquote>Save the file and close it.  All you have to do now is double-click
the vmx file and it will launch VMware Player and boot with the iso image as the Boot
CD (you don't need to even burn a CD).<br /><br />
If you decide to install Ubuntu, at the end of the installation you will be prompted
to reboot, before the system starts up go in and modify the vmx configuration file
so that it boots off the virtual drive instead of the iso by modifying these four
lines<br /><br />
Find:<br /><blockquote><pre><code>#ide1:0.fileName = "auto detect"<br />
#ide1:0.deviceType = "cdrom-raw"<br /><br />
ide1:0.fileName = "ubuntu-6.06-desktop-i386.iso"<br />
ide1:0.deviceType = "cdrom-image"<br /></code></pre></blockquote>Replace with:<br /><blockquote><pre><code>ide1:0.fileName = "auto detect"<br />
ide1:0.deviceType = "cdrom-raw"<br /><br />
#ide1:0.fileName = "ubuntu-6.06-desktop-i386.iso"<br />
#ide1:0.deviceType = "cdrom-image"</code></pre></blockquote>The great thing about Ubuntu is that it runs live right off the CD you
don't even need to install it if you don't want to.  The differences between
Ubuntu and Kbuntu is Ubuntu uses Gnome as it's Desktop and Kbuntu uses KDE. 
Like I said at the beginning I wanted to test sites against Konqueror and with Konqueror
being a KDE application it was installed by default in Kbuntu and ran perfectly right
off the live CD without installation.  It can run off Ubuntu but you'll need
to install Ubuntu then install Konqueror from the Synaptics Package Manager. 
<br /><pre><code></code><br /><code></code></pre><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=90e96601-a610-428e-a33d-bdf29f4c301b" /></body>
      <title>How to run Ubuntu and Kbuntu in VMware Player</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,90e96601-a610-428e-a33d-bdf29f4c301b.aspx</guid>
      <link>http://ralphwhitbeck.com/2006/07/30/HowToRunUbuntuAndKbuntuInVMwarePlayer.aspx</link>
      <pubDate>Sun, 30 Jul 2006 14:37:49 GMT</pubDate>
      <description>I had an itch today to run Ubuntu.&amp;nbsp; I actually wanted to see how Konqueror compared to Safari in rendering as I needed a way to test since I don't own a Mac. Since Safari is a descendent of Konqueror it makes sense that they render the same for the most part.&lt;br&gt;
&lt;br&gt;
I started by downloading and installing the free &lt;a href="http://www.vmware.com/products/player/"&gt;VMware
Player&lt;/a&gt;.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;br&gt;
I then downloaded the &lt;a href="http://www.ubuntu.com/download"&gt;Ubuntu iso (disk image)
from Ubuntu's site&lt;/a&gt;.&amp;nbsp; I had the best luck with the torrent files.&amp;nbsp; I
was able to download the 696mb iso in 20 minutes.&amp;nbsp; Since I'll be touching on
it later you can also get the &lt;a href="http://www.kubuntu.org/download.php"&gt;Kbuntu
iso from the Kbuntu site&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Now that I have VMware and the iso's I need to make a Virtual Hard Disk.&amp;nbsp; I found
directions online &lt;a href="http://johnbokma.com/mexit/2005/11/07/vmware-player-ubuntu-installation.html"&gt;here&lt;/a&gt;.&amp;nbsp; 
&lt;br&gt;
&lt;br&gt;
First I needed to download and install &lt;a href="http://www.h7.dion.ne.jp/%7Eqemu-win/"&gt;QEMU&lt;/a&gt; because
you need the qemu-image.exe to emulate/create the virtual hard disk.&lt;br&gt;
&lt;br&gt;
After you installed QEMU open a command window and change directories to c:\program
files\QEMU or whatever the directory name you put the files.&amp;nbsp; Once you are in
the directory run the following command which will allowcate 3GB for a Ubuntu virtual
hard drive.&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;code&gt;qemu-img.exe create -f vmdk Ubuntu.vmdk 3G Formating 'Ubuntu.vmdk',
fmt=vmdk, size=3097152 kB&lt;br&gt;
&lt;br&gt;
&lt;/code&gt;&lt;/blockquote&gt;For Kbuntu:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;code&gt;qemu-img.exe create -f vmdk Kbuntu.vmdk 3G Formating 'Kbuntu.vmdk',
fmt=vmdk, size=3097152 kB&lt;br&gt;
&lt;br&gt;
&lt;/code&gt;&lt;/blockquote&gt;This will create a file Ubuntu.vmdk or Kbuntu.vmdk in the QEMU
folder. 
&lt;br&gt;
&lt;br&gt;
Create a folder called Ubuntu or Kbuntu in My Documents &amp;gt; My Virtual Machines and
move the vmdk file you just created in there. Also copy the iso file to this folder.
Finally, create a blank text file and name it either Ubuntu.vmx or Kbuntu.vmx which
are VMware Configuration files.&lt;br&gt;
&lt;br&gt;
In the Ubunti.vmx files paste this:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;config.version = "8"&lt;br&gt;
virtualHW.version = "3"&lt;br&gt;
ide0:0.present = "TRUE"&lt;br&gt;
ide0:0.filename = "Ubuntu.vmdk"&lt;br&gt;
memsize = "256"&lt;br&gt;
MemAllowAutoScaleDown = "FALSE"&lt;br&gt;
ide1:0.present = "TRUE"&lt;br&gt;
&lt;br&gt;
#ide1:0.fileName = "auto detect"&lt;br&gt;
#ide1:0.deviceType = "cdrom-raw"&lt;br&gt;
&lt;br&gt;
ide1:0.fileName = "ubuntu-6.06-desktop-i386.iso"&lt;br&gt;
ide1:0.deviceType = "cdrom-image"&lt;br&gt;
&lt;br&gt;
ide1:0.autodetect = "TRUE"&lt;br&gt;
floppy0.present = "FALSE"&lt;br&gt;
ethernet0.present = "TRUE"&lt;br&gt;
usb.present = "TRUE"&lt;br&gt;
sound.present = "TRUE"&lt;br&gt;
sound.virtualDev = "es1371"&lt;br&gt;
displayName = "Ubuntu"&lt;br&gt;
guestOS = "Ubuntu"&lt;br&gt;
nvram = "Ubuntu.nvram"&lt;br&gt;
MemTrimRate = "-1"&lt;br&gt;
&lt;br&gt;
ide0:0.redo = ""&lt;br&gt;
ethernet0.addressType = "generated"&lt;br&gt;
uuid.location = "56 4d 5c cc 3d 4a 43 29-55 89 5c 28 1e 7e 06 58"&lt;br&gt;
uuid.bios = "56 4d 5c cc 3d 4a 43 29-55 89 5c 28 1e 7e 06 58"&lt;br&gt;
ethernet0.generatedAddress = "00:0c:29:7e:06:58"&lt;br&gt;
ethernet0.generatedAddressOffset = "0"&lt;br&gt;
&lt;br&gt;
tools.syncTime = "TRUE"&lt;br&gt;
ide1:0.startConnected = "TRUE"&lt;br&gt;
&lt;br&gt;
uuid.action = "create"&lt;br&gt;
&lt;br&gt;
checkpoint.vmState = ""&lt;br&gt;
&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;For Kbuntu.vmx paste this:&lt;br&gt;
&lt;br&gt;
&lt;blockquote&gt;config.version = "8"&lt;br&gt;
virtualHW.version = "3"&lt;br&gt;
ide0:0.present = "TRUE"&lt;br&gt;
ide0:0.filename = "Kbuntu.vmdk"&lt;br&gt;
memsize = "256"&lt;br&gt;
MemAllowAutoScaleDown = "FALSE"&lt;br&gt;
ide1:0.present = "TRUE"&lt;br&gt;
&lt;br&gt;
#ide1:0.fileName = "auto detect"&lt;br&gt;
#ide1:0.deviceType = "cdrom-raw"&lt;br&gt;
&lt;br&gt;
ide1:0.fileName = "kubuntu-6.06-desktop-i386.iso"&lt;br&gt;
ide1:0.deviceType = "cdrom-image"&lt;br&gt;
&lt;br&gt;
ide1:0.autodetect = "TRUE"&lt;br&gt;
floppy0.present = "FALSE"&lt;br&gt;
ethernet0.present = "TRUE"&lt;br&gt;
usb.present = "TRUE"&lt;br&gt;
sound.present = "TRUE"&lt;br&gt;
sound.virtualDev = "es1371"&lt;br&gt;
displayName = "Kbuntu"&lt;br&gt;
guestOS = "ubuntu"&lt;br&gt;
nvram = "Kbuntu.nvram"&lt;br&gt;
MemTrimRate = "-1"&lt;br&gt;
&lt;br&gt;
ide0:0.redo = ""&lt;br&gt;
ethernet0.addressType = "generated"&lt;br&gt;
uuid.location = "56 4d cf a0 97 ef 95 ad-c2 6a 6e 62 5b f2 78 ff"&lt;br&gt;
uuid.bios = "56 4d cf a0 97 ef 95 ad-c2 6a 6e 62 5b f2 78 ff"&lt;br&gt;
ethernet0.generatedAddress = "00:0c:29:f2:78:ff"&lt;br&gt;
ethernet0.generatedAddressOffset = "0"&lt;br&gt;
&lt;br&gt;
tools.syncTime = "TRUE"&lt;br&gt;
ide1:0.startConnected = "TRUE"&lt;br&gt;
&lt;br&gt;
uuid.action = "create"&lt;br&gt;
&lt;br&gt;
checkpoint.vmState = ""&lt;br&gt;
&lt;/blockquote&gt;Save the file and close it.&amp;nbsp; All you have to do now is double-click
the vmx file and it will launch VMware Player and boot with the iso image as the Boot
CD (you don't need to even burn a CD).&lt;br&gt;
&lt;br&gt;
If you decide to install Ubuntu, at the end of the installation you will be prompted
to reboot, before the system starts up go in and modify the vmx configuration file
so that it boots off the virtual drive instead of the iso by modifying these four
lines&lt;br&gt;
&lt;br&gt;
Find:&lt;br&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;#ide1:0.fileName = "auto detect"&lt;br&gt;
#ide1:0.deviceType = "cdrom-raw"&lt;br&gt;
&lt;br&gt;
ide1:0.fileName = "ubuntu-6.06-desktop-i386.iso"&lt;br&gt;
ide1:0.deviceType = "cdrom-image"&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;Replace with:&lt;br&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;ide1:0.fileName = "auto detect"&lt;br&gt;
ide1:0.deviceType = "cdrom-raw"&lt;br&gt;
&lt;br&gt;
#ide1:0.fileName = "ubuntu-6.06-desktop-i386.iso"&lt;br&gt;
#ide1:0.deviceType = "cdrom-image"&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;The great thing about Ubuntu is that it runs live right off the CD you
don't even need to install it if you don't want to.&amp;nbsp; The differences between
Ubuntu and Kbuntu is Ubuntu uses Gnome as it's Desktop and Kbuntu uses KDE.&amp;nbsp;
Like I said at the beginning I wanted to test sites against Konqueror and with Konqueror
being a KDE application it was installed by default in Kbuntu and ran perfectly right
off the live CD without installation.&amp;nbsp; It can run off Ubuntu but you'll need
to install Ubuntu then install Konqueror from the Synaptics Package Manager. 
&lt;br&gt;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;
&lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=90e96601-a610-428e-a33d-bdf29f4c301b" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,90e96601-a610-428e-a33d-bdf29f4c301b.aspx</comments>
      <category>Interesting Links;Mussings;Programming;Technology</category>
    </item>
    <item>
      <trackback:ping>http://ralphwhitbeck.com/Trackback.aspx?guid=34b0747e-c891-46de-bec6-03f33f1480d3</trackback:ping>
      <pingback:server>http://ralphwhitbeck.com/pingback.aspx</pingback:server>
      <pingback:target>http://ralphwhitbeck.com/PermaLink,guid,34b0747e-c891-46de-bec6-03f33f1480d3.aspx</pingback:target>
      <dc:creator>Ralph Whitbeck</dc:creator>
      <wfw:comment>http://ralphwhitbeck.com/CommentView,guid,34b0747e-c891-46de-bec6-03f33f1480d3.aspx</wfw:comment>
      <wfw:commentRss>http://ralphwhitbeck.com/SyndicationService.asmx/GetEntryCommentsRss?guid=34b0747e-c891-46de-bec6-03f33f1480d3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">After I <a href="http://www.damnralph.com/2006/07/15/WhatsHotNow.aspx">asked</a> about
tutorials on Ruby on Rails I went searching for a few. Here are about <a href="http://digg.com/programming/TOP_30_Ruby_on_Rails_Tutorials">30
tutorials on Ruby on Rails</a>.<br /><br /><br /><p></p><img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=34b0747e-c891-46de-bec6-03f33f1480d3" /></body>
      <title>Ruby on Rails Tutorials</title>
      <guid isPermaLink="false">http://ralphwhitbeck.com/PermaLink,guid,34b0747e-c891-46de-bec6-03f33f1480d3.aspx</guid>
      <link>http://ralphwhitbeck.com/2006/07/17/RubyOnRailsTutorials.aspx</link>
      <pubDate>Mon, 17 Jul 2006 03:48:59 GMT</pubDate>
      <description>After I &lt;a href="http://www.damnralph.com/2006/07/15/WhatsHotNow.aspx"&gt;asked&lt;/a&gt; about
tutorials on Ruby on Rails I went searching for a few. Here are about &lt;a href="http://digg.com/programming/TOP_30_Ruby_on_Rails_Tutorials"&gt;30
tutorials on Ruby on Rails&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://ralphwhitbeck.com/aggbug.ashx?id=34b0747e-c891-46de-bec6-03f33f1480d3" /&gt;</description>
      <comments>http://ralphwhitbeck.com/CommentView,guid,34b0747e-c891-46de-bec6-03f33f1480d3.aspx</comments>
      <category>Interesting Links;Programming;Technology</category>
    </item>
  </channel>
</rss>