<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Mike Vallotton&#039;s Blog</title>
	<atom:link href="http://mikevallotton.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikevallotton.wordpress.com</link>
	<description>.NET/Sharepoint/jQuery/Android Software Development</description>
	<lastBuildDate>Sun, 11 Dec 2011 18:53:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mikevallotton.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Mike Vallotton&#039;s Blog</title>
		<link>http://mikevallotton.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mikevallotton.wordpress.com/osd.xml" title="Mike Vallotton&#039;s Blog" />
	<atom:link rel='hub' href='http://mikevallotton.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Anonymity / Authenticity &#8211; why not both?</title>
		<link>http://mikevallotton.wordpress.com/2011/03/14/anonymity-authenticity-why-not-both/</link>
		<comments>http://mikevallotton.wordpress.com/2011/03/14/anonymity-authenticity-why-not-both/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 12:48:27 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[Life & Career]]></category>

		<guid isPermaLink="false">http://mikevallotton.wordpress.com/?p=729</guid>
		<description><![CDATA[I was reading this ReadWriteWeb article about Moot&#8217;s point of view on anonymity online, which is obviously to come down on the side of anonymity. It compares this to the opposing point of view, which is that signing your name to something increases authenticity. Is it not blindingly obvious that both are true? For certain [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=729&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was reading <a href="http://www.readwriteweb.com/archives/4chan_founder_anonymity_is_authenticity.php">this ReadWriteWeb article</a> about Moot&#8217;s point of view on anonymity online, which is obviously to come down on the side of anonymity.  It compares this to the opposing point of view, which is that signing your name to something increases authenticity.</p>
<p>Is it not blindingly obvious that both are true?  For certain things, maintaining your anonymity is beneficial and allows you to express your opinions without fear of reprisal.  For other things, signing your name to your opinion forces you to put a certain amount of thought into your sentiment and be prepared to defend it.</p>
<p><a href="http://mikevallotton.files.wordpress.com/2011/03/pen-signature.png"><img src="http://mikevallotton.files.wordpress.com/2011/03/pen-signature.png?w=480" alt="" title="pen-signature"   class="alignleft size-full wp-image-736" /></a>So, while using my <a href="http://techcrunch.com/2011/03/01/facebook-rolls-out-overhauled-comments-system-try-them-now-on-techcrunch/">Facebook account to comment on TechCrunch</a> (just like posting on my technical blog under my real name) is fine, you&#8217;re not going to see me regularly posting on <a href="http://www.4chan.org/">4Chan</a> or even <a href="http://www.reddit.com">Reddit</a> under my real name, because sometimes I want to sign my name, and sometimes I don&#8217;t.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/729/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=729&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2011/03/14/anonymity-authenticity-why-not-both/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>

		<media:content url="http://mikevallotton.files.wordpress.com/2011/03/pen-signature.png" medium="image">
			<media:title type="html">pen-signature</media:title>
		</media:content>
	</item>
		<item>
		<title>Cars, Computers, and Interface Design</title>
		<link>http://mikevallotton.wordpress.com/2011/02/01/cars-computers-and-interface-design/</link>
		<comments>http://mikevallotton.wordpress.com/2011/02/01/cars-computers-and-interface-design/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 15:10:18 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mikevallotton.wordpress.com/?p=686</guid>
		<description><![CDATA[A few days ago, I was reading about how Apple could dominate car tech (if it wanted). Two weeks of car shopping has driven home two big points for me: User interface matters. Car companies aren’t all that good at it. Really? Because last I checked, car companies are pretty good at user interface. It [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=686&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few days ago, I was reading about how <a href="http://www.zdnet.com/blog/btl/apple-could-dominate-car-tech-if-it-wanted/43941">Apple could dominate car tech (if it wanted)</a>.</p>
<blockquote><p>Two weeks of car shopping has driven home two big points for me: User interface matters. Car companies aren’t all that good at it.</p></blockquote>
<p>Really?  Because last I checked, car companies are pretty good at user interface.  It takes me less than 5 minutes (in any car) to figure out to make it start, go forward, reverse, stop, turn left, right, turn on and off the radio, change the station, change the volume, turn on the air, heat, defrost, adjust the seat, mirrors, steering wheel, put on a seat belt, and start driving.  And yes, there are a lot of buttons.  So?</p>
<p>On the <a href="http://www.dreamincode.net/forums/topic/192371-why-is-the-interface-of-a-car-with-so-many-user-controls-better-than-that-of-a-video-recorder-with-few-controls/">dream in code forums</a>, one person asks a similar question:</p>
<blockquote><p>A new car can have over hundred controls. For example, 10 controls for radio, 5-10 for heating and ventilation, 10 for windows, 10 for wipers, washers and so on. Most people can master these very quickly. Why is it that the car with so many controls is easier to use than a video recorder that has few controls. What makes the car&#8217;s interface so good and that of the video recorder so bad.</p></blockquote>
<p>I love this answer:</p>
<blockquote><p>&#8230;a car&#8217;s buttons are shallow in depth hence why there are so many, and a camcorder has fewer buttons that do more things (depth) in conjunction with other buttons.</p>
<p>The last thing I would want to do, while driving, is deal with some sort of menu tree when all I want to do it turn on my headlights. </p></blockquote>
<p>Apple certainly does create some exceptional user interfaces &#8211; the iPhone is obviously a shining example of that.  And yet 8 out of 50 states prohibit handheld use of a phone while driving, and 30 out of 50 states prohibit text messaging while driving.  (<a href="http://www.ghsa.org/html/stateinfo/laws/cellphone_laws.html">http://www.ghsa.org/html/stateinfo/laws/cellphone_laws.html</a>)  This is because devices which require concentration to use necessarily divert your attention from the more pertinent task, which is driving.</p>
<p>Humans think and remember in physical space; we have a well developed sense of spatial memory.  This is what allows us to type while not looking at the keyboard, pick something up off of the desk without looking, remember where we left our keys (well some of us), and so on.  This is also what allows us to reach down to the volume knob and change the volume on the radio without significant distraction from the task at hand (driving).  We know where the volume knob is, and we know which way to turn it.  It is a physical object in physical space and our brains have evolved to be able to interact with such objects without using a significant amount of focus.</p>
<p>When you change that user interface so that there is simply one button to enter a virtual menu of options, sometimes many levels deep, we&#8217;ve suddenly made the task one that requires a significant level of concentration.  We can&#8217;t rely on our built-in spatial memory any more, because multiple functions are mapped to the same physical space.  At this point, we have to build a representation in our heads to keep track of where in the virtual space we are.  Which app am I in, which submenu am I on, where are the buttons on the screen, and so on.  We&#8217;ve gone from something as familiar and simple as a knob to something that requires (comparatively) a great deal of thought.</p>
<p>Of course, car manufacturers have tried to reinvent the automotive user interface before.  In fact, several have them have even developed some very Applesque interfaces.  BMW&#8217;s iDrive is probably one of the best known of these, and although it went through a number of revisions, and some users were quite fond of it, the overwhelming response was negative.</p>
<blockquote><p>The design rationale of iDrive is to replace a confusing array of controls for the above systems with an all-in-one unit&#8230;iDrive has caused significant controversy among users, the automotive media, and critics. Many reviewers of BMWs in (automobile) magazines disapprove of the system. Criticisms of iDrive include its steep learning curve and its tendency to cause the driver to look away from the road too much.<br />
<a href="http://en.wikipedia.org/wiki/IDrive">http://en.wikipedia.org/wiki/IDrive</a></p></blockquote>
<p><a href="http://reviews.cnet.com/4520-10895_7-6744922-1.html">This article on cnet</a> discusses iDrive (as well as Audi&#8217;s MMI and Mercedes-Benz&#8217;s COMAND systems) in some detail.  In the article, Wayne Cunningham rates each of the systems according to <a href="http://www.useit.com/papers/heuristic/heuristic_list.html">Jakob Nielsen&#8217;s Usability Heuristics</a>.  I find this interesting, as the second heuristic is &#8220;Match between system and the real world&#8221;, which is something that buttons and knobs are obviously quite good at, and nested menus of options are not.</p>
<p>Of course, if this type of design would function so poorly in an automobile, why do we love our phones, laptops, tablets, televisions, and video games so much in other facets of our lives?  The obvious answer is that we aren&#8217;t driving while using them, and we <i>want</i> to be engaged with our technology.  This should quite obviously lead not to the question of how to redesign the interface of the automobile, but how to redesign the process of driving.  Since we are not able to use these devices while driving, we can choose to either design the device to suit the task (as discussed above), or modify the task to suit the device.</p>
<p>It isn&#8217;t Apple that is likely to succeed in this venture.  The <a href="http://forums.finalgear.com/general-automotive/my-personal-car-reviews-update-on-the-mercedes-s-class-distronic-plus-38898/">Distronic Plus cruise control system</a> that Mercedes Benz is using is a step in the right direction.  <a href="http://mashable.com/2010/10/09/google-cars/">Google&#8217;s work on cars that drive themselves</a> are even more so.  Optimistically we have 10 years before cars that can drive themselves are available.  At that point the game changes.  The design of our cars won&#8217;t be constrained by the requirement that the driver maintain focus on the road.</p>
<p>Maybe then Apple will rock the world with its groundbreaking automotive interfaces, but until then, leave my knobs and buttons alone.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/686/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/686/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/686/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/686/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/686/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/686/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/686/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/686/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/686/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/686/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/686/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/686/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/686/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/686/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=686&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2011/02/01/cars-computers-and-interface-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>
	</item>
		<item>
		<title>DBNull is stupid</title>
		<link>http://mikevallotton.wordpress.com/2011/01/28/dbnull-is-stupid/</link>
		<comments>http://mikevallotton.wordpress.com/2011/01/28/dbnull-is-stupid/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 00:26:25 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[DBNull]]></category>
		<category><![CDATA[VB.NET]]></category>

		<guid isPermaLink="false">http://mikevallotton.wordpress.com/?p=640</guid>
		<description><![CDATA[DBNull is stupid. If you&#8217;re using it, stop. Take this basic code: Public Class Form1 &#160;&#160;&#160; Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load &#160;&#160;&#160; &#160;&#160;&#160; Dim obj1 As Object &#160;&#160;&#160; &#160;&#160;&#160; Dim obj2 As Object &#160; &#160;&#160;&#160; &#160;&#160;&#160; obj1 = &#34;a&#34; &#160;&#160;&#160; &#160;&#160;&#160; obj2 = &#34;b&#34; &#160; &#160;&#160;&#160; &#160;&#160;&#160; Try [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=640&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>DBNull is stupid.  If you&#8217;re using it, stop.</p>
<p>Take this basic code:</p>
<div style="font-family:Consolas;font-size:10pt;color:black;background:white;">
<p style="margin:0;"><span style="color:blue;">Public</span> <span style="color:blue;">Class</span> <span style="color:#2b91af;">Form1</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">Private</span> <span style="color:blue;">Sub</span> Form1_Load(<span style="color:blue;">ByVal</span> sender <span style="color:blue;">As</span> System.<span style="color:#2b91af;">Object</span>, <span style="color:blue;">ByVal</span> e <span style="color:blue;">As</span> System.<span style="color:#2b91af;">EventArgs</span>) <span style="color:blue;">Handles</span> <span style="color:blue;">MyBase</span>.Load</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Dim</span> obj1 <span style="color:blue;">As</span> <span style="color:blue;">Object</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Dim</span> obj2 <span style="color:blue;">As</span> <span style="color:blue;">Object</span></p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj1 = <span style="color:#a31515;">&quot;a&quot;</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj2 = <span style="color:#a31515;">&quot;b&quot;</span></p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Try</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AssignValue(obj1, obj2)</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:#2b91af;">MessageBox</span>.Show(obj2.ToString())</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> <span style="color:#2b91af;">Exception</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:#2b91af;">MessageBox</span>.Show(ex.ToString())</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Try</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Sub</span></p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">Public</span> <span style="color:blue;">Sub</span> AssignValue(<span style="color:blue;">ByVal</span> obj1 <span style="color:blue;">As</span> <span style="color:blue;">Object</span>, <span style="color:blue;">ByRef</span> obj2 <span style="color:blue;">As</span> <span style="color:blue;">Object</span>)</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">If</span> (obj1 &lt;&gt; obj2) <span style="color:blue;">Then</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj2 = obj1</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">If</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Sub</span></p>
<p style="margin:0;"><span style="color:blue;">End</span> <span style="color:blue;">Class</span></p>
<p style="margin:0;">&nbsp;</p>
</div>
<p>This is a somewhat contrived example, but basically, we want to give obj2 the value that obj1 has.  We do a simple check to make sure that they aren&#8217;t the same before bothering to do so.  This is more important in code where you&#8217;re setting a property (rather than just a variable) which may execute some other code, like setting a dirty flag or even writing to persistent storage.</p>
<p>Anyway, the code executes, and obj2 is assigned the value of obj1 (&#8220;a&#8221;).  So what&#8217;s the problem?  Let&#8217;s change the value of obj1 to DBNull.Value.  </p>
<div style="font-family:Consolas;font-size:10pt;color:black;background:white;">
<p style="margin:0;"><span style="color:blue;">Public</span> <span style="color:blue;">Class</span> <span style="color:#2b91af;">Form1</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">Private</span> <span style="color:blue;">Sub</span> Form1_Load(<span style="color:blue;">ByVal</span> sender <span style="color:blue;">As</span> System.<span style="color:#2b91af;">Object</span>, <span style="color:blue;">ByVal</span> e <span style="color:blue;">As</span> System.<span style="color:#2b91af;">EventArgs</span>) <span style="color:blue;">Handles</span> <span style="color:blue;">MyBase</span>.Load</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Dim</span> obj1 <span style="color:blue;">As</span> <span style="color:blue;">Object</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Dim</span> obj2 <span style="color:blue;">As</span> <span style="color:blue;">Object</span></p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj1 = <span style="color:#2b91af;">DBNull</span>.Value</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj2 = <span style="color:#a31515;">&quot;b&quot;</span></p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Try</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AssignValue(obj1, obj2)</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:#2b91af;">MessageBox</span>.Show(obj2.ToString())</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> <span style="color:#2b91af;">Exception</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:#2b91af;">MessageBox</span>.Show(ex.ToString())</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Try</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Sub</span></p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">Public</span> <span style="color:blue;">Sub</span> AssignValue(<span style="color:blue;">ByVal</span> obj1 <span style="color:blue;">As</span> <span style="color:blue;">Object</span>, <span style="color:blue;">ByRef</span> obj2 <span style="color:blue;">As</span> <span style="color:blue;">Object</span>)</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">If</span> (obj1 &lt;&gt; obj2) <span style="color:blue;">Then</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj2 = obj1</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">If</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Sub</span></p>
<p style="margin:0;"><span style="color:blue;">End</span> <span style="color:blue;">Class</span></p>
<p style="margin:0;">&nbsp;</p>
</div>
<p>Should be no problem, right?  The AssignValue sub will be called and obj2 will be assigned a value of DBNull.Value.  Except that it doesn&#8217;t.  Actually, what you get is an exception that states:</p>
<p>{&#8220;Operator &#8221; is not defined for type &#8216;DBNull&#8217; and string &#8220;b&#8221;.&#8221;}</p>
<p>Well, crap.  Ok, we&#8217;ll check for DBNull.Value in our AssignValue sub.</p>
<div style="font-family:Consolas;font-size:10pt;color:black;background:white;">
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">Public</span> <span style="color:blue;">Sub</span> AssignValue(<span style="color:blue;">ByVal</span> obj1 <span style="color:blue;">As</span> <span style="color:blue;">Object</span>, <span style="color:blue;">ByRef</span> obj2 <span style="color:blue;">As</span> <span style="color:blue;">Object</span>)</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">If</span> (IsDBNull(obj1) <span style="color:blue;">AndAlso</span> <span style="color:blue;">Not</span> IsDBNull(obj2)) <span style="color:blue;">OrElse</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (<span style="color:blue;">Not</span> IsDBNull(obj1) <span style="color:blue;">AndAlso</span> IsDBNull(obj2)) <span style="color:blue;">OrElse</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj1 &lt;&gt; obj2 <span style="color:blue;">Then</span></p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj2 = obj1</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">If</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Sub</span></p>
</div>
<p>Run our code again and everything works great.  Wait, what if obj1 and obj2 are both set to DBNull.Value?</p>
<div style="font-family:Consolas;font-size:10pt;color:black;background:white;">
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">Private</span> <span style="color:blue;">Sub</span> Form1_Load(<span style="color:blue;">ByVal</span> sender <span style="color:blue;">As</span> System.<span style="color:#2b91af;">Object</span>, <span style="color:blue;">ByVal</span> e <span style="color:blue;">As</span> System.<span style="color:#2b91af;">EventArgs</span>) <span style="color:blue;">Handles</span> <span style="color:blue;">MyBase</span>.Load</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Dim</span> obj1 <span style="color:blue;">As</span> <span style="color:blue;">Object</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Dim</span> obj2 <span style="color:blue;">As</span> <span style="color:blue;">Object</span></p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj1 = <span style="color:#2b91af;">DBNull</span>.Value</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj2 = <span style="color:#2b91af;">DBNull</span>.Value</p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Try</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AssignValue(obj1, obj2)</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:#2b91af;">MessageBox</span>.Show(obj2.ToString())</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> <span style="color:#2b91af;">Exception</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:#2b91af;">MessageBox</span>.Show(ex.ToString())</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Try</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Sub</span></p>
</div>
<p>Another exception, of course!</p>
<p>{&#8220;Operator &#8221; is not defined for type &#8216;DBNull&#8217; and type &#8216;DBNull&#8217;.&#8221;}</p>
<p>Ack! Seriously?  Ok, let&#8217;s change our AssignValue sub again.  We&#8217;ll check to see if obj1 is DBNull while obj2 is not, or obj2 is DBNull while obj1 is not, or both obj1 and obj2 are not DBNull and not equal to each other.</p>
<div style="font-family:Consolas;font-size:10pt;color:black;background:white;">
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">Public</span> <span style="color:blue;">Sub</span> AssignValue(<span style="color:blue;">ByVal</span> obj1 <span style="color:blue;">As</span> <span style="color:blue;">Object</span>, <span style="color:blue;">ByRef</span> obj2 <span style="color:blue;">As</span> <span style="color:blue;">Object</span>)</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">If</span> (IsDBNull(obj1) <span style="color:blue;">AndAlso</span> <span style="color:blue;">Not</span> IsDBNull(obj2)) <span style="color:blue;">OrElse</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (<span style="color:blue;">Not</span> IsDBNull(obj1) <span style="color:blue;">AndAlso</span> IsDBNull(obj2)) <span style="color:blue;">OrElse</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (<span style="color:blue;">Not</span> IsDBNull(obj1) <span style="color:blue;">AndAlso</span> <span style="color:blue;">Not</span> IsDBNull(obj2) <span style="color:blue;">AndAlso</span> obj1 &lt;&gt; obj2) <span style="color:blue;">Then</span></p>
<p style="margin:0;">&nbsp;</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; obj2 = obj1</p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">If</span></p>
<p style="margin:0;">&nbsp;&nbsp;&nbsp; <span style="color:blue;">End</span> <span style="color:blue;">Sub</span></p>
</div>
<p>Wow, we&#8217;ve finally managed to implement what should be a simple comparison and we only had to do 5 comparisons to do it.  Maybe it&#8217;s just me, but this seems excessive for what we&#8217;re trying to do.  I understand that it&#8217;s necessary to represent null database values in our objects, but generics (and therefore Nullables) were introduced in .NET 2.0 &#8211; stop using DBNull.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/640/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=640&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2011/01/28/dbnull-is-stupid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>
	</item>
		<item>
		<title>Twitter, jQuery, and Performance</title>
		<link>http://mikevallotton.wordpress.com/2011/01/21/twitter-jquery-and-performance/</link>
		<comments>http://mikevallotton.wordpress.com/2011/01/21/twitter-jquery-and-performance/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 21:12:46 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://mikevallotton.wordpress.com/?p=674</guid>
		<description><![CDATA[This writeup by John Resig concerning Twitter&#8217;s recent performance problems is an interesting read. It points out that some changes in jQuery 1.43 were responsible for part of the performance degradation, but the larger problem had more to do with how jQuery was being used. John points out two things that we would all do [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=674&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://ejohn.org/blog/learning-from-twitter/">This writeup by John Resig concerning Twitter&#8217;s recent performance problems</a> is an interesting read.  It points out that some changes in jQuery 1.43 were responsible for part of the performance degradation, but the larger problem had more to do with how jQuery was being used.  John points out two things that we would all do well to pay attention to.</p>
<ol>
<li><b>It&#8217;s a very, very, bad idea to attach handlers to the window scroll event.</b></li>
<li><b>Always cache the selector queries that you&#8217;re re-using.</b></li>
</ol>
<p>If you&#8217;d like to explore this topic further, this <a href="http://addyosmani.com/blog/jquery-performance-tips-2011/">jQuery performance optimization video by Addy Osmani</a> is great. You&#8217;ll need to block off half an hour or so to watch it, but it offers some excellent tips that are really useful if you&#8217;re in and out of jQuery on a regular basis.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/674/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/674/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/674/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=674&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2011/01/21/twitter-jquery-and-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>
	</item>
		<item>
		<title>MVC, mobile views, and RAZR</title>
		<link>http://mikevallotton.wordpress.com/2011/01/21/mvc-mobile-views-and-razr/</link>
		<comments>http://mikevallotton.wordpress.com/2011/01/21/mvc-mobile-views-and-razr/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 13:57:02 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[asp.net mvc]]></category>

		<guid isPermaLink="false">http://mikevallotton.wordpress.com/?p=669</guid>
		<description><![CDATA[I thought that this whitepaper on making your MVC web application mobile friendly was a very good read. The only thing that struck me was the section on remembering the user&#8217;s preference regarding using the mobile presentation versus the standard presentation: It’s often convenient to redirect mobile visitors to the mobile pages only on the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=669&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I thought that <a href="http://www.asp.net/learn/whitepapers/add-mobile-pages-to-your-aspnet-web-forms-mvc-application">this whitepaper on making your MVC web application mobile friendly</a> was a very good read.  The only thing that struck me was the section on remembering the user&#8217;s preference regarding using the mobile presentation versus the standard presentation:</p>
<blockquote><p>It’s often convenient to redirect mobile visitors to the mobile pages only on the first request in their browsing session (and not on every request in their session), because:</p>
<ol>
<li>You can then easily allow mobile visitors to access your desktop pages if they wish – just put a link on your master page that goes to “Desktop version”. The visitor won’t be redirected back to a mobile page, because it’s no longer the first request in their session.</li>
<li>It avoids the risk of interfering with requests for any dynamic resources shared between desktop and mobile parts of your site (e.g., if you have a common Web Form that both desktop and mobile parts of your site display in an IFRAME, or certain Ajax handlers)</li>
</ol>
<p>To do this, you can place your redirection logic in a Session_Start method. For example, add the following method to your Global.asax.cs file&#8230;</p></blockquote>
<p>I frequently browse the web on my Android phone &#8211; in fact, I probably browse the web more on my phone than I do on my computer.  I don&#8217;t want my mobile/standard preference stored in the session.  I want it stored in a persistent cookie so that I don&#8217;t have to reset my preference every time I visit your site.  This isn&#8217;t even difficult &#8211; <a href="http://msdn.microsoft.com/en-us/library/ms178194.aspx">here is an excellent reference to using cookies with .NET</a>.</p>
<p>The section regarding the different methodologies for presenting mobile specific pages talks about using different Razor views for mobile/standard:</p>
<blockquote><p>Since the Model-View-Controller pattern decouples application logic (in controllers) from presentation logic (in views), you can choose from any of the following approaches to handling mobile support in server-side code:</p>
<ol>
<li><b><i>Use the same controllers and views for both desktop and mobile browsers, but render the views with different Razor layouts depending on the device type.</i></b> This option works best if you’re displaying identical data on all devices, but simply want to supply different CSS stylesheets or change a few top-level HTML elements for mobiles.</li>
<li><b><i>Use the same controllers for both desktop and mobile browsers, but render different views depending on the device type.</i></b> This option works best if you’re displaying roughly the same data and providing the same workflows for end users, but want to render very different HTML markup to suit the device being used.</li>
<li><b><i>Create separate areas for desktop and mobile browsers, implementing independent controllers and views for each.</i></b>This option works best if you’re displaying very different screens, containing different information and leading the user through different workflows optimized for their device type. It may mean some repetition of code, but you can minimize that by factoring out common logic into an underlying layer or service.</li>
</ol>
<p>If you want to take the first option and vary only the Razor layout per device type, it’s very easy&#8230;</p></blockquote>
<p>The Razor views look very slick, and unfortunately, I haven&#8217;t had much time to play with them yet.  Telerik recently posted <a href="https://github.com/telerik/razor-converter">a .NET Web Forms Views -&gt; Razor converter</a> on GitHub that looks like it would give you a good kickstart if you&#8217;re trying to switch over a project that you&#8217;ve already started.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/669/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=669&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2011/01/21/mvc-mobile-views-and-razr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>
	</item>
		<item>
		<title>What&#8217;s your reading level?</title>
		<link>http://mikevallotton.wordpress.com/2010/12/20/whats-your-reading-level/</link>
		<comments>http://mikevallotton.wordpress.com/2010/12/20/whats-your-reading-level/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 16:54:16 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[reading level]]></category>
		<category><![CDATA[self improvement]]></category>

		<guid isPermaLink="false">http://mikevallotton.wordpress.com/?p=644</guid>
		<description><![CDATA[I happened across this article on technologyreview.com about a new search option on google for Reading Level, which is pretty cool. You can go to advanced search and choose to filter your search results based on basic, intermediate, or advanced reading levels. You can also just get a reading level &#8220;rating&#8221; for the search results. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=644&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I happened across <a href="http://www.technologyreview.com/blog/mimssbits/26150/?p1=A4">this article on technologyreview.com about a new search option on google for Reading Level</a>, which is pretty cool.  You can go to advanced search and choose to filter your search results based on basic, intermediate, or advanced reading levels.  You can also just get a reading level &#8220;rating&#8221; for the search results.  While I am going to explore this a little further, being the narcissist that I am, I thought I&#8217;d search myself and see what google thinks of me.</p>
<p><a href="http://www.google.com/search?q=mike+vallotton&amp;hl=en&amp;num=10&amp;lr=&amp;ft=i&amp;cr=&amp;safe=images&amp;tbs=rl%3A1"><img src="http://mikevallotton.files.wordpress.com/2010/12/readinglevel-mikevallotton.png?w=480" alt="" title="readinglevel-mikevallotton"   class="alignnone size-full wp-image-645" /><br /><i>click for results</i></a></p>
<p>I&#8217;m pretty happy with that 75%, but I think I&#8217;ll use it much like <a href="http://mikevallotton.wordpress.com/2009/07/25/are-you-a-competent-programmer/">this programmer competency rating</a> as a yardstick for improvement.</p>
<p>Do you want to find out what your reading level is?  <a href="http://www.google.com/advanced_search?q=&amp;hl=en&amp;lr=&amp;tbs=rl:1&amp;prmd=ivns">Click here to search.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/644/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/644/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/644/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=644&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2010/12/20/whats-your-reading-level/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>

		<media:content url="http://mikevallotton.files.wordpress.com/2010/12/readinglevel-mikevallotton.png" medium="image">
			<media:title type="html">readinglevel-mikevallotton</media:title>
		</media:content>
	</item>
		<item>
		<title>Code clearly</title>
		<link>http://mikevallotton.wordpress.com/2010/12/06/code-clearly/</link>
		<comments>http://mikevallotton.wordpress.com/2010/12/06/code-clearly/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 08:22:41 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">https://mikevallotton.wordpress.com/?p=627</guid>
		<description><![CDATA[I ran across a nice article just covering the basics of coding clearly. Since I&#8217;m currently spending most of my time correcting mistakes like this, I thought it worth a mention. http://fob.po8.org/student-code<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=627&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I ran across a nice article just covering the basics of coding clearly.  Since I&#8217;m currently spending most of my time correcting mistakes like this, I thought it worth a mention.</p>
<p><a href="http://fob.po8.org/student-code">http://fob.po8.org/student-code</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/627/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/627/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/627/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=627&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2010/12/06/code-clearly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>
	</item>
		<item>
		<title>Free programming books</title>
		<link>http://mikevallotton.wordpress.com/2010/12/05/free-programming-books/</link>
		<comments>http://mikevallotton.wordpress.com/2010/12/05/free-programming-books/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 23:30:00 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://mikevallotton.wordpress.com/?p=633</guid>
		<description><![CDATA[Need something to read? Check out this list of freely available programming books.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=633&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Need something to read?  Check out <a href="http://stackoverflow.com/questions/194812/list-of-freely-available-programming-books">this list of freely available programming books</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/633/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/633/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/633/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/633/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/633/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/633/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/633/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/633/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/633/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/633/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/633/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/633/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/633/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/633/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=633&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2010/12/05/free-programming-books/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>
	</item>
		<item>
		<title>What&#8217;s in what, now?</title>
		<link>http://mikevallotton.wordpress.com/2010/12/01/whats-in-what-now/</link>
		<comments>http://mikevallotton.wordpress.com/2010/12/01/whats-in-what-now/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 14:19:38 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://mikevallotton.wordpress.com/?p=606</guid>
		<description><![CDATA[I&#8217;ve been working with a client that is working on an Oracle to SQL Server conversion project, and part of it involves poring over stored procedures to fix inefficiencies. This type of thing keeps coming up, and since this isn&#8217;t the only client I&#8217;ve seen it at&#8230; This is slow and inefficient: SELECT&#160;@var1&#160;=&#160;tab1.col2 FROM&#160;tab1 WHERE&#160;tab1.col1&#160;= [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=606&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working with a client that is working on an Oracle to SQL Server conversion project, and part of it involves poring over stored procedures to fix inefficiencies.  This type of thing keeps coming up, and since this isn&#8217;t the only client I&#8217;ve seen it at&#8230;</p>
<p>This is slow and inefficient:<br />
<code>SELECT&nbsp;@var1&nbsp;=&nbsp;tab1.col2<br />
FROM&nbsp;tab1<br />
WHERE&nbsp;tab1.col1&nbsp;=<br />
&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;tab2.col2<br />
&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;tab2<br />
&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;tab2.col1&nbsp;=<br />
&nbsp;&nbsp;&nbsp;&nbsp;(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;tab3.col2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;tab3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;tab3.col1&nbsp;=&nbsp;@par1<br />
&nbsp;&nbsp;&nbsp;&nbsp;)<br />
&nbsp;&nbsp;)</code></p>
<p>This is better and much, much faster:<br />
<code>SELECT&nbsp;@var1&nbsp;=&nbsp;tab1.col2<br />
FROM&nbsp;tab1<br />
INNER&nbsp;JOIN&nbsp;tab2<br />
&nbsp;&nbsp;ON&nbsp;tab1.col1&nbsp;=&nbsp;tab2.col2<br />
INNER&nbsp;JOIN&nbsp;tab3<br />
&nbsp;&nbsp;ON&nbsp;tab2.col1&nbsp;=&nbsp;tab3.col2<br />
WHERE&nbsp;tab3.col1&nbsp;=&nbsp;@par1</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/606/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/606/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/606/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/606/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/606/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/606/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/606/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/606/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/606/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/606/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/606/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/606/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/606/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/606/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=606&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2010/12/01/whats-in-what-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>
	</item>
		<item>
		<title>Georgia Amendment 1 &#8211; An Analysis</title>
		<link>http://mikevallotton.wordpress.com/2010/11/24/georgia-amendment-1-an-analysis/</link>
		<comments>http://mikevallotton.wordpress.com/2010/11/24/georgia-amendment-1-an-analysis/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 14:29:28 +0000</pubDate>
		<dc:creator>mikevallotton</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[georgia amendment one 2010]]></category>
		<category><![CDATA[vote]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://mikevallotton.wordpress.com/?p=604</guid>
		<description><![CDATA[So obviously, Amendment 1 passed. It didn&#8217;t even barely pass, it passed with an overwhelming majority of votes. 1,628,507 out of 2,410,156 Georgians voted YES! on Amendment 1. My previous blog entry regarding Amendment 1 was on the first page of google&#8217;s search results for most combinations of Georgia, Amendment, November 2nd, etc. It was [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=604&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So obviously, Amendment 1 passed.  It didn&#8217;t even barely pass, it passed with an overwhelming majority of votes.  <a href="http://www.ballotpedia.org/wiki/index.php/Georgia_Employment_Contract_Enforcement,_Amendment_1_%282010%29">1,628,507 out of 2,410,156 Georgians voted YES! on Amendment 1</a>.</p>
<p><a href="http://mikevallotton.wordpress.com/2010/09/24/georgia-amendment-1-november-2-2010/">My previous blog entry regarding Amendment 1</a> was on the first page of google&#8217;s search results for most combinations of Georgia, Amendment, November 2nd, etc.  It was the top search result in many cases.  I assume it was largely the same for Bing and Yahoo, although to be honest, I haven&#8217;t really verified.</p>
<p>That blog entry got a little less than 3,000 hits by November 2nd (thank you WordPress site stats).  So assuming that every one of those page views was by a registered Georgia voter (which is beyond unlikely), roughly 0.1% of people that voted on that amendment read that blog post.</p>
<p>Now quite obviously, a very large percentage of people get their news from television, newspaper, friends, and other sites, but still &#8211; 0.1% bothered to do a simple search to research the issues that they were going to vote on?  Really?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mikevallotton.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mikevallotton.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mikevallotton.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mikevallotton.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mikevallotton.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mikevallotton.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mikevallotton.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mikevallotton.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mikevallotton.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mikevallotton.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mikevallotton.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mikevallotton.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mikevallotton.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mikevallotton.wordpress.com/604/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mikevallotton.wordpress.com&amp;blog=6127023&amp;post=604&amp;subd=mikevallotton&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mikevallotton.wordpress.com/2010/11/24/georgia-amendment-1-an-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f09e019bbaa4c857d149ae57d8bbe4d6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mikevallotton</media:title>
		</media:content>
	</item>
	</channel>
</rss>
