<?xml version="1.0" encoding="UTF-8"?>
<rss 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/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Michael Flanakin's Weblog</title><link>http://michaelflanakin.com</link><description>Random thoughts for and about the software development community</description><ttl>60</ttl><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.michaelflanakin.com/flanakin" /><feedburner:info uri="flanakin" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>38.806163</geo:lat><geo:long>-77.051398</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><image><url>http://www.michaelflanakin.com/Portals/michaelflanakin.com/Images/MichaelFlanakin.jpg</url><title>Michael Flanakin</title></image><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1116/Default.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1116</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1116&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Using Analytics to Identify the Best Screen Resolution</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/5dbAtpHGIJI/Default.aspx</link><description>&lt;p&gt;As part of &lt;a href="http://michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1114/Site-Redesign-Thoughts.aspx"&gt;my site redesign effort&lt;/a&gt;, I had to determine what the best screen resolution to target was. Initially, I was ready to blindly accept 1024x768 as "the standard," firmly believing that 800x600 has been left in the dust more than 5 years ago. Then I reminded myself that analytics have the real answer, but not just any analytics.&lt;/p&gt;
&lt;p&gt;Despite the wealth of interesting information we can find online about the "average" screen resolution, the best answer is a little closer to home than these general studies. Chances are, your user community isn't the entire world. If you think it is, you don't know enough about your users. This is where analytics come in. For instance, the average screen resolution may be 1024x768, but if I'm building a site/application for the visually impaired, the average may be much lower -- maybe even 640x480! On the other hand, if you're building a site/application for gamers, the average will most likely be higher. In either case, missing the key demographic will undoubtedly provide a less than desirable experience for your users. This is where your own instrumentation/analytics come in. &lt;/p&gt;
&lt;object data="data:application/x-silverlight-2," width="700" height="465" type="application/x-silverlight-2"&gt;
&lt;param name="source" value="http://michaelflanakin.com/portals/michaelflanakin.com/weblog/2010/resviz.xap"/&gt;
&lt;param name="minRuntimeVersion" value="4.0" /&gt;
&lt;param name="autoUpgrade" value="true" /&gt;
&lt;param name="background" value="white" /&gt;
&lt;param name="onError" value="onError" /&gt;
&lt;a href="http://go.microsoft.com/fwlink?LinkID=149156&amp;v=3.0.40818.0" style="text-decoration:none"&gt;
&lt;img src="http://go.microsoft.com/fwlink?LinkId=161376" alt="Get Microsoft Silverlight" style="border:0"/&gt;
&lt;/a&gt;
&lt;/object&gt;
&lt;p&gt;I found out a few interesting things about my site's visitors from this exercise. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1024x768 is the smallest resolution.&lt;/strong&gt; I should've expected this, knowing my audience; but I didn't. I figured there'd be at least a few 800x600 visitors out there. While I'm sure there are some in the world, this at least confirms that 1024x768 is the smallest resolution I need to concern myself with; however, at 11%, it's still a very small part of the overall audience. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;26% use 1280x1024.&lt;/strong&gt; While not that large of a percentage, the largest group of visitors has a 1280x1024 resolution. I was surprised to see this as the most popular resolution, but it makes sense, given hardware advances. Arguably, this is where my focus should be. A 1280-pixel width would support 87% of my visitors. Unfortunately, a 1024-pixel height only supports 59%, so that's not quite ideal. Luckily, this is just about scrolling. The best height to target for the prime real estate would be an 800-pixel height, which would support 86% of my visitors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;58% have widescreen displays.&lt;/strong&gt; Again, not stunning, but very interesting. Knowing more than half of my visitors have widescreen displays tells me I should embrace the horizontal spread of key information, as opposed to dropping this info below "the fold." I'm not saying every layout decision needs to be based on "the fold," but it does exist and it should be acknowledged to a certain degree. Yes, people scroll, but the initial impact is above the fold, so that should be targeted and drive interest in not only scrolling down, but clicking thru to other pages. But I digress... The biggest lesson here is that fixed-width layouts are not an option. Limiting to a 1000-pixel width, for instance,&amp;nbsp;would waste 25-50% of the display size for half of my visitors. That's crazy. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Most well known aspect ratios are the rarest.&lt;/strong&gt; While 4:3 and 16:9 are the aspect ratios I hear about the most -- likely because they are the standard aspect ratios used in TVs -- they only make up 22% of my visitors. While knowing this won't help me come to a solid conclusion, it is another interesting point I wouldn't have expected. I only point this out because it shows how instrumentation can tell you things you may not have known you didn't know. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strange resolutions like 1152x864 and 1366x768.&lt;/strong&gt; I knew about most of the resolutions I found, but there were a couple I've never heard of, specifically 1366x768, which was very odd and &lt;a href="http://michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1115/Default.aspx"&gt;doesn't exactly map to 16:9&lt;/a&gt;, but seems to be attributed as such.&lt;/p&gt;
&lt;p&gt;There are a countless ways I could've sliced the numbers to extract other interesting tidbits, but the important thing is that I was able to use actual metrics to validate my assumptions. This would be even more important on larger projects; especially, team projects. Have you ever had an argument over some subjective aspect of a system you've built? Maybe it was a particular class design or visual layout or perhaps it was &lt;a href="http://seattletimes.nwsource.com/html/microsoftpri0/2011361493_mix10_the_bing_blue_color_thats_worth_80_million.html?syndication=rss"&gt;something as trivial as a color&lt;/a&gt;. We all have our opinions and design reviews tend to bring them all out. It's about time we stop having subjective arguments and actually pull together objective, factual metrics based on real system usage. What do your customers deserve? Assumptions and guesses or educated conclusions based on proven facts?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://l7osqw.bay.livefilestore.com/y1pSTje9xwlwCxriMOXAMJcIzN-h9lsRGoKDNj2x0NiFTEFCRFvJGHXPveZIL2Y3RVMTXr7_pBa7avt2v3mWE2itB_kF71ZTAEP/resviz.zip?download&amp;amp;psid=2"&gt;Source code for resolution visualization&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=5dbAtpHGIJI:yF6tOGyRe38:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=5dbAtpHGIJI:yF6tOGyRe38:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=5dbAtpHGIJI:yF6tOGyRe38:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/5dbAtpHGIJI" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Fri, 13 Aug 2010 01:37:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1116</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1116/Default.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1115/Default.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1115</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1115&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Using PowerShell to Analyze Screen Resolutions</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/wcCkbOJ8zjo/Default.aspx</link><description>&lt;img style="float: right;" alt="PowerShell" src="http://pcldug.bay.livefilestore.com/y1pQcSKlrQfsr6ZK_jMXSXxBLOilN-VkesvWOjb8aA89p4dlO3oODR-OXBq9_GIv1BpylY02ypwl2S2rpB6xlkdwSTFh-Wf-rvk/powershell.png" /&gt;
&lt;p&gt;As part of &lt;a href="http://michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1114/Site-Redesign-Thoughts.aspx"&gt;my site redesign effort&lt;/a&gt;, I'm taking a look at different screen resolutions&amp;nbsp;users of my site have&amp;nbsp;(I'll post something on that later). I noticed a few strange screen resolutions and wanted to compare the different aspect ratios. I knew a couple of them, but not all, so I figured PowerShell should be able to solve this problem fairly easily to ultimately give me the following information. Note that the chart was created in Excel. I could've used WPF, but since this is a rat-hole of a rat-hole off my actual task at hand, the redesign, I didn't want to get into WPF generation in PowerShell.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screen aspect ratios of michaelflanakin.com users" src="http://osyqtw.bay.livefilestore.com/y1pBv5NPl44RlHHST-41i4xf8uvTpD9mwZqUaSp56kTvB5ihdqRFn_YluGFBYzIdZMx0LpadsBXgI9k2NbejOnBmfB_CocJ7RBj/aspectratios_2010-07-24.png" /&gt;&lt;/p&gt;
&lt;p&gt;Breaking the problem down, we need to be able to go from 1024x768 to 4:3. In order to do this, we'll have to whip out some elementary school math to figure out the &lt;a href="http://en.wikipedia.org/wiki/Greatest_common_divisor"&gt;greatest common divisor&lt;/a&gt;. Luckily, this is pretty simple to determine. First, let's start with getting a list of all divisors for one number.&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;function&lt;/span&gt; Get-Divisors($n)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $div &lt;span class="operator"&gt;=&lt;/span&gt; @();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="command"&gt;foreach&lt;/span&gt; ($i &lt;span class="keyword"&gt;in&lt;/span&gt; 1 &lt;span class="operator"&gt;..&lt;/span&gt; ($n&lt;span class="operator"&gt;/&lt;/span&gt;3))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $d &lt;span class="operator"&gt;=&lt;/span&gt; $n&lt;span class="operator"&gt;/&lt;/span&gt;$i;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword"&gt;if&lt;/span&gt; (($d &lt;span class="operator"&gt;-eq&lt;/span&gt; [System.&lt;span class="class"&gt;Math&lt;/span&gt;]::Floor($d)) &lt;span class="operator"&gt;-and -not&lt;/span&gt; ($div &lt;span class="operator"&gt;-contains&lt;/span&gt; $i))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $div &lt;span class="operator"&gt;+=&lt;/span&gt; $i;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $div &lt;span class="operator"&gt;+=&lt;/span&gt; $d;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $div &lt;span class="operator"&gt;|&lt;/span&gt; &lt;span class="command"&gt;Sort-Object&lt;/span&gt;;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;This is pretty simple, but I should probably cover a few non-obvious things. First, &lt;span class="code"&gt;@()&lt;/span&gt; is an empty array, which will be used to store all of the divisors. Looking at the loop, you'll notice that I only loop thru one third of the possible values. I hope I remember this correctly from school, but you do not need to loop thru all numbers between 1 and the target value to identify all possible divisors. This is simply a way to speed up the calculation. I'll leave it to you to explore the algorithm on your own, since that's not my focus here. Within the loop, the function checks to see if the divisor is a whole number and whether the value has already been saved to avoid duplicates then adds&amp;nbsp;each divisor&amp;nbsp;to the array. Pay attention to this because what's happening here is that PowerShell sees [array] + [object] and automatically determins that you must want to add a new item to the array. This was a very nice surprise. Finally, &lt;span class="code"&gt;Sort-Object&lt;/span&gt; puts the numbers in order for us humans. Now, we can get all divisors for a specific number.&lt;/p&gt;
&lt;p class="code"&gt;PS C:\&amp;gt; &lt;span class="command"&gt;Get-Divisors&lt;/span&gt; 1024;&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
4&lt;br /&gt;
8&lt;br /&gt;
16&lt;br /&gt;
32&lt;br /&gt;
32&lt;br /&gt;
64&lt;br /&gt;
128&lt;br /&gt;
256&lt;br /&gt;
512&lt;br /&gt;
1024&lt;/p&gt;
&lt;p&gt;Next, we need to get the common divisors for both the height and width of the screen resolutions.&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;function&lt;/span&gt; Get-CommonDivisors($x, $y)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $xd &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="command"&gt;Get-Divisors&lt;/span&gt; $x;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $yd &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="command"&gt;Get-Divisors&lt;/span&gt; $y;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $div &lt;span class="operator"&gt;=&lt;/span&gt; @();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="command"&gt;foreach&lt;/span&gt; ($i &lt;span class="operator"&gt;in&lt;/span&gt; $xd) { &lt;span class="keyword"&gt;if&lt;/span&gt; ($yd &lt;span class="operator"&gt;-contains&lt;/span&gt; $i) { $div &lt;span class="operator"&gt;+=&lt;/span&gt; $i; } }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $div &lt;span class="operator"&gt;|&lt;/span&gt; &lt;span class="command"&gt;Sort-Object&lt;/span&gt;;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;This is pretty much more of the same. Get all divisors, create a new array to hold the common divisors, loop thru the divisors to find the commonalities, and finally sort the array. The array shouldn't need to be sorted, since the previous function did it, but I figured it's probably&amp;nbsp;good to be sure.&lt;/p&gt;
&lt;p class="code"&gt;PS C:\&amp;gt; &lt;span class="command"&gt;Get-CommonDivisors&lt;/span&gt; 1024 768;&lt;br /&gt;
1&lt;br /&gt;
2&lt;br /&gt;
4&lt;br /&gt;
8&lt;br /&gt;
16&lt;br /&gt;
32&lt;br /&gt;
32&lt;br /&gt;
64&lt;br /&gt;
128&lt;br /&gt;
256&lt;/p&gt;
&lt;p&gt;Next, we'll grab the greatest common divisor.&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;function&lt;/span&gt; Get-GreatestCommonDivisor($x, $y)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $d &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="command"&gt;Get-CommonDivisors&lt;/span&gt; $x $y;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $d[$d.Length&lt;span class="operator"&gt;-&lt;/span&gt;1];&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;This isn't even worth explaining. Arguably, we could've simply returned the greatest common divisor in the last function, but this is a good way to create composable, reusable scripts. After all, we need to retrieve a list of divisors all the time, right? :-P I won't bother showing what the output would be. I'm sure you can figure this one out ;-) We'll move right on to the last step, which will get the actual aspect ratio.&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;function&lt;/span&gt; Get-Ratio($x, $y)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $d &lt;span class="operator"&gt;=&lt;/span&gt; &lt;span class="command"&gt;Get-GreatestCommonDivisor&lt;/span&gt; $x $y;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="command"&gt;New-Object&lt;/span&gt; &lt;span class="class"&gt;PSObject&lt;/span&gt; &lt;span class="parameter"&gt;-Property&lt;/span&gt; @{ &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X &lt;span class="operator"&gt;=&lt;/span&gt; $x;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y &lt;span class="operator"&gt;=&lt;/span&gt; $y;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Divisor &lt;span class="operator"&gt;=&lt;/span&gt; $d;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XRatio &lt;span class="operator"&gt;=&lt;/span&gt; $x&lt;span class="operator"&gt;/&lt;/span&gt;$d;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; YRatio &lt;span class="operator"&gt;=&lt;/span&gt; $y&lt;span class="operator"&gt;/&lt;/span&gt;$d;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ratio &lt;span class="operator"&gt;=&lt;/span&gt; "$($x/$d):$($y/$d)";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;This will most likely throw you for a loop, if you're a PowerShell beginner and possibly even some intermediate users. You most likely expected the function to simply return a string, like "4:3". We could absolutely do this, but with the richness of PowerShell, using a string is somewhat wasteful. This all comes back to a goal of composable scripts that can be reused in the future. In the future, we may want more than just a string value. Since PowerShell is so good at passing around objects, let's create a new object that has all the properties that make sense for this context, namely the two numbers, greatest common divisor, individual ratio portions, and the string representation of that ratio.&lt;/p&gt;
&lt;p class="code"&gt;PS C:&amp;gt; &lt;span class="command"&gt;Get-Ratio&lt;/span&gt; 1024 768;&lt;br /&gt;
&lt;br /&gt;
Divisor : 256&lt;br /&gt;
Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 768&lt;br /&gt;
XRatio&amp;nbsp; : 4&lt;br /&gt;
X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1024&lt;br /&gt;
YRatio&amp;nbsp; : 3&lt;br /&gt;
Ratio&amp;nbsp;&amp;nbsp; : 4:3&lt;/p&gt;
&lt;p&gt;Now, we have what we sought out to get: the aspect ratio for a 1024x768 screen resolution. Let's face it, tho, we didn't want one, we wanted a bunch of them. To be exact, I was curious about 10 different resolutions. We've gone this far to automate this process, we might as well finish up with a function to get a group of aspect ratios.&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;function&lt;/span&gt; Get-CommonRatios($res)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $ratios &lt;span class="operator"&gt;=&lt;/span&gt; @{};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="command"&gt;foreach&lt;/span&gt; ($r &lt;span class="operator"&gt;in&lt;/span&gt; $res)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $rat = (&lt;span class="command"&gt;Get-Ratio&lt;/span&gt; $r[0] $r[1]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="operator"&gt;-not&lt;/span&gt; $ratios.Contains($rat.Ratio))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ratios.Add($rat.Ratio,&amp;nbsp;&lt;br /&gt;
&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; (&lt;span class="command"&gt;New-Object&lt;/span&gt; &lt;span class="class"&gt;PSObject&lt;/span&gt; &lt;span class="parameter"&gt;-Property&lt;/span&gt; @{ &lt;br /&gt;
&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; XRatio &lt;span class="operator"&gt;=&lt;/span&gt; $rat.XRatio; &lt;br /&gt;
&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; YRatio &lt;span class="operator"&gt;=&lt;/span&gt; $rat.YRatio; &lt;br /&gt;
&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; Ratio &lt;span class="operator"&gt;=&lt;/span&gt; $rat.Ratio; &lt;br /&gt;
&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; Count &lt;span class="operator"&gt;=&lt;/span&gt; 1; &lt;br /&gt;
&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; }));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="keyword"&gt;else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ratios[$rat.Ratio].Count &lt;span class="operator"&gt;+=&lt;/span&gt; 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; $ratios.Values | &lt;span class="command"&gt;Sort-Object&lt;/span&gt; &lt;span class="parameter"&gt;-Property&lt;/span&gt; XRatio;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;Again, this is all pretty normal. I'm using a hashtable (&lt;span class="code"&gt;@{}&lt;/span&gt;) instead of an array to avoid duplicates and also created a new object to hold the metadata instead of the original ratio object because not all of the properties on the old object are applicable anymore. I also added a property to count the number of times the aspect ratio is used.&lt;/p&gt;
&lt;p class="code"&gt;PS C:\&amp;gt; &lt;span class="command"&gt;Get-CommonRatios&lt;/span&gt; @((1024,768), (1280,800), (1280,1024), (1366,768), (1440,900), (1600,900), (1600,1200), (1680,1050), (1920,1080), (1920,1200)) &lt;span class="operator"&gt;|&lt;/span&gt; &lt;span class="command"&gt;Format-Table&lt;/span&gt; Ratio, Count;&lt;br /&gt;
&lt;br /&gt;
Ratio&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Count&lt;br /&gt;
-----&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -----&lt;br /&gt;
4:3&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;br /&gt;
5:4&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;
8:5&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;
16:9&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&lt;br /&gt;
683:384&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/p&gt;
&lt;p&gt;There ya have it. The only special thing I did was format the results as a table with only the ratio and count properties. Hopefully, you were able to pick up a few new things for me, I was glad to explore the dynamic array handling and runtime object creation.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=wcCkbOJ8zjo:eMu07Sek7qE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=wcCkbOJ8zjo:eMu07Sek7qE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=wcCkbOJ8zjo:eMu07Sek7qE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/wcCkbOJ8zjo" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Sat, 24 Jul 2010 14:54:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1115</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1115/Default.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1114/Site-Redesign-Thoughts.aspx#Comments</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1114</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1114&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Site Redesign Thoughts</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/Zwf__84zdSQ/Site-Redesign-Thoughts.aspx</link><description>&lt;p&gt;As I mentioned on Twitter, my site's long overdue for a revamp. I'm looking at ways to make my personal site a hub of all my activity on the many disparate services and social networks I'm part of. I have a number of ideas on how to bring them together, but it all comes down to how much time I'm willing to sink into this activity, given the many other things I should probably be working on instead. My biggest concerns are creating a hub of my activity, most likely moving my blog because I'm tired of managing the current platform, and coming up with a design that's more modern and fresh, yet simpler than what I have today.&lt;/p&gt;
&lt;p&gt;I've been doing a lot of thinking over the past few hours and, while I don't want to slap my entire OneNote notebook of thoughts out here, I do want to share a wireframe of a conceptual home page. This is merely a conceptual&amp;nbsp;layout from an information architecture perspective, but it's a start.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Site redesign concept wireframe" src="http://pcleug.bay.livefilestore.com/y1pZxps4m31SL0xe58qYj-dFq6zEM31rL2IdRWwD78s9zBCyn6hdTiBMdj75TysaMSRk5k_yleONwtPVVrBz9WXy1XhPNYzf3ho/mfsitewireframe.png" /&gt;&lt;/p&gt;
&lt;p&gt;I'm thinking about the site having&amp;nbsp;four main areas: about page, activity stream, blog, and articles. The activity stream is the most complicated piece of the puzzle, given the vast number of disparate services that provide lackluster offerings. While this has the biggest opportunity for improvement, it's also a huge time sink, considering people use those services and aren't going to come to my site just to see my end-to-end activity stream. Based on that, I'm not sure how much time I'll dedicate to it.&lt;/p&gt;
&lt;p&gt;I'd love to get feedback from others. I want things to be as simple as possible. I threw around the idea of not having a main menu at all in an effort to let the context drive the experience, but I'm not sure that's approproate given the fact that people are used to seeing a menu. I should probably go for it and use instrumentation and analytics to determine which way is best. What do you think?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=Zwf__84zdSQ:XJhfkBKSqgI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=Zwf__84zdSQ:XJhfkBKSqgI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=Zwf__84zdSQ:XJhfkBKSqgI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/Zwf__84zdSQ" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Sat, 24 Jul 2010 05:57:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1114</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1114/Site-Redesign-Thoughts.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1113/Check-All-ToDo-Items-on-Foursquare.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1113</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1113&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Check All To-Do Items on Foursquare</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/kpIylpfYKXY/Check-All-ToDo-Items-on-Foursquare.aspx</link><description>&lt;img style="float: right;" alt="Foursquare + jQuery" src="http://pcleug.bay.livefilestore.com/y1pUQ2h8Bqv6A7h6Dbrp4pjX0F_OI47Pzd0_F_4yoL8UBuac4TviQMeuSGmH6OZ-aJmePHJkr1CqdRzgohsb014hSvhLsmiWbSX/foursquare%2Bjquery.png" /&gt;
&lt;p&gt;As fun as Foursquare is, it agravates me to no end at how short-sighted their&amp;nbsp;interaction designers are (if they even have any). Admittedly, I have this problem with almost every piece of technology I use, but don't have the time to fix them all -- if only *rolling eyes, shaking head* What I do have the time for is finding a quick hack to something that was annoying me -- namely, checking all the to-do items on a Foursquare account page.&lt;/p&gt;
&lt;p&gt;Go to any Foursquare&amp;nbsp;account page, like the &lt;a href="http://foursquare.com/bing"&gt;Bing account page&lt;/a&gt;, and you'll be presented with a list of usually 50 or 100 to-do items that often lead to a badge. Say what you will about Foursquare, I enjoy the game. I have gone thru several of these pages clicking each one after the other a few times now and finally got fed up. Within a minute, I was able to use IE8's built-in dev tools to come up with a quick solution. &lt;/p&gt;
&lt;p&gt;If you're not familiar with the IE8 dev tools, simply open IE8 and press &lt;strong&gt;&lt;span style="color: #0070c0;"&gt;F12&lt;/span&gt;&lt;/strong&gt;. The dev tools may open in a new window, but I prefer them docked at the bottom of my main window, since I'm usually on a laptop. The extra window is ideal for dual monitor setups, tho. &lt;/p&gt;
&lt;p&gt;&lt;img alt="IE8 Dev Tools" src="http://pcleug.bay.livefilestore.com/y1pYBCwqYC0D7PaMXZjD6NKD0zPFS5GMxW54SQh4X7pDy1arIPULKybJDDnclZ9IYYGHGn-c93qeHa0akTA9-CqQtmUvtun85wi/ie8devtools.png" /&gt;&lt;/p&gt;
&lt;p&gt;The HTML tab comes up first, which is where I started -- actually, that's not true, the first thing I did was jump over to the Script tab and type &lt;code&gt;$&lt;/code&gt; into the Script Console. This let me verify that Foursquare uses jQuery. Armed with jQuery, I knew I could accomplish what I needed fairly quickly. I selected the element selector arrow (first item on the toolbar on any of the tabs) and then clicked on one of the "Add as a To Do" elements within the page. This switched over to the HTML tab to show me a div with a checkbox. Most importantly, the div has a class of &lt;code class="class"&gt;tip_todo_unchecked&lt;/code&gt; and the checkbox had an onclick handler. This is all I needed, thanks to jQuery. I moved back to the Script Console and used the following jQuery code to select all unchecked items and click them. Note that I had to "click" them to run the &lt;code class="attribute"&gt;onclick&lt;/code&gt; handler. Simply checking them wouldn't have triggered the &lt;code class="attribute"&gt;onclick&lt;/code&gt; event.&lt;/p&gt;
&lt;p class="code"&gt;$(&lt;span class="class"&gt;'.tip_todo_unchecked :unchecked'&lt;/span&gt;).click()&lt;/p&gt;
&lt;p&gt;If you're not familiar with jQuery, the question mark ($) is an alias to the &lt;code&gt;jQuery()&lt;/code&gt; function. Typically, you pass in a selector that is used to traverse and select HTML elements. In this case, we're grabbing all elements unchecked checkboxes (input elements with a type of &lt;strong&gt;&lt;span style="color: #0070c0;"&gt;checkbox&lt;/span&gt;&lt;/strong&gt;) that are within elements with a CSS class of &lt;code class="class"&gt;tip_todo_unchecked&lt;/code&gt;. While not exactly the same as CSS selectors, jQuery selectors were obviously heavily inspired by CSS selectors and aim to "embrace and extend" what CSS offers in this arena. The &lt;code&gt;click()&lt;/code&gt; function simply calls the &lt;code class="attribute"&gt;onclick&lt;/code&gt; event for each of the elements that were retrieved. It's that simple.&lt;/p&gt;
&lt;p&gt;Note that you'll have to wait a few seconds while the page dynamically registers all of those clicks for you. I just jump down to the bottom of the page and wait for the last few to process. &lt;/p&gt;
&lt;p&gt;Arguably, I should've put this into a GreaseMonkey for IE script, but my faith in IE add-ins has dwindled, so I don't use that anymore. Firefox users can do the same thing with FireBug and/or GreaseMonkey. Heck, there may already be a GM script for this. I don't know because I'm not a fan of Firefox -- not that I think IE8 is the best browser in the world. Obviously, the same capability is in Chrome, as well. The bottom line is that jQuery allows this simple hack.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=kpIylpfYKXY:2DSAjipkWqc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=kpIylpfYKXY:2DSAjipkWqc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=kpIylpfYKXY:2DSAjipkWqc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/kpIylpfYKXY" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Thu, 22 Jul 2010 12:44:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1113</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1113/Check-All-ToDo-Items-on-Foursquare.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1112/How-the-Top-Tech-Companies-Made-it-There.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1112</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1112&amp;PortalID=2&amp;TabID=142</trackback:ping><title>How the Top Tech Companies Made it There</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/bv4NhM1WUb0/How-the-Top-Tech-Companies-Made-it-There.aspx</link><description>&lt;img style="float: right;" alt="Apple/Google/Microsoft" src="http://michaelflanakin.com/portals/michaelflanakin.com/weblog/2010/apple-google-microsoft.png" /&gt;
&lt;p&gt;If you were to ask someone on the street who the top technology company is, you'll likely get one of three answers: Apple, Google, or Microsoft. Whether you agree that these are the best technology companies or not, you have to admit these three own the broad mindshare. While I listed them alphabetically, I'd bet you'd hear them in that specific order. It all comes back to mindshare. IBM and Oracle are definitely top technology companies in the enterprise, but without a consumer focus, both are sacrificing this all-too-valuable metric. You can see how important this metric is by looking back at how technology was driven in the past. 15 years ago, technology was driven by enterprise needs. Over time, however, technology has become less expensive and more accessible, which has flipped that trend. Now, most technology trends are driven by the consumer market. But what did these three do to get that mindshare?&lt;/p&gt;
&lt;p&gt;Ask anyone with an Apple product what they like the most or what their first impression was and they'll comment on how beautiful the device or interface is and how easy it is to use. Apple's core competence is exactly this: visual design and, to some degree, user experience. &lt;/p&gt;
&lt;p&gt;Taking the same look at Google, first impressions are typically on simple interfaces and speedy responses. Alone, this doesn't tell us much, but if you take a deeper look, you see that Google is driven by algorithms. After all, search and advertising can only succeed with solid algorithms. This is Google's core competence: engineering.&lt;/p&gt;
&lt;p&gt;To put it simply, Apple and Google represent the art and science of technology. As such, those are the crowds they attract. Apple attracts artists and creative professionals and Google attracts engineers and hard-core geeks. This is the key to both companies' success -- a targeted audience.&lt;/p&gt;
&lt;p&gt;Having a targeted audience allows these companies to build precise, unambiguous experiences aimed at a specific type of user (or persona). You might say that neither Apple nor Google can do this because their products are used by a wide range of users. That's very true, but just because you target a specific persona, that doesn't mean your user base will never grow beyond that. In fact, it's just the opposite. By targeting a specific persona, you're able to focus your efforts and not only meet, but exceed that persona's expectations because you truly understand what their needs and goals are. With this, you're affording yourself the primary key to product success: passionate users.&lt;/p&gt;
&lt;p&gt;Take a look back at the iPhone's debut. Were people not passionate about its sexy interface? Of course they were. And that passion was a virus that spread like a pyramid scheme. Google had the same effect, albeit much slower. &lt;/p&gt;
&lt;p&gt;When Google first launched their search engine in the late 1990's, there weren't too many people using it. Yahoo was the most popular search engine at the time, with it's gaudy interface, attempting to be everything to everyone. Perhaps the biggest interaction mistake Yahoo made was attempting to follow the mythical 3-click rule, where users "must" be able to get to any feature within&amp;nbsp;3 clicks, or they will stop trying. I don't want to get into it here, but this is completely wrong. The way Google succeeded was by getting all the crap out of the way. By focusing on finding what you want, Google attracted geeks -- and a &lt;em&gt;lot&lt;/em&gt; of them. Geeks told other geeks who told their family and friends and before you know it, less than 5 years later, Google was the #1 game in town -- all because they drove passion in a small subset of possible users. Of course, passion alone isn't going to earn you a multi-billion dollar business, but passion in the hearts and minds of the right audience can. Passion can also be dangerous. &lt;/p&gt;
&lt;p&gt;If you're reading this, you're probably well aware of the stigma of Windows Vista. It's the worst operating system in the world, right? Not so, but the passionate few who did have bad experiences sure did let everyone know. As with the passion of the iPhone and Google search users, Vista haters shouted it out, loud and proud. But I'm not here to defend Windows Vista; I want to show you the value and impact of passion. Speaking of which, if Apple is #1 in the hearts and minds of artists and Google fills that spot for engineers, where does Microsoft fit in? &lt;/p&gt;
&lt;p&gt;We can all agree that Microsoft isn't known for its superb aesthetics or engineering prowess, but it is good at both. And, when it comes to these three companies, Microsoft is arguably second in both areas, despite the fact that neither artists nor engineers will accept or admit it. Don't get me wrong, there have been some major blunders on boht fronts, but this is exactly my point. By not excelling in the art or science of technology, Microsoft is taking a back seat to both Apple and Google. When it comes to end-to-end user experience, Apple has the most mindshare, as I mentioned before; but I'd argue that Microsoft is second in this game. Yes, Google does have some wins in this space, but Google is nowhere near as dedicated to or capable of delivering the end-to-end user experience Microsoft is -- just look at Bing and Windows Phone. Admittedly, Microsoft has only started showing its ability in this space over the past few years. On the other side, Google drives mindshare for technology engineering; but once again, Microsoft comes in second. I can cite examples of why Apple sucks at engineering and Google can't quite cut it with end-to-end user experience, but I want to focus on the culmination of all this. &lt;/p&gt;
&lt;p&gt;Microsoft has a tendency to attract people who want both beauty and brains; people who understand that beauty alone will get you nowhere and brains alone will leave you as exactly that -- alone. Together, beauty and brains will reach an even broader audience. This is the 80% Microsoft is known for targeting (for better or worse), which is exacly why Microsoft is as popular as it is. Everyone like to look at pretty pictures or solve problems .6825 seconds faster than the next&amp;nbsp; guy, but the vast majority of the populations doesn't care -- as long as they can figure it out and their problem gets solved, they're happy. Let's face it, the best interface is no interface. If human beings could achieve their goals without interacting with your product, they would. Your product is a necessary evil. &lt;/p&gt;
&lt;p&gt;Microsoft hasn't been successful by purely being a runner-up, tho. Microsoft has their own niche: developers. I know of absolutely no company that has ever had the ability to drive passion in developers as much as Microsoft has. Sure, iPhone development has seen a great boon, but that was forced (on Apple) and it wasn't because Apple had a great development platform; it was because users were flocking to the product. Microsoft has continued to deliver compelling platforms for developers to take advantage of year after year. This is only heightenedby the fact that Microsoft's partner ecosystem is fiscally 10 times the size of Microsoft itself. Said another way, partners make $10 for every $1 Microsoft earns. Given Microsoft's gross earnings, that's a huge market. I'd say that's definitely something to be passionate about. &lt;/p&gt;
&lt;p&gt;While having 80% of the market sounds outstanding, this group is quite fickle and has no allegiences. They aren't opting out of the artistic and scientific approaches; they just don't care. So what drives them? Each of us has something inside that motivates us. If you want to be successful, you need to start with a core demographic, the primary persona you want to target. Remember that, by meeting everyone's needs, you meet no one's needs. This may seem counter-intuitive, but it's been proven time and time again. If you target a specific type of user, you're giving your primary users an opportunity to get passionate. There's no mathematical formula to cultivate passion -- if there was, Google would've figured it out by now -- but it all starts with targeted experiences. If you want to win in your market, drive passion. &lt;/p&gt;
&lt;p&gt;To bring this back to those top 3 companies, Apple and Google are both fairly stuck in their ways. Both companies have art and science built into their DNA. I don't expect to see either company change. Microosft, on the other hand, has an immense amount to learn and I think they're on their way to correcting those. I can't say I expect Microsoft to surpass Apple in artistry or Google in engineering anytime soon; but I do expect Microsoft to give both companies a run for their money. We've already seen Apple reacting to Windows Phone 7 and Google reacting to Bing. As slow as the company is, Microsoft is a huge innovator. We've seen it in the past and I suspect the next 12 months will be full of opportunities for history to repeat itself as Kinect, Windows Phone 7, and IE9 come to fruition. Okay, there's some wishful thinking in that last one, but each of these platforms has developers chomping at the bit, eagerly awaiting their release. And, with each of these combining best-of-breed user experiences&amp;nbsp; with solid, top-notch engineering, Microsoft is giving us something to be passionate about -- on all three screens (phone, computer, and TV), no less. &lt;/p&gt;
&lt;p&gt;For the developers out there, how about your products? How are you driving passion in your users? For everyone else, what makes you passionate?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=bv4NhM1WUb0:YBAjCTeywt4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=bv4NhM1WUb0:YBAjCTeywt4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=bv4NhM1WUb0:YBAjCTeywt4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/bv4NhM1WUb0" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Mon, 12 Jul 2010 20:54:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1112</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1112/How-the-Top-Tech-Companies-Made-it-There.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1110/MSDN-Subscriptions-June-2010.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1110</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1110&amp;PortalID=2&amp;TabID=142</trackback:ping><title>MSDN Subscriptions: June 2010</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/isF7O-4zSlQ/MSDN-Subscriptions-June-2010.aspx</link><description>&lt;img style="float: right;" alt="MSDN" src="http://michaelflanakin.com/portals/michaelflanakin.com/weblog/2008/msdn.png" /&gt;
&lt;p&gt;The following consists of the &lt;b&gt;English&lt;/b&gt; DVD updates released under the &lt;b&gt;MSDN Ultimate&lt;/b&gt; subscription level for&amp;nbsp;&lt;b&gt;June 2010&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: underline;"&gt;Developer Tools&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc&amp;nbsp;4699 &lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Visual Studio Ultimate 2010 (English)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Disc 5000&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Visual Studio Team Foundation Server 2010 (English)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;Operating Systems&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc&amp;nbsp;4694 &lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Windows 7 Ultimate N (x64 and x86) Product Key Required (English)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, see the &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/index"&gt;MSDN Subscriptions Index&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=isF7O-4zSlQ:JsdAldN7uHk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=isF7O-4zSlQ:JsdAldN7uHk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=isF7O-4zSlQ:JsdAldN7uHk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/isF7O-4zSlQ" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Tue, 04 May 2010 01:26:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1110</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1110/MSDN-Subscriptions-June-2010.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1108/Default.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1108</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1108&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Interesting First Impressions with the IE9 Preview</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/S-vhzj-4KNQ/Default.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="MSDN" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/weblog/2009/ie.png" /&gt;&lt;/p&gt;
&lt;p&gt;It's been almost a year since &lt;a href="http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1093/A-Plea-for-IE.aspx"&gt;my plea to the IE team&lt;/a&gt;. Windows 7 has rocked, Office 2010 is looking very nice, and, most recently, Windows Phone 7 Series has amazed the world. All these great things coming together are really putting pressure on the IE team to deliver something revolutionary. Back in Nov 2009, the team talked about the tremendous performance improvements, sub-pixel text rendering, and HTML5/CSS3 support. All-in-all, there was a quick burst of information and buzz around what IE9 could become, but then it died off very quickly. I admit, I was quite skeptical -- and still am -- but at least it showed the team is heading in the right direction. In what seems to be the IE team's typical process, silence happened and annoyance returned.&lt;/p&gt;
&lt;p&gt;Today, Microsoft announced the release of an early &lt;a href="http://ie.microsoft.com/testdrive"&gt;IE9 developer preview&lt;/a&gt;. I was pretty excited about this, since I've been waiting for it since they first started talking about IE9 in November -- well, maybe since IE8 was released without some of the big features I was hoping for. Nonetheless, I was grounded pretty quickly. For better or worse, there are some interesting things that came out of the preview.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Uhh, What's This Window?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I'm pretty willy-nilly with new software. Not too smart, but whatever :-P I installed the preview and expected magic. As it installed, I started closing other IE8 windows. All of a sudden, a new Window popped up. "Woo-hoo, it's done! IE9, here I come!"&amp;#160;Then I noticed I left one IE8 window open. I switched over to close it and hesitated -- "Why is there an IE8 window still open?" I switched back to the new IE9 window and thought, uhh, this isn't a browser. There's no back button; no address bar; nothing. "Ah, maybe it's just a 'Welcome to IE9' dialog before the IE9 greatness kicks in!" I close the IE8 window, open another with the pinned icon on my taskbar. "Uhh, nothing changed." &lt;font color="#0000ff"&gt;&lt;strong&gt;&lt;em&gt;*Help &amp;gt; About...*&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt; Still IE8. WTF!? I guess this is more of a literal "preview" than I thought. No browser; just a chance to see how their pre-built tests work. Meh.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. The Tests Work... Mostly&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I've said it before and I'll say it again, just being part of the game isn't going to fly. And, if this is all the IE team has to show, I'm not impressed. Don't get me wrong, I love everything they show, from performance to sub-pixel text rendering -- seriously, this isn't something to scoff at, it's a&amp;#160;very noteworthy&amp;#160;improvement for any browser -- to all the HTML and CSS improvements. But it's not enough. Heck, the "Falling Balls" example didn't even work. I really want to bash the performance improvements. I even wrote this paragraph a few different ways to express my disapproval in different ways, but it all comes down to this: you won't realize how drastic the improvements are until you see IE8 and IE9 running side-by-side. The Flying Images example seems obvious, when you see it in IE9, but when you go back and watch it in IE8, you think, "Is this seriously what I'm putting up with today!? I feel lied to; cheated. How dare you, IE team; how dare you!" With all that said -- and seriously, the perf improvement is tremendous -- I'm still not happy (here's where my desire to bash performance comes in). While you definitely notice that aspects of performance have improved, the perceived performance really sucks. It's not the page loading that I'm talking about, tho; it's the standard&amp;#160;page&amp;#160;interaction that's defunct. Even clicking some of the links used by the examples were ridiculously buggy. I guess there's a reason they called it a "developer preview"... wait, that doesn't say "developer," it says "platform"...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. "Platform Preview"&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In an effort to find the hidden navigation controls, I scoured the lifeless window edges. The best I could find was the&amp;#160;&lt;strong&gt;&lt;font color="#0000ff"&gt;Page &amp;gt; Open...&lt;/font&gt;&lt;/strong&gt; menu option. Well, at least that's a way to test out other pages. I figured, what better way to test out the new browser than to write a blog post. Let me just tell you that I'm dying here. I mentioned the perceived performance sucks already. Try typing in this thing. I feel like I'm clawing my eyes out -- and I'm talking about with freshly&amp;#160;trimmed fingernails. You know what I'm talking about, when you trim your fingernails down to the nub and putting even the slightest pressure on them hurts. Now, try to claw your eyes out with that. That's why I feel like I'm doing right now. Every character is painful. &lt;strong&gt;&lt;em&gt;*Ouch, oooh, ouch...*&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Okay, I'm exaggerating; but it is painful. But, now that I'm able to get past the examples, I'm realizing I have two versions of IE installed. Hmm... very interesting. Remember the days when IE was a crucial part of Windows and couldn't be unbundled? Well, they seem to have figured out how to install a new rendering engine without touching the old one, hidden deep in the innards of Windows. Of course, they did introduce the ability to completely uninstall IE in Windows 7, so maybe that's a moot point nowadays. Either way, this is a first for IE, as far as I know. Then it hit me... "platform preview." Are they saying something with that? Are we talking about a rendering engine completely detached from the Windows desktop OS?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. IE9 on Windows Phone?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the original Windows Phone 7 Series announcement at Mobile World Congress 2010, Joe Belfiore commented that the phone is more than just the Mobile IE we see in Windows Mobile 6.5 and its predecessors. He said it came from the desktop browser code-base. This alone doesn't mean much, but when he called out the sub-pixel text rendering, my mind started adding things up. Is this IE9 on Windows Phone!? Nobody has said&amp;#160;that, but you have to wonder. I've read that Windows Phone 7 Series is based on IE7 with some back-ported features from IE8, but that doesn't really make sense, when you consider that sub-pixel rendering is only coming in the next version of the browser. I still have to wonder about this. It doesn't make sense to back-port that feature two versions. Maybe it's IE8 with that one feature back-ported, but maybe it's IE9. If that's the case, IE9 will need to be on a hyperactive beta period and, as I mentioned before, they definitely aren't close to being done, yet, and I'm admittedly not confident they even know how to do that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Where's the Navigation?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I really want to get back to the preview. I'm still annoyed at the fact that I have to get to sites in a hacky way. Why would the IE team do that!? Do they not want us to use the browser? That can't be it. Maybe they didn't have time to finish out the preview and just crammed some stuff together to make the Mix10 keynote. Maybe, but I doubt it. I didn't&amp;#160;notice this at first, but the menu options aren't standard. Specifically, there's a "Page" menu instead of a "File" menu. Perhaps I'm reading into this too much, but "Page" sounds like more of a ribbon tab than a menu option. Maybe the reason we're getting such a scaled-back browser is because the old chrome isn't there anymore -- we could be getting the first ribbon-based browser. I'm very excited about this possibility. At the same time, I can't ignore the fact that this will be a very touchie UI, given the ever-popular tab-based browser. IE7 brought me back from Firefox because the UI was slim and just looked and felt more professional. IE9&amp;#160;with&amp;#160;a ribbon &lt;strong&gt;&lt;u&gt;done right&lt;/u&gt;&lt;/strong&gt; -- extra focus on "done right" -- could seriously bring people back to IE. At the same time, it's an opening for haters to complain about the ribbon. I whole-heartedly believe the ribbon interface is demonstrably better than menu-based interfaces. So much so that, if I had my way, I'd never use another menu-based interface again. I'm not saying the ribbon is the way to go in every case, but I don't know why a traditional menu would ever be the "right" experience. It just isn't optimal.&lt;/p&gt;
&lt;p&gt;With all that said, maybe the ribbon isn't the IE team's target. Maybe they've put a lot of thought into how users should be interacting with the browser. In either case, I welcome the change. Chrome took an interesting move with minimization, but I don't think it was drastic enough. Google played it safe with Chrome. Microsoft's not afraid of taking big risks when it comes to user experience -- just look at Office 2007, Windows Phone 7 Series, and even Visual Studio 2010 to a lesser degree.&lt;/p&gt;
&lt;p&gt;No matter what happens, I'll be eagerly awaiting either the next preview/beta. At the same time, I'm not holding my breath. The IE team has a lot to prove with respect to being agile and, if they really are creating a new UI, that'll just complicate things more. I'd like to say we'll see something by the end of June, but who knows with that team. All I can say is, IE team, prove me wrong; &lt;strong&gt;&lt;em&gt;please&lt;/em&gt;&lt;/strong&gt;, prove me wrong!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=S-vhzj-4KNQ:RYPgC4QDOug:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=S-vhzj-4KNQ:RYPgC4QDOug:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=S-vhzj-4KNQ:RYPgC4QDOug:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/S-vhzj-4KNQ" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Wed, 17 Mar 2010 05:27:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1108</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1108/Default.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1109/MSDN-Subscription-February-2010.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1109</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1109&amp;PortalID=2&amp;TabID=142</trackback:ping><title>MSDN Subscription: February 2010</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/PGrvM-HCXEg/MSDN-Subscription-February-2010.aspx</link><description>&lt;img style="float: right;" alt="MSDN" src="/portals/michaelflanakin.com/weblog/2008/msdn.png" /&gt;The following consists of the &lt;b&gt;English&lt;/b&gt; DVD updates released under the &lt;b&gt;MSDN Premium (Team Suite)&lt;/b&gt; subscription level for&amp;nbsp;&lt;b&gt;February 2010&lt;/b&gt;.
&lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: underline;"&gt;Applications&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;em&gt;
&lt;ul&gt;
    &lt;li&gt;Disc 2434.25
    &lt;ul&gt;
        &lt;li&gt;Office 2007 Servers SP2 (x64 and x86), Office 2007 Suite SP2 (English, Multilanguage)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;/em&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="text-decoration: underline;"&gt;Servers&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;em&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc 3918.02&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Exchange Server 2010 (x64) (English, Chinese-Simplified, Chinese-Traditional, French, German, Italian, Japanese, Korean, Portuguese-Brazil, Russian, Spanish) &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;/em&gt;
&lt;p&gt;For more information, see the &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/index/default.aspx" _fcksavedurl="http://msdn.microsoft.com/en-us/subscriptions/index/default.aspx"&gt;MSDN Subscriptions Index&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=PGrvM-HCXEg:_SrICy66dPA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=PGrvM-HCXEg:_SrICy66dPA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=PGrvM-HCXEg:_SrICy66dPA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/PGrvM-HCXEg" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Wed, 24 Feb 2010 02:04:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1109</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1109/MSDN-Subscription-February-2010.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1107/Boot-to-VHD-Create-VHD-from-GUI.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1107</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1107&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Boot to VHD: Create VHD from GUI</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/wDBzTzuSs7w/Boot-to-VHD-Create-VHD-from-GUI.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="Windows 7" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/Weblog/2008/Windows7logo.png" /&gt;&lt;/p&gt;
&lt;p&gt;I've mentioned &lt;a href="http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1098/Boot-to-VHD-Create-VHD-from-Command-Line.aspx"&gt;how to create a new VHD from the command line&lt;/a&gt;, now let me mention how you can create a new VHD from the Windows GUI.&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Open Computer Management (&lt;strong&gt;&lt;font color="#0000ff"&gt;Start &amp;gt; &lt;u&gt;R&lt;/u&gt;un… &amp;gt; compmgmt.msc&lt;/font&gt;&lt;/strong&gt;)&lt;/li&gt;
    &lt;li&gt;In the left pane, select &lt;strong&gt;&lt;font color="#0000ff"&gt;Storage &amp;gt; Disk Management&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Right-click &lt;strong&gt;&lt;font color="#0000ff"&gt;Disk Management&lt;/font&gt;&lt;/strong&gt;, click &lt;strong&gt;&lt;font color="#0000ff"&gt;Create VHD&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Specify VHD settings and click &lt;strong&gt;&lt;font color="#0000ff"&gt;OK&lt;/font&gt;&lt;/strong&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Location &lt;/strong&gt;-- the path where you want to save the VHD&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Size &lt;/strong&gt;-- specify a size smaller than what's available on your system&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Format &lt;/strong&gt;-- choose dynamic sizing to slowly grow to the full disk size (what I'd recommend) or fixed, if you want to just allot the space outright and avoid potential out-of-space problems&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;In the main, center pane, right-click the label on the left for the new, unknown/unallocated disk, click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;I&lt;/u&gt;nitialize Disk&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;OK&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;In the main, center pane, right-click the main disk space visualization, click &lt;strong&gt;&lt;font color="#0000ff"&gt;New S&lt;em&gt;i&lt;/em&gt;mple Volume...&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Specify a volume label, click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;F&lt;/u&gt;inish&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Put Win7 or Server 2008 R2 DVD or &lt;a href="http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1095/Boot-from-USB-to-Install-Windows-7.aspx"&gt;bootable USB drive&lt;/a&gt; in&lt;/li&gt;
    &lt;li&gt;Restart your computer&lt;br /&gt;
    &lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;You'll need to be sure you can boot using the necessary device in BIOS settings (obviously)&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Press any key to boot from CD or DVD&lt;/li&gt;
    &lt;li&gt;When the Install Windows screen is shown, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Shift+F10&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;d:&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;diskpart&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;select vdisk file="d:\machines\win2008r2.vhd"&lt;/font&gt;&lt;/strong&gt;, press &lt;font color="#0000ff"&gt;&lt;strong&gt;Enter&lt;br /&gt;
    &lt;/strong&gt;&lt;/font&gt;&lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;Windows re-assigns your primary drive when running thru the installer. In all of my tests, C: was re-assigned to D:.&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;attach vdisk&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;exit&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;exit&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;I&lt;/u&gt;nstall Now&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Select desired OS (server only), click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Check &lt;strong&gt;&lt;font color="#0000ff"&gt;I &lt;u&gt;a&lt;/u&gt;ccept the license terms&lt;/font&gt;&lt;/strong&gt;, click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;C&lt;/u&gt;ustom (advanced)&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Select &lt;strong&gt;&lt;font color="#0000ff"&gt;Disk 1 Partition 1: &amp;lt;label&amp;gt;&lt;/font&gt;&lt;/strong&gt;, where &lt;strong&gt;&lt;font color="#0000ff"&gt;&amp;lt;label&amp;gt;&lt;/font&gt;&lt;/strong&gt; is the volume label you applied in step 11&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt; and continue to install the operating system as you normally would&amp;#160;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After rebooting, Windows Boot Manager will give you an option to boot into either the host or guest OS instances.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=wDBzTzuSs7w:OeusGdvd-8c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=wDBzTzuSs7w:OeusGdvd-8c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=wDBzTzuSs7w:OeusGdvd-8c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/wDBzTzuSs7w" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Fri, 19 Feb 2010 01:05:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1107</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1107/Boot-to-VHD-Create-VHD-from-GUI.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1105/Flash-and-Silverlight-Jobs.aspx#Comments</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1105</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1105&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Flash and Silverlight Jobs</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/OWHCzRo02LY/Flash-and-Silverlight-Jobs.aspx</link><description>&lt;p&gt;Silverlight has been Microsoft's golden child since v2 was released last year. The impact within the community has been astounding. Some demand the use of Silverlight without actually recognizing when and where the technology makes sense and others scoff at Silverlight either in favor of Flash or as a technology as "useless" as Flash. I roll my eyes every time I hear any of these three opinions... and they happen a lot. Flash went thru the hype cycle years ago and now it's Silverlight's turn. What I find amusing is that the hype seems to be much more powerful with Silverlight than it ever was with Flash. All we can do is fight the good fight.&lt;/p&gt;
&lt;p&gt;Not every rich experience needs to be Silverlight. JavaScript frameworks are making life as a web developer easier and easier, so I'd recommend that always be the default choice. Unfortunately, most developers still find the pain of JavaScript development too great. While I'm a big fan of JavaScript, it is far from a perfect language and is severely lacking when it comes to development and debugging tools. Flash and Silverlight both simplify things with better tools and a single-platform vision that&amp;#160;tremendously improves cross-browser development, but Flash is still lacking the one thing that makes Silverlight a no-brainer: XAML, backed by &lt;em&gt;real &lt;/em&gt;programming languages.&lt;/p&gt;
&lt;p&gt;XAML is immensely powerful and will continue to grow as more and more WPF features make it into Silverlight. XAML takes a new way of thinking, but it's well worth it for the simplicity and ease of development you get. But, more important than XAML is the fact that you have any .NET language you want and, with the inclusion of the &lt;a href="http://en.wikipedia.org/wiki/Dynamic_Language_Runtime"&gt;Dynamic Language Runtime (DLR)&lt;/a&gt;, there's virtually no reason not to use Silverlight. The one and only benefit Flash has is more mature tools. This is very important, but it is only a matter of time. Microsoft has both the will and the ability to overcome the current Flash tooling. The days of Flash are severely numbered. A look at the job market only confirms this. I just wish I had some of the same numbers from when Flash was initially released to&amp;#160;compare the difference.&lt;/p&gt;
&lt;p&gt;I truly believe that, if you're a web developer using &lt;em&gt;any &lt;/em&gt;language, you need to take the time to understand how Silverlight can benefit you. Yes, HTML5 is coming, but the power and flexibility of environments like Silverlight will quickly surpass anything the W3C will ever be able to come out with a specification for. Heck, in less than 2 years, we've seen 3 releases of Silverlight and&amp;#160;a beta version for the fourth, with speculations that Silverlight 4 is likely to release at Mix 2010, making it 4 full releases in 2.5 years. I'd like to see &lt;em&gt;any &lt;/em&gt;&lt;u&gt;one&lt;/u&gt; W3C spec ratified and fully released in all major browsers in such a timeframe. Such a feat is completely unheard of. Nevertheless, don't let me blab on about it. The numbers speak for themselves...&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://www.indeed.com/jobtrends?q=%22adobe+flash%22%2C+silverlight%2C&amp;amp;l=&amp;amp;relative=1"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" alt="Flash vs Silverlight Jobs" src="http://michaelflanakin.com/portals/michaelflanakin.com/weblog/2009/silverlightjobs-2009-12-27.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=OWHCzRo02LY:4yHQxVeMGz8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=OWHCzRo02LY:4yHQxVeMGz8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=OWHCzRo02LY:4yHQxVeMGz8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/OWHCzRo02LY" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Mon, 28 Dec 2009 03:31:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1105</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1105/Flash-and-Silverlight-Jobs.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1104/Lazy-Load-OneLiner-in-C.aspx#Comments</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1104</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1104&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Lazy Load One-Liner in C#</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/c67u5alaJNM/Lazy-Load-OneLiner-in-C.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="Microsoft .NET" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/Weblog/2008/dotnetlogo.png" /&gt;&lt;/p&gt;
&lt;p&gt;One thing I love about C# is that I'm constantly learning new ways to simplify and write less code. Perhaps PowerShell has a lot to do with this, but I put a lot of value in the power of the one-liner. With that, I wanted to share something small I recently discovered.&lt;/p&gt;
&lt;p&gt;There are three main ways to initialize your read-only class properties: field initializer, constructor, or property accessor. The first thing you need to consider when determining the right approach is whether you should use a &lt;span class="Code"&gt;&lt;span class="keyword"&gt;readonly&lt;/span&gt;&lt;/span&gt; or get-only variable. A &lt;span class="Code"&gt;&lt;span class="keyword"&gt;readonly&lt;/span&gt;&lt;/span&gt; variable has two primary benefits: guaranteeing the value won't change and better ensuring thread-safety. I'm not going to go into either of these, but I will say, if you can make your variable &lt;span class="Code"&gt;&lt;span class="keyword"&gt;readonly&lt;/span&gt;&lt;/span&gt;, do it. The main reason not to make your variable &lt;span class="Code"&gt;&lt;span class="keyword"&gt;readonly&lt;/span&gt;&lt;/span&gt; is if its initialization is resource-heavy and the variable isn't always crucial. There are other things to consider, but I want to focus more on the implementation of this code rather than the reasoning behind deciding on a good approach.&lt;/p&gt;
&lt;p&gt;Back in the .NET 2 days, I used the following approach to lazy loading.&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;private &lt;/span&gt;&lt;span class="class"&gt;PersonCollection&lt;/span&gt; _people;&lt;br /&gt;
&lt;span class="keyword"&gt;public&lt;/span&gt; &lt;span class="class"&gt;PersonCollection&lt;/span&gt; People&lt;br /&gt;
{&lt;br /&gt;
&lt;span class="keyword"&gt;&amp;#160;&amp;#160;&amp;#160; get&lt;/span&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;
&lt;span class="keyword"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if&lt;/span&gt; (&lt;span class="keyword"&gt;this&lt;/span&gt;._people == &lt;span class="keyword"&gt;null&lt;/span&gt;)&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;
&lt;span class="keyword"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this&lt;/span&gt;._people = &lt;span class="keyword"&gt;new&lt;/span&gt; &lt;span class="class"&gt;PersonCollection&lt;/span&gt;();&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;
&lt;span class="keyword"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return this&lt;/span&gt;._people;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;}&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;One way to achieve a one-liner would be to use an inline if statement.&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;private &lt;/span&gt;&lt;span class="class"&gt;PersonCollection&lt;/span&gt; _people;&lt;br /&gt;
&lt;span class="keyword"&gt;public&lt;/span&gt; &lt;span class="class"&gt;PersonCollection&lt;/span&gt; People&lt;br /&gt;
{&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span class="keyword"&gt;get&lt;/span&gt; { &lt;span class="keyword"&gt;return&lt;/span&gt; ((&lt;span class="keyword"&gt;this&lt;/span&gt;._people == &lt;span class="keyword"&gt;null&lt;/span&gt;) ? (&lt;span class="keyword"&gt;this&lt;/span&gt;._people = &lt;span class="keyword"&gt;new&lt;/span&gt; &lt;span class="class"&gt;PersonCollection&lt;/span&gt;()) : &lt;span class="keyword"&gt;this&lt;/span&gt;._people); }&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;The main problem with this is there's more one-liner than simplicity. This is a common problem with the inline if statement. For this reason, I avoided this type of lazy load approach.&lt;/p&gt;
&lt;p&gt;Recently, when hammering thru some code, typing &lt;span class="Code"&gt;== &lt;span class="keyword"&gt;null&lt;/span&gt;&lt;/span&gt; just made me think about the &lt;span class="Code"&gt;??&lt;/span&gt; operator. For those that don't know, this is essentially a null-check included with .NET 2 to simplify the use of nullable types (&lt;span class="Code"&gt;&lt;span class="class"&gt;Nullable&lt;/span&gt;&amp;lt;T&amp;gt;&lt;/span&gt;). If the value on the left is null, the value on the right is returned.&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;private &lt;/span&gt;&lt;span class="class"&gt;PersonCollection&lt;/span&gt; _people;&lt;br /&gt;
&lt;span class="keyword"&gt;public&lt;/span&gt; &lt;span class="class"&gt;PersonCollection&lt;/span&gt; People&lt;br /&gt;
{&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span class="keyword"&gt;get&lt;/span&gt; { &lt;span class="keyword"&gt;return&lt;/span&gt; &lt;span class="keyword"&gt;this&lt;/span&gt;._people ?? (&lt;span class="keyword"&gt;this&lt;/span&gt;._people = &lt;span class="keyword"&gt;new&lt;/span&gt; &lt;span class="class"&gt;PersonCollection&lt;/span&gt;()); }&lt;br /&gt;
}&lt;/p&gt;
&lt;div&gt;Nothing revolutionary, but, as I mentioned before, I love my one-liners!&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=c67u5alaJNM:ke0nkmLLsA0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=c67u5alaJNM:ke0nkmLLsA0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=c67u5alaJNM:ke0nkmLLsA0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/c67u5alaJNM" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Sun, 13 Dec 2009 23:31:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1104</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1104/Lazy-Load-OneLiner-in-C.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1103/Default.aspx#Comments</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1103</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1103&amp;PortalID=2&amp;TabID=142</trackback:ping><title>SharePoint Designer and Developer Position Descriptions</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/8RD7c84mc0E/Default.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="SharePoint" src="http://michaelflanakin.com/portals/michaelflanakin.com/weblog/sp2010.png" /&gt;&lt;/p&gt;
&lt;p&gt;I can't tell you how many resumes I've read and interviews I've performed in the name of finding a quality SharePoint developer. After seeing my customer painstakingly struggle thru this same process, I finally decided to put together a couple short blurbs to cover what it is to be a SharePoint designer and a SharePoint developer.&lt;/p&gt;
&lt;p&gt;I lump administration and design/customization together because I honestly believe you can't have one without the other -- at least to some extent -- but I'm obviously looking more for the latter than the former. Let me just say that, if I was building up a team to build SharePoint solutions, I'd want at least one of each of these types. Obviously, you'll want someone more focused on administration, if you're also doing operations work, but I'm more focused on building solutions than hostings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;SharePoint Administrator/Designer&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;em&gt;Experienced SharePoint administrator with a strong emphasis on customization. Extensive experience with SharePoint Designer and InfoPath are a must, as is a moderate ability to create customized web parts using a mixture of HTML, CSS, JavaScript, and XSL (i.e. using a Data View Web Part). Should at least have an understanding of:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;IIS/SharePoint troubleshooting (i.e. event and ULS logs)&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;How to customize branding&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;SharePoint Designer workflows&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;InfoPath forms&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Applicability and use of content types&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;SharePoint web service interfaces&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Feature deployment&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Standard features (i.e. search/indexing, content management, and Shared Service Providers (SSPs))&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Enterprise features (i.e. Forms Server, Excel Calculation Services, and Business Data Catalog (BDC))&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Reporting and business intelligence (BI)&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Security concerns and audience targeting&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Experience with PowerShell and ASP.NET development are a huge plus.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;SharePoint Developer&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;&lt;em&gt;Strong ASP.NET (C#) developer with experience building and deploying fully-automated SharePoint solutions. Must have an understanding of at least:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Standard ASP.NET (including membership providers and their applicability to SharePoint)&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;SharePoint object model and web service interfaces&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;SharePoint feature packaging and deployment&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Web parts and web part connections&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;SharePoint branding components&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Applicability and use of content types&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;SharePoint-hosted workflows&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Standard features (i.e. search/indexing, content management, and Shared Service Providers (SSPs))&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Enterprise features (i.e. Forms Server, Excel Calculation Services, and Business Data Catalog (BDC))&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Reporting and business intelligence (BI)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Above all, developers are expected to "live" in Visual Studio, yet be ablet o identify when SharePoint Designer and/or InfoPath would be more pragmatic -- and follow through with such a solution.&lt;br /&gt;
&amp;#160;&lt;br /&gt;
Senior developers and software architects must have broad, hands-on experience across the entire software development lifecycle with formal engineering processes. Experience with defining and documenting an applicable taxonomy and governance plan is a must.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you're interested in building SharePoint solutions, I highly recommend you find where you fit within these two descriptions. There's plenty of room to grow, but&amp;#160;they cover the foundations I -- and many others -- look for when building out SharePoint teams.&lt;/p&gt;
&lt;p&gt;Good&amp;#160;luck and happy job hunting!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=8RD7c84mc0E:g4dyaGwlo7w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=8RD7c84mc0E:g4dyaGwlo7w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=8RD7c84mc0E:g4dyaGwlo7w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/8RD7c84mc0E" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Tue, 17 Nov 2009 00:30:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1103</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1103/Default.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1102/MSDN-Subscription-November-2009.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1102</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1102&amp;PortalID=2&amp;TabID=142</trackback:ping><title>MSDN Subscription: November 2009</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/IxBxDhp6RKo/MSDN-Subscription-November-2009.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="MSDN" src="http://michaelflanakin.com/portals/michaelflanakin.com/weblog/2008/msdn.png" /&gt;&lt;/p&gt;
&lt;p&gt;The following consists of the &lt;strong&gt;English&lt;/strong&gt; DVD updates released under the &lt;strong&gt;MSDN Premium (Team Suite)&lt;/strong&gt; subscription level for&amp;#160;&lt;strong&gt;November 2009&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Operating Systems&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc 4617&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Windows Server 2008 R2 (x64)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Disc 4618&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Windows 7 Ultimate (x64 and x86)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Disc 4619&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Windows 7 Enterprise (x64 and x86)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Developer Tools&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc&amp;#160;4583.02&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Expression Studio 3&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, see the &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/index/default.aspx"&gt;MSDN Subscriptions Index&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=IxBxDhp6RKo:EGoPsHrocr0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=IxBxDhp6RKo:EGoPsHrocr0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=IxBxDhp6RKo:EGoPsHrocr0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/IxBxDhp6RKo" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Wed, 11 Nov 2009 01:12:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1102</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1102/MSDN-Subscription-November-2009.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1101/MSDN-Subscription-July-2009.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1101</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1101&amp;PortalID=2&amp;TabID=142</trackback:ping><title>MSDN Subscription: July 2009</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/uvWbkS0i5MQ/MSDN-Subscription-July-2009.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="MSDN" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/weblog/2008/msdn.png" /&gt;&lt;/p&gt;
&lt;p&gt;The following consists of the &lt;strong&gt;English&lt;/strong&gt; DVD updates released under the &lt;strong&gt;MSDN Premium (Team Suite)&lt;/strong&gt; subscription level for&amp;#160;&lt;strong&gt;July 2009&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Servers&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc 4595.01&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;SQL Server 2008 Service Pack 1 (x86)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Disc 2436.38&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;BizTalk Server 2009&lt;/li&gt;
        &lt;li&gt;BizTalk Server 2009 Adapters and Accelerators&lt;/li&gt;
        &lt;li&gt;Host Integration Sever 2009&lt;/li&gt;
        &lt;li&gt;SQL Server 2008 SP1&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Disc 4614.01&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Customer Care Framework 2009 SP1&amp;#160;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Planned releases for November 2009&amp;#160;include:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Expression Studio 3&lt;/li&gt;
    &lt;li&gt;Windows 7&lt;/li&gt;
    &lt;li&gt;Windows Server 2008 R2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, see the &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/index/default.aspx"&gt;MSDN Subscriptions Index&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=uvWbkS0i5MQ:6nfbWbWtSWY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=uvWbkS0i5MQ:6nfbWbWtSWY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=uvWbkS0i5MQ:6nfbWbWtSWY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/uvWbkS0i5MQ" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Fri, 16 Oct 2009 00:28:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1101</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1101/MSDN-Subscription-July-2009.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1100/MSDN-Subscription-June-2009.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1100</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1100&amp;PortalID=2&amp;TabID=142</trackback:ping><title>MSDN Subscription: June 2009</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/YHjNaaDLRPE/MSDN-Subscription-June-2009.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="MSDN" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/weblog/2008/msdn.png" /&gt;&lt;/p&gt;
&lt;p&gt;The following consists of the &lt;strong&gt;English&lt;/strong&gt; DVD updates released under the &lt;strong&gt;MSDN Premium (Team Suite)&lt;/strong&gt; subscription level for&amp;#160;&lt;strong&gt;June 2009&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Servers&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc 4616.01&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Commerce Server 2009&lt;/li&gt;
        &lt;li&gt;Office Communications Server 2007 R2&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Applications&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc 2434.24&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Office Accounting 2009&lt;/li&gt;
        &lt;li&gt;Office Accounting 2009 SP1&lt;/li&gt;
        &lt;li&gt;Office Communicator 2007 R2&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, see the &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/index/default.aspx"&gt;MSDN Subscriptions Index&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=YHjNaaDLRPE:VX2eAAmn-yI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=YHjNaaDLRPE:VX2eAAmn-yI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=YHjNaaDLRPE:VX2eAAmn-yI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/YHjNaaDLRPE" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Thu, 15 Oct 2009 23:55:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1100</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1100/MSDN-Subscription-June-2009.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1099/MSDN-Subscription-March-2009.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1099</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1099&amp;PortalID=2&amp;TabID=142</trackback:ping><title>MSDN Subscription: March 2009</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/0UzJZNPAvsE/MSDN-Subscription-March-2009.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="MSDN" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/weblog/2008/msdn.png" /&gt;&lt;/p&gt;
&lt;p&gt;The following consists of the &lt;strong&gt;English&lt;/strong&gt; DVD updates released under the &lt;strong&gt;MSDN Premium (Team Suite)&lt;/strong&gt; subscription level for &lt;strong&gt;March 2009&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Developer Tools&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc&amp;#160;4583&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Expression Studio 2&lt;/li&gt;
        &lt;li&gt;Expression Media 2&lt;/li&gt;
        &lt;li&gt;Expression Blend 2 SP1&lt;/li&gt;
        &lt;li&gt;Expression Encoder 2 SP1&lt;/li&gt;
        &lt;li&gt;Expression Media 2 SP1&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Disc 4603&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Visual Studio 2008 SP1&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Disc 3096.1&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Expression Blend 2&lt;/li&gt;
        &lt;li&gt;Expression Blend 2 SP1&lt;/li&gt;
        &lt;li&gt;Expression Web 2&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;em&gt;Disc 4612&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Visual Studio Team System 2008 Team Foundation Server Service Pack 1&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Servers&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Disc&amp;#160;4616&lt;/em&gt;
    &lt;ul&gt;
        &lt;li&gt;Microsoft Office Communications Server 2007 R2 Enterprise Edition&lt;/li&gt;
        &lt;li&gt;Office Communicator 2007 R2&lt;/li&gt;
        &lt;li&gt;Unified Communications Managed API 2.0 SDK&lt;/li&gt;
        &lt;li&gt;Microsoft Application Virtualization 4.5 for Terminal Services&lt;/li&gt;
        &lt;li&gt;System Center Configuration Manager 2007 R2&lt;/li&gt;
        &lt;li&gt;System Center Virtual Machine Manager 2008&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, see the &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/index/default.aspx"&gt;MSDN Subscriptions Index&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=0UzJZNPAvsE:Sw8aOokKiOM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=0UzJZNPAvsE:Sw8aOokKiOM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=0UzJZNPAvsE:Sw8aOokKiOM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/0UzJZNPAvsE" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Thu, 15 Oct 2009 23:28:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1099</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1099/MSDN-Subscription-March-2009.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1098/Boot-to-VHD-Create-VHD-from-Command-Line.aspx#Comments</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1098</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1098&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Boot to VHD: Create VHD from Command Line</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/GnfSUQkwdv0/Boot-to-VHD-Create-VHD-from-Command-Line.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="Windows 7" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/Weblog/2008/Windows7logo.png" /&gt;&lt;/p&gt;
&lt;p&gt;Virtual PC is great. Well, it's ok -- it does the job. There's a better way, tho, and that better way is to just get rid of the host OS...&amp;#160;or, ask the OS to politely let you get by for a while. That's exactly what Windows 7 does by enabling you to boot into a VHD.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hanselman.com/blog"&gt;Scott Hanselman&lt;/a&gt;&amp;#160;&lt;a href="http://feeds.feedburner.com/ScottHanselman"&gt;&lt;img title="Syndicated feed" border="0" alt="Syndicated feed" width="16" height="16" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/images/icons/feed_16x.gif" /&gt;&lt;/a&gt; &lt;a href="http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx"&gt;blogged about booting from a VHD&lt;/a&gt; in more detail, but I wanted to break it down into discrete steps. For simplicity, I'm going to start from scratch, creating a VHD from the command line.&lt;/p&gt;
&lt;ol type="1"&gt;
    &lt;li value="1"&gt;Put Win7 or Server 2008 R2 DVD or &lt;a href="http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1095/Boot-from-USB-to-Install-Windows-7.aspx"&gt;bootable USB drive&lt;/a&gt; in&lt;/li&gt;
    &lt;li&gt;Restart your computer&lt;br /&gt;
    &lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;You'll need to be sure you can boot using the necessary device in BIOS settings (obviously)&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Press any key to boot from CD or DVD&lt;/li&gt;
    &lt;li&gt;When the Install Windows screen is shown, press &lt;font color="#0000ff"&gt;&lt;strong&gt;Shift+F10&lt;/strong&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;d:&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;md machines&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;diskpart&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;create vdisk file="c:\machines\win2008r2.vhd" type=expandable maximum=50000&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;
    &lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;Be sure to set a maximum your machine can support; Windows will temporarily expand the VHD to that size when you boot into it&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;select vdisk file="c:\machines\win2008r2.vhd"&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;attach vdisk&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;exit&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff"&gt;exit&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;I&lt;/u&gt;nstall Now&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Select desired OS (server only), click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Check &lt;strong&gt;&lt;font color="#0000ff"&gt;I &lt;u&gt;a&lt;/u&gt;ccept the license terms&lt;/font&gt;&lt;/strong&gt;, click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;C&lt;/u&gt;ustom (advanced)&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Select &lt;strong&gt;&lt;font color="#0000ff"&gt;Disk 1 Unallocated Space (...GB)&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;font color="#0000ff"&gt;&lt;strong&gt;Drive options (&lt;u&gt;a&lt;/u&gt;dvanced)&lt;/strong&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;N&lt;u&gt;e&lt;/u&gt;w&lt;/font&gt;&lt;/strong&gt;, then &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;A&lt;/u&gt;pply&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;F&lt;/u&gt;ormat&lt;/font&gt;&lt;/strong&gt;, then &lt;strong&gt;&lt;font color="#0000ff"&gt;OK&lt;/font&gt;&lt;/strong&gt;&lt;br /&gt;
    &lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;If you see a "Windows cannot be installed to this disk..." error, ignore it.&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;strong&gt;&lt;font color="#0000ff"&gt;&lt;u&gt;N&lt;/u&gt;ext&lt;/font&gt;&lt;/strong&gt; and continue to install the operating system as you normally would&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After the installation completes, Windows Boot Manager will give you an option to boot into either the host or guest OS instances. Gotta love it!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=GnfSUQkwdv0:YolmH8ur5gU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=GnfSUQkwdv0:YolmH8ur5gU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=GnfSUQkwdv0:YolmH8ur5gU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/GnfSUQkwdv0" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Thu, 15 Oct 2009 22:40:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1098</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1098/Boot-to-VHD-Create-VHD-from-Command-Line.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1097/Default.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1097</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1097&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Gartner Predicts the Future of the Mobile Market</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/Jh0L4qH38gw/Default.aspx</link><description>&lt;p&gt;Gartner recently released a &lt;a href="http://www.gartner.com/DisplayDocument?id=1186614"&gt;smart phone market&amp;#160;forecast&lt;/a&gt;, which looks at&amp;#160;prior and predicted&amp;#160;market share fluctuations from 2007 to 2013. I found some very interesting, but quite explainable predictions. I recommend taking a look at it yourself, but here are a few teasers.&lt;/p&gt;
&lt;p&gt;The overall market has grown ~1.5x in 2 years and is expected to grow ~3.6x over the next 4 years. The ratio of consumer-to-business phones wavers, but remains about 3:1 throughout the assessed time frame.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Android&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;Gartner predicts Android quadrupling its market over the next 4 years, ending up #2 in the market. This is likely due to the open nature of the platform. While I agree with a large&amp;#160;growth, 4x isn't quite what I'd expect. Seeing this, you're likely to suspect other big changes, too. I think you'll be surprised with Gartner's numbers, tho.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Blackberry&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;Blackberry is estimated to steadily decline over the coming years, ultimately dropping 6% from their current standing. From #3 in 2007 to #2 in 2008&amp;#160;thru 2010 to&amp;#160;#4 in 2013. A thought-provoking rise and decline, but it shows how Blackberry isn't quite the innovator they'd like to be.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;iPhone&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;For what most believe is the golden child of the mobile market, Gartner doesn't have much faith in the iPhone platform. iPhone tripled its market share from 2007 to 2008, then grew 50% in 2009. Most would think this would continue to shoot up over the coming years, but Gartner begs to differ. Gartner predicts only minor growth year over year thru 2013. They foresee a 10% growth by next year, virtually no growth the next, and a very trivial 1% growth in 2013. From here on out, the iPhone is expected to remain a #3 player thru 2013. Apple brought an interesting player to the market a few years back, but Gartner seems to believe that's where their innovation stops. I was very surprised to see the dwindling growth.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Symbian&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;Given the fact that we know Symbian is #1 today and we've already covered the #2, #3, and #4 players, you might expect to see Symbian in the #1 spot. Well... you'd be right. Gartner sees Symbian maintaining their place, but I speculate this isn't -- nor has it been -- due to superior innovation in the market. It's only a matter of time before other players take over. I suspect (not Gartner)&amp;#160;they'll drop to #2 by 2016 as other players drive advancements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;WebOS&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;The road has been long and rocky for Palm, as we all know. WebOS seems like a last ditch effort to maintain a place in the mobile market. Gartner predicts they'll double their market share in 2010, but that's about the only success they'll see, as they slowly lose market share.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Windows Mobile&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;Gartner shows Windows Mobile steadily dropping from 2007 to 2010. That's no surprise, given all we've heard. With a mid-2010 release of Windows Mobile 7 -- Microsoft's response to the iPhone -- it's no surprise we won't see a spike until 2011, when Windows Mobile jumps up 15%. Gartner doesn't have faith that this will be good enough, tho, as they foresee market share dropping a little more than half a percent below their current share. While Microsoft isn't talking about Windows Mobile 8, they'll have to deliver it in relatively short order, if they want to show the market they mean business. I have faith this will happen by 2013. In fact, I'm hopeful that we'll see some major enhancements and mergers between Zune and Windows Mobile in the same time frame. My gut tells me we'll see this by 2012. It won't be until then that people truly see what Microsoft is capable of.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Others&lt;br /&gt;
&lt;/u&gt;&lt;/strong&gt;Linux, Maemo, and others&amp;#160;are also included in the study. I'm not familiar with&amp;#160;any serious&amp;#160;Linux competitors&amp;#160;other than Android, but they've lost 50% of their market share in the last 2 years and are presumed to continue to drop, eventually giving Palm some competition for the least amount of share by "major" competitors... if you consider Linux a major competitor. I have to say I was surprised by &lt;a href="http://en.wikipedia.org/wiki/Maemo_(operating_system)"&gt;Maemo&lt;/a&gt;, which I don't think I've heard much about. It's a Linux-based tablet OS Nokia developed and subsequently brought -- or, at least, is bringing -- to the smart phone market. I liken this to the opposite of Google's Android-to-Chrome OS move. With a 2009 initial showing, Gartner surprisingly predicts Maemo shooting up to 6.5% by 2013. Very interesting; unlike other players, who drop from 1.1% in 2007&amp;#160;to&amp;#160;less than&amp;#160;.1% by 2013.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;If you ask me, Microsoft should seriously consider buying RIM. Right now, they're #2 and #4, but Microsoft stands&amp;#160;to gain a tremendous amount from the corporate&amp;#160;presence&amp;#160;Blackbery currently holds. With what's expected to come in Windows Mobile 7, this would also give Blackberry users&amp;#160;a very nice glimmer of hope around what I speculate will be a very nice mobile OS. Now isn't the time, of course. Given Gartner's insights, I'd say 2011 would be the best time to drive such an acquisition, hopefully showing value for Blackberry users in the Windows Mobile 8 time frame.&lt;/p&gt;
&lt;p&gt;Short of a Microsoft/RIM acquisition, somebody needs to buy Palm for Palm's sake. Given my newly-acquired knowledge of&amp;#160;Maemo, I have to say Nokia should seriously consider it. I was initially thinking RIM should give it a thought, but I don't see them having much to gain. Maemo and WebOS both have a lot in common. A merger could go a long way... not that Nokia needs Palm. The Palm-ers could definitely use some Nokia love, tho.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;The last thing I should mention is that most of this is speculation on my part. Gartner provided the numbers -- aside from my Symbian 2016 and Windows Mobile 2012/13 comments. I&amp;#160;wholly recommend you look at Gartner's numbers and other mobile studies they have to fully understand what they're thinking and why they made these forecasts.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=Jh0L4qH38gw:hE6iGUNQoZM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=Jh0L4qH38gw:hE6iGUNQoZM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=Jh0L4qH38gw:hE6iGUNQoZM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/Jh0L4qH38gw" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Sun, 27 Sep 2009 21:28:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1097</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1097/Default.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1096/Silverlight-3-Tools-Offline-Install.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1096</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1096&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Silverlight 3 Tools Offline Install</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/Wx3jnWHxsBE/Silverlight-3-Tools-Offline-Install.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="Silverlight" src="http://michaelflanakin.com/portals/michaelflanakin.com/weblog/2008/silverlight.png" /&gt;&lt;/p&gt;
&lt;p&gt;Ever try to install the Silverlight dev tools in an environment with "filtered" or even no access to the internet? If so, you've probably taken a look at the errors in the log and&amp;#160;seen the following error:&lt;/p&gt;
&lt;blockquote style="margin-right: 0px" dir="ltr"&gt;
&lt;p&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;Error from JobError Callback : hr= 0x80190193 Context=5 Description=HTTP status 403: The client does not have sufficient access rights to the requested server object. . Percentage downloaded = 0&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For some tools, like .NET 3.5 and 3.5 SP1, there's an offline installer available on their respective&amp;#160;download pages. Unfortunately, the Silverlight dev tools don't have that. I major oversight, if you ask me, but what can you do? Note that this was a problem with Silverlight 2 and 3. I haven't heard anything about a fix for the future, but I have to think they realize the work-around is ridiculous. Enough of my blabbering, tho...&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Download and save the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9442b0f2-7465-417a-88f3-5e7b5409e9dd&amp;amp;displaylang=en"&gt;Silverlight 3&amp;#160;Tools for VS 2008 SP1&lt;/a&gt;&amp;#160;to your desktop&lt;/li&gt;
    &lt;li&gt;Create a new&amp;#160;&lt;font color="#0000ff" face="Courier New"&gt;&lt;strong&gt;sltools&lt;/strong&gt;&lt;/font&gt;&amp;#160;directory on your desktop&lt;/li&gt;
    &lt;li&gt;From a command prompt, run &lt;font color="#0000ff" face="Courier New"&gt;&lt;strong&gt;silverlight3_tools.exe /x&lt;/strong&gt;&lt;/font&gt; to extract the files&lt;br /&gt;
    &lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;You can also use a tool like &lt;a href="http://www.7-zip.org"&gt;7-zip&lt;/a&gt; to extract the files&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Specify the directory you created in step 2&lt;/li&gt;
    &lt;li&gt;Download and save the &lt;a href="http://silverlight.dlservice.microsoft.com/download/C/5/B/C5BB5CD8-E871-49AC-8A40-61010E1FD1CF/Silverlight_Developer.exe"&gt;Silverlight Developer Runtime&lt;/a&gt; to the &lt;font color="#0000ff" face="Courier New"&gt;&lt;strong&gt;sltools&lt;/strong&gt;&lt;/font&gt;&amp;#160;directory&lt;br /&gt;
    &lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;My problem was that the Sl Dev Runtime is at a blocked URL, so you may have to download it offline and bring it into your environment&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Run &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;sltools\SPInstaller.exe&lt;/font&gt;&lt;/strong&gt;&amp;#160;to perform the actual installation&lt;/li&gt;
    &lt;li&gt;Delete the &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;sltools&lt;/font&gt;&lt;/strong&gt;&amp;#160;directory&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That's it. Not hard, but annoying.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://timheuer.com"&gt;Tim Heuer&lt;/a&gt;&amp;#160;&lt;a href="http://feeds.timheuer.com/timheuer"&gt;&lt;img title="Syndicated feed" border="0" alt="Syndicated feed" width="16" height="16" src="http://michaelflanakin.com/portals/michaelflanakin.com/images/icons/feed_16x.gif" /&gt;&lt;/a&gt; has a &lt;a href="http://timheuer.com/blog/archive/2008/09/29/install-silverlight-2-rc0-offline.aspx"&gt;similar blog post for Silverlight 2&lt;/a&gt;, but I wanted to share this because the developer runtime is in a new location. &lt;strike&gt;I'm still trying to figure out what the full URL is, so I'll update this if I get a chance to figure that out.&lt;/strike&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update: &lt;/strong&gt;Thanks to the &lt;/em&gt;&lt;a href="http://blogs.msdn.com/rpomeroy"&gt;&lt;em&gt;Bob Pomeroy&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;#160;&lt;/em&gt;&lt;a href="http://blogs.msdn.com/rpomeroy/atom.xml"&gt;&lt;em&gt;&lt;img title="Syndicated feed" border="0" alt="Syndicated feed" src="http://michaelflanakin.com/portals/michaelflanakin.com/images/icons/feed_16x.gif" width="16" height="16" /&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt; from the Silverlight team for helping me get the direct URL for the Silverlight 3 developer runtime.&lt;/em&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=Wx3jnWHxsBE:-v6mYdfQKRY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=Wx3jnWHxsBE:-v6mYdfQKRY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=Wx3jnWHxsBE:-v6mYdfQKRY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/Wx3jnWHxsBE" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Sat, 12 Sep 2009 15:30:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1096</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1096/Silverlight-3-Tools-Offline-Install.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1095/Boot-from-USB-to-Install-Windows-7.aspx#Comments</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1095</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1095&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Boot from USB to Install Windows 7</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/znmDPhgW-04/Boot-from-USB-to-Install-Windows-7.aspx</link><description>&lt;p&gt;One of the things I really like about Windows 7 is it can be installed from a USB drive -- perhaps thanks to the rise in netbooks. This isn't anything terribly new to the world of computers, but it's always nice when you have a new feature to play with -- and, let's face it, Windows 7 is all about simplicity. When I first heard about installing from a bootable USB drive, I hoped it was going to be as simple as copying the files over. It wasn't. All-in-all, the process wasn't too bad, tho.&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Attach the USB drive&lt;/li&gt;
    &lt;li&gt;If you have anything on the drive you want to keep, copy it off&lt;/li&gt;
    &lt;li&gt;Click &lt;img style="vertical-align: middle" alt="Start" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/weblog/2009/startbutton.png" /&gt;, type and select the&amp;#160;&lt;font color="#0000ff" face="Courier New"&gt;&lt;strong&gt;Device Manager&lt;/strong&gt;&lt;/font&gt; option&lt;/li&gt;
    &lt;li&gt;Expand&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Disk Drives&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Right-click your USB drive, click &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;&lt;u&gt;P&lt;/u&gt;roperties &amp;gt; Policies&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Check &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Optimize for performance&lt;/font&gt;&lt;/strong&gt; and click &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;OK&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Close Device Manager&lt;/li&gt;
    &lt;li&gt;Open Windows Explorer (&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Win+E&lt;/font&gt;&lt;/strong&gt;)&lt;/li&gt;
    &lt;li&gt;Select &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Computer&lt;/font&gt;&lt;/strong&gt;, right-click the USB drive, select &lt;font color="#0000ff" face="Courier New"&gt;&lt;strong&gt;&lt;u&gt;F&lt;/u&gt;ormat...&lt;br /&gt;
    &lt;/strong&gt;&lt;/font&gt;&lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;Remember the total size of the USB drive and what drive letter it is assigned&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Select the&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;NTFS&lt;/font&gt;&lt;/strong&gt; file system, uncheck all format options,&amp;#160;and click&amp;#160;&lt;font color="#0000ff" face="Courier New"&gt;&lt;strong&gt;&lt;u&gt;S&lt;/u&gt;tart&lt;br /&gt;
    &lt;/strong&gt;&lt;/font&gt;&lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;This process will take a while, so we're going to multi-task&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;While the USB drive is being formatted, copy the Windows 7 DVD contents to the&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;c:\win7&lt;/font&gt;&lt;/strong&gt;&amp;#160;directory&lt;br /&gt;
    &lt;em&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;If you only have an ISO file, use &lt;a href="http://7-zip.org"&gt;7-zip&lt;/a&gt; to extract contents to the target directory&lt;/em&gt;&lt;/li&gt;
    &lt;li&gt;Click &lt;img style="vertical-align: middle" alt="Start" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/weblog/2009/startbutton.png" /&gt;, type&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;powershell&lt;/font&gt;&lt;/strong&gt;, right-click&amp;#160;the&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Windows PowerShell&lt;/font&gt;&lt;/strong&gt;&amp;#160;option, and select&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Run as &lt;u&gt;a&lt;/u&gt;dministrator&lt;/font&gt;&lt;/strong&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;em&gt;Fine, fine... if you're not on the band wagon,&amp;#160;run &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Command Prompt&lt;/font&gt;&lt;/strong&gt; as administrator&lt;/em&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;When the USB drive is done formatting, type &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;diskpart&lt;/font&gt;&lt;/strong&gt;, and&amp;#160;press &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;list disk&lt;/font&gt;&lt;/strong&gt; and&amp;#160;press &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Enter&lt;/font&gt;&lt;/strong&gt;
    &lt;ul&gt;
        &lt;li&gt;This will return results like the following. In this case, I have a 16 GB drive as disk 1.&lt;br /&gt;
        &lt;br /&gt;
        &lt;font color="#0000ff" face="Courier New"&gt;DISKPART&amp;gt; list disk&lt;br /&gt;
        &amp;#160; Disk ###&amp;#160; Status&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Size&amp;#160;&amp;#160;&amp;#160;&amp;#160; Free&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dyn&amp;#160; Gpt&lt;br /&gt;
        &amp;#160; --------&amp;#160; -------------&amp;#160; -------&amp;#160; -------&amp;#160; ---&amp;#160; ---&lt;br /&gt;
        &amp;#160; Disk 0&amp;#160;&amp;#160;&amp;#160; Online&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 74 GB&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 B&lt;br /&gt;
        &amp;#160; &lt;font color="#ff0000"&gt;&lt;strong&gt;Disk 1&amp;#160;&amp;#160;&amp;#160; Online&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 14 GB&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 0 B&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;
        &amp;#160;&lt;/font&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;select disk &lt;font color="#ff0000"&gt;&amp;lt;d&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;, where&amp;#160;&lt;strong&gt;&lt;font color="#ff0000" face="Courier New"&gt;&amp;lt;d&amp;gt;&lt;/font&gt;&lt;/strong&gt; is the disk number from the previous step, and press &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;list partition&lt;/font&gt;&lt;/strong&gt;, press &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;
    &lt;ul&gt;
        &lt;li&gt;This will return results like the following. In this case, I have a 16 GB drive as disk 1.&lt;br /&gt;
        &lt;br /&gt;
        &lt;font color="#0000ff" face="Courier New"&gt;DISKPART&amp;gt; list&amp;#160;partition&lt;br /&gt;
        &amp;#160;&amp;#160;Partition ###&amp;#160; Status&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Size&amp;#160;&amp;#160;&amp;#160;&amp;#160; Offset&lt;br /&gt;
        &amp;#160; -------------&amp;#160; -------------&amp;#160; -------&amp;#160; -------&lt;br /&gt;
        &amp;#160;&amp;#160;&lt;font color="#ff0000"&gt;&lt;strong&gt;Partition 1&amp;#160;&amp;#160;&amp;#160; Primary&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 14 GB&amp;#160;&amp;#160;&amp;#160;&amp;#160;20 KB&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;
        &amp;#160;&lt;/font&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;select&amp;#160;partition &lt;font color="#ff0000"&gt;&amp;lt;p&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;, where&amp;#160;&lt;strong&gt;&lt;font color="#ff0000" face="Courier New"&gt;&amp;lt;p&amp;gt;&lt;/font&gt;&lt;/strong&gt; is the&amp;#160;partition number from the previous step (most likely 1), and press &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;active&lt;/font&gt;&lt;/strong&gt;, to&amp;#160;make this partition active an&amp;#160;press &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;exit&lt;/font&gt;&lt;/strong&gt; and press &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;When the Windows 7 disk contents are done copying, type&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;cd c:\win7\boot&lt;/font&gt;&lt;/strong&gt;&amp;#160;and press &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Type&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;.\bootsect /nt60 &lt;font color="#ff0000"&gt;&amp;lt;e:&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;, where&amp;#160;&lt;strong&gt;&lt;font color="#ff0000" face="Courier New"&gt;&amp;lt;e:&amp;gt;&lt;/font&gt;&lt;/strong&gt; is the drive letter your USB drive is assigned to (i.e. &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;e:&lt;/font&gt;&lt;/strong&gt;), and press &lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;Enter&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;Lastly, copy the contents of&amp;#160;the&amp;#160;&lt;strong&gt;&lt;font color="#0000ff" face="Courier New"&gt;c:\win7&lt;/font&gt;&lt;/strong&gt;&amp;#160;directory to the root of your USB drive&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Wow... 23 steps seems like a lot more than I originally realized, but it's just about going thru the motions. You'll be waiting for the USB drive to be formatted and files to be copied for the majority of the time. Once you're done, reboot and plug in your USB drive to kick off the installation. Remember to check your BIOS boot settings. If your machine isn't configured to even try to boot from USB, you won't get very far.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=znmDPhgW-04:z7A2EYytlv8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=znmDPhgW-04:z7A2EYytlv8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=znmDPhgW-04:z7A2EYytlv8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/znmDPhgW-04" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Sat, 22 Aug 2009 01:34:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1095</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1095/Boot-from-USB-to-Install-Windows-7.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1094/Default.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1094</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1094&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Comparing Virtual Earth and MapPoint Web Service</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/T5GytapW-co/Default.aspx</link><description>&lt;p&gt;When I need to create a geospatial visualization, Virtual Earth is my default answer. When talking to someone who's been in this space for a while, he mentioned the MapPoint Web Service. I initially assumed this was a legacy offering that Virtual Earth replaced. Apparently not. &lt;a href="http://blog.tatham.oddie.com.au"&gt;Tatham Oddie&lt;/a&gt; has a very nice &lt;a href="http://blog.tatham.oddie.com.au/2006/10/26/whats-the-difference-between-virtual-earth-and-mappoint-web-service/"&gt;high level comparison&lt;/a&gt; to at least help you determine which makes the most sense in a given situation.&lt;/p&gt;
&lt;p&gt;
&lt;table border="0"&gt;
    &lt;thead&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;#160;&lt;/td&gt;
            &lt;th scope="col"&gt;Virtual Earth&lt;/th&gt;
            &lt;th scope="col"&gt;MapPoint Web Service&lt;/th&gt;
        &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;th scope="row"&gt;Map Styles&lt;/th&gt;
            &lt;td&gt;Road, Aerial, Birds eye&lt;/td&gt;
            &lt;td&gt;Over 30 different styles (optimised schemes for night viewing, etc) however no aerial imagery&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;th scope="row"&gt;Integration style&lt;/th&gt;
            &lt;td&gt;JS control (best for embedding in web pages)&lt;/td&gt;
            &lt;td&gt;SOAP web service (usable anywhere)&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;th scope="row"&gt;Interface style&lt;/th&gt;
            &lt;td&gt;Drag and drop positioning, scroll wheel support, interactive pushpins, AJAX based.&lt;/td&gt;
            &lt;td&gt;Roll your own (it returns an image and you have to work out what to do with it).&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;th scope="row"&gt;Pushpin support&lt;/th&gt;
            &lt;td&gt;You create them all yourself on the fly using API calls – any clustering / filtering optimizations have to be done manually.&lt;/td&gt;
            &lt;td&gt;Can upload pushpin sets to their databases and they will handle plotting / clustering and filtering.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;th scope="row"&gt;Routes&lt;/th&gt;
            &lt;td&gt;Specify a start point and an end point and they’ll give you a route in text. End of story.&lt;/td&gt;
            &lt;td&gt;Specify the waypoints, preferred road styles (back roads, highways, toll roads, non-toll roads) and it will return a machine readable result set.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;th scope="row"&gt;Cost&lt;/th&gt;
            &lt;td&gt;Free (commercial use has some minor restrictions)&lt;/td&gt;
            &lt;td&gt;Per transaction&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;th scope="row"&gt;SDK documentation and support&lt;/th&gt;
            &lt;td&gt;Basic MSDN docs, active community (&lt;a href="http://www.viavirtualearth.com"&gt;www.viavirtualearth.com&lt;/a&gt;)&lt;/td&gt;
            &lt;td&gt;Plenty of MSDN docs and articles, including VS.NET integrated help and plenty of websites (&lt;a href="http://www.mp2kmag.com"&gt;www.mp2kmag.com&lt;/a&gt;)&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=T5GytapW-co:_8BYneEjgt0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=T5GytapW-co:_8BYneEjgt0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=T5GytapW-co:_8BYneEjgt0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/T5GytapW-co" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Sat, 02 May 2009 18:04:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1094</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1094/Default.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1093/A-Plea-for-IE.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1093</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1093&amp;PortalID=2&amp;TabID=142</trackback:ping><title>A Plea for IE</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/CJwnn3TCrqk/A-Plea-for-IE.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="Internet Explorer" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/weblog/2009/ie.png" /&gt;&lt;/p&gt;
&lt;p&gt;Microsoft is out to prove a point with Windows 7. I can see the message clearly: "See, we can deliver on time; and earlier than most expected. And to top it all off, we did so without drastically changing the OS. That 'polished' OS you're looking at... yeah, it's Vista; 'Vista-point-1' to be exact. Sure, we tweaked it; but that's just to prove another point: Microsoft software isn't about bloat." I could probably go on for a while, but the signs are all there. Sinofsky has done a great job taking the Windows team under his wing. I've been very happy with some of the decisions they've made. As a matter of fact, I'm hoping to see some of the same changes on other fronts. Enter Internet Explorer.&lt;/p&gt;
&lt;p&gt;IE8 is a big flop in my book. Don't get me wrong, it's my default browser and I love the enhancements; but it's just hiding the real, underlying problem: the foundation. I apologize for the analogy, but you can only mold a pile of crap so many ways before it just starts falling apart. Arguably, the same can be said about Windows, but Windows 7 has really given it a refresh. It's hard to explain how much better Windows 7 feels. I have to say I'd liken it to the first day I got Windows Vista, to be honest; but the key differentiator there is that I had quality hardware that was up to the challenge and no legacy software or devices to be concerned with. I'm not the "normal" user, of course, and I feel bad for those who had bad experiences. It's not because the software is bad, it's because your circumstances around which you experienced it were wrong. Not that Microsoft isn't to blame, tho; but I'm getting way off topic. It's time for a major change with IE.&lt;/p&gt;
&lt;p&gt;I remember seeing some early concepts around IE8. At first glance, I was confused at a few of the ideas -- I'm thinking of one in particular -- but after I paused to really mull it over, it hit me. The power users would have at their fingertips would be astounding. There's a common root to the booming growth of Google and Firefox. This is exactly what Microsoft would've seen with this feature. Guess what: that feature never saw the light of day. As a matter of fact, I don't even know that it made it past that slide deck. Admittedly, the idea was rough, but it had some real potential. What's funny is that I just read something about the same concept being applied to another browser. &lt;strong&gt;*sigh*&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before IE8 beta 1 hit the streets, I saw another slide deck about what would be included in IE8 and 9. At first, I was excited, but it didn't take long for that to wear off. I actually began to question some of the decisions. There was (once again) one feature loved, but then I started to wonder if it even made sense. Depending on whether the team takes a left or a right out the gate will be the deciding factor for that feature... if it's still even a possibility. IE8 was pushed back so much that the IE9 time frame and feature set is completely out of the picture for what I saw. It's too bad; I was looking forward to a few quick revs. At the same time, this could be perfect timing.&lt;/p&gt;
&lt;p&gt;Windows 7 is on the way, with rumors of &lt;a href="http://www.neowin.net/news/main/09/01/30/microsoft-official-hints-at-april-for-windows-7-rc-release"&gt;April&lt;/a&gt; and &lt;a href="http://blogs.zdnet.com/microsoft/?p=2369"&gt;May&lt;/a&gt; release candidates culminating in a &lt;a href="http://www.internetnews.com/bus-news/article.php/3771391"&gt;June&lt;/a&gt;, &lt;a href="http://blogs.zdnet.com/Bott/?p=649&amp;amp;tag=nl.e539"&gt;July&lt;/a&gt;, &lt;a href="http://www.neowin.net/news/main/09/02/12/windows-7-moves-toward-august-2009-rtm"&gt;August&lt;/a&gt;, &lt;a href="http://pixelatedgeek.com/2009/02/windows-7-shipping-in-september"&gt;September&lt;/a&gt;, &lt;a href="http://news.softpedia.com/news/Windows-7-RTM-in-October-2009-via-Leaked-Product-Roadmap-103423.shtml"&gt;October&lt;/a&gt;, &lt;a href="http://www.efluxmedia.com/news_Windows_7_in_November_2009_a_Possibility_32099.html"&gt;November&lt;/a&gt;, or &lt;a href="http://news.cnet.com/8301-13860_3-9951638-56.html"&gt;January&lt;/a&gt;&amp;#160;final release date. It's pretty clear nobody has a good clue of the actual release date, but there is one constant in all the confusion: simplicity and performance are the two driving tenets&amp;#160;in Windows 7. These two factors are huge for usability and, furthermore, perceptions. So, when I think about what to expect in IE9, I'm looking for both of these: simplicity and speed. IE8 is a dog on some machines. We've seen JavaScript benchmarks and "everyday use" benchmarks that all tell us different things, but it all comes down to our individual experiences... and perceptions. For IE to be a contendor, it needs to clean up its act. I want a sleek, sexy browser. It's not Firefox; it's not Chrome; and it sure as hell isn't Safari or Opera. I'm not saying each isn't functional, I'm just saying there's a lot to be desired.&lt;/p&gt;
&lt;p&gt;Opera's doing it's thing, although I'm not sure why it even bothers; Apple's giving Safari on Windows a go, but not doing well; Google's got juice, but I don't think they have the right talent-mix to succeed; and Firefox is leading the pack against IE, but hasn't really made any significant innovations and is growing more by perception than anything. Microsoft (read: IE team), the browser market is yours to lose [which you're doing]; but it's also yours to dominate. Take a step back. Review the history books. There is one constant in what drives the up-and-comers of today. See that and feed into it. The world is asking for simplicity, speed, and all-around usability. IE8 isn't the answer. IE9 could be. You can do better. I know it; you know it.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=CJwnn3TCrqk:DKomD9KY7eI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=CJwnn3TCrqk:DKomD9KY7eI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=CJwnn3TCrqk:DKomD9KY7eI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/CJwnn3TCrqk" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Tue, 31 Mar 2009 02:28:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1093</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1093/A-Plea-for-IE.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1092/Default.aspx#Comments</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1092</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1092&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Visual Studio 2010 Will Make You More Productive</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/DAGMc_-TaW4/Default.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="Visual Studio" src="http://michaelflanakin.com/portals/michaelflanakin.com/weblog/2008/visualstudio.png" /&gt;&lt;/p&gt;
&lt;p&gt;Whether you've heard about Visual Studio 2010 and .NET 4.0 or not, you should really be watching the &lt;a href="http://channel9.msdn.com/shows/10-4"&gt;10-4 show&lt;/a&gt; on &lt;a href="http://channel9.msdn.com"&gt;Channel 9&lt;/a&gt;&amp;#160;&lt;a href="http://channel9.msdn.com/Feeds/RSS"&gt;&lt;img title="Syndicated feed" height="16" alt="Syndicated feed" width="16" border="0" src="http://michaelflanakin.com/portals/michaelflanakin.com/images/icons/feed_16x.gif" /&gt;&lt;/a&gt;. As you have probably guessed, the show talks about what to expect in Visual Studio 2010 (version 10.0) and .NET 4.0. The episodes I've seen cover things like ASP.NET, AJAX, parallelization, and overall enhancements to the VS IDE. Admittedly, I'm behind a few episodes, but that's just par for the course &lt;img alt="" src="http://michaelflanakin.com/Providers/HtmlEditorProviders/Fck/FCKeditor/editor/images/smiley/msn/wink_smile.gif" /&gt; While each of these has been valuable on its own, I have to specifically call out &lt;a href="http://channel9.msdn.com/shows/10-4/10-4-Episode-5-Code-Focused-in-Visual-Studio-2010"&gt;episode 5, Code Focused in Visual Studio 2010&lt;/a&gt;. This episode talks about three things: code navigation, test-driven development (TDD), and extending the VS editor.&lt;/p&gt;
&lt;p style="padding-right: 5px; padding-left: 5px; float: left; padding-bottom: 5px; padding-top: 5px"&gt;&lt;object type="application/x-silverlight-2" height="240" width="320" data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAIAAATIQAAzhgAABQAAAAjADAAMABGAEYARgBGAEYARgAAAAAAAAAAAAAAjAAAAGgAdAB0AHAAOgAvAC8AYwBoAGEAbgBuAGUAbAA5AC4AbQBzAGQAbgAuAGMAbwBtAC8AQQBwAHAAXwBUAGgAZQBtAGUAcwAvAGQAZQBmAGEAdQBsAHQALwBWAGkAZABlAG8AUABsAGEAeQBlAHIAMgAwADAAOQBfADAAMgBfADEAMQAuAHgAYQBwAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgIAAG0APQBoAHQAdABwADoALwAvAG0AcwBjAGgAbgBsAG4AaQBuAGUALgB2AG8ALgBsAGwAbgB3AGQALgBuAGUAdAAvAGQAMQAvAGMAaAA5AC8AOAAvADEALwA1AC8AMwAvADUALwA0AC8AMQAwADQARQBwAGkAcwBvAGQAZQA1AEMAbwBkAGUARgBvAGMAdQBzAGUAZABJAG4AVgBpAHMAdQBhAGwAUwB0AHUAZABpAG8AMgAwADEAMABfADIATQBCAF8AYwBoADkALgB3AG0AdgAsAGEAdQB0AG8AcwB0AGEAcgB0AD0AZgBhAGwAcwBlACwAYQB1AHQAbwBoAGkAZABlAD0AdAByAHUAZQAsAHMAaABvAHcAZQBtAGIAZQBkAD0AdAByAHUAZQAsACAAdABoAHUAbQBiAG4AYQBpAGwAPQBoAHQAdABwADoALwAvAG0AcwBjAGgAbgBsAG4AaQBuAGUALgB2AG8ALgBsAGwAbgB3AGQALgBuAGUAdAAvAGQAMQAvAGMAaAA5AC8AOAAvADEALwA1AC8AMwAvADUALwA0AC8AMQAwADQARQBwAGkAcwBvAGQAZQA1AEMAbwBkAGUARgBvAGMAdQBzAGUAZABJAG4AVgBpAHMAdQBhAGwAUwB0AHUAZABpAG8AMgAwADEAMABfAGwAYQByAGcAZQBfAGMAaAA5AC4AagBwAGcALAAgAHAAbwBzAHQAaQBkAD0ANAA1ADMANQAxADgAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="&gt;
&lt;param value="http://channel9.msdn.com/App_Themes/default/VideoPlayer2009_02_11.xap" name="source" /&gt;
&lt;param value="m=http://mschnlnine.vo.llnwd.net/d1/ch9/8/1/5/3/5/4/104Episode5CodeFocusedInVisualStudio2010_2MB_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://mschnlnine.vo.llnwd.net/d1/ch9/8/1/5/3/5/4/104Episode5CodeFocusedInVisualStudio2010_large_ch9.jpg, postid=453518" name="initParams" /&gt;
&lt;param value="#00FFFFFF" name="background" /&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;These first two areas, code navigation and TDD enhancements, are taking a page from the Resharper bible. If you haven't used Resharper, yet, you're seriously missing out. Resharper is the one VS add-in I can't live without -- GhostDoc isn't too far behind, tho. The first thing we're getting is the ability to highlight all references of an variable. This doesn't sound all that exciting, but it's really nice to see without having to look, if that makes sense. To top it off, you can bounce between these references with simple keyboard shortcuts.&lt;/p&gt;
&lt;p&gt;Bouncing between variable instances is neat, but let's take it up a notch. If you're digging into new code, figuring everything out can be a true feat. To help us move down this path, VS10 is giving us the ability to view the hierarchy of calls related to a specific method/property. The call hierarchy tells you everthing that calls your code block and what your code block calls. This is going to make understanding code a lot easier. We're still short of my desired end-goal of having an automatic sequence diagram generated, but at least we're making steps in that direction.&lt;/p&gt;
&lt;p&gt;From a productivity perspective, one thing I love about Resharper is that, if I need to open a file, I don't need to know where it is, I simply need to know its name. VS10 is bringing this to everyone. A simple shortcut, like Ctrl+T, and a dialog pops up, waiting for you to type in the file name. You can type a partial name, &lt;strong&gt;&lt;font color="#0000ff"&gt;mycla&lt;/font&gt;&lt;/strong&gt; to get &lt;font color="#0000ff"&gt;&lt;strong&gt;MyClass.cs&lt;/strong&gt;&lt;/font&gt;, or use the Pascal-casing and type &lt;strong&gt;&lt;font color="#0000ff"&gt;MC&lt;/font&gt;&lt;/strong&gt; to get &lt;font color="#0000ff"&gt;&lt;strong&gt;MyClass.cs&lt;/strong&gt;&lt;/font&gt; or &lt;font color="#0000ff"&gt;&lt;strong&gt;MyComponent.cs&lt;/strong&gt;&lt;/font&gt;. Pay attention to how much time you spend in the solution explorer. Imagine cutting that in half, if not more.&lt;/p&gt;
&lt;p&gt;The TDD-based enhancement really isn't about TDD, but it does support TDD very nicely. Basically, the idea is, when you're writing code, you want to dig in to the real logic, not go around creating domain objects and data access layers. To support this, you just start typing. If you need a customer class, you just reference it in code. VS will tell you it doesn't know about that class, but this is where the feature comes into play: it'll give you the option to generate it. The same thing happens when you add properties and methods. VS will generate the stubs for you. This lets you focus on one method at a time, without having to divert focus to figure out how third party code needs to work. This is all about decreasing the noise, in my opinion, which is very hard to do sometimes.&lt;/p&gt;
&lt;p&gt;The last thing the episode covers is something most people will probably underappreciate: the new WPF-based editor. Despite what people think, this isn't about flashy graphics. Nobody wants text to fly across the screen as we type it. There are two concepts here: &lt;strong&gt;(1)&lt;/strong&gt; simple animation can go a long way to enhance user experience; and, &lt;strong&gt;(2)&lt;/strong&gt; WinForms is now a legacy technology and WPF provides so many enhancements that it just makes sense to bring this to developers, making it easier to build and extend on the #1 development environment in the world. Everytime I think about this, I fall back on Resharper. Now that it's so easy to do amazing things with the editor, what is the Resharper team going to be able to give us? What is the community going to be able to give us? I can't wait to find out.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=DAGMc_-TaW4:Q182O4GX-9I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=DAGMc_-TaW4:Q182O4GX-9I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=DAGMc_-TaW4:Q182O4GX-9I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/DAGMc_-TaW4" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Sat, 14 Mar 2009 14:41:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1092</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1092/Default.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1091/Windows-7-RC-Enhancements.aspx#Comments</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1091</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1091&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Windows 7 RC Enhancements</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/iKVhf-kFTCc/Windows-7-RC-Enhancements.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="Windows 7" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/Weblog/2008/Windows7logo.png" /&gt;&lt;/p&gt;
&lt;p&gt;Since the debut of Windows 7, there's been a lot of talk about whether or not Microsoft would listen to feedback from the field. This sounds odd, but the question is a valid one, due to how Steve Sinofsky is running this release of Windows. The major departure from past releases is that the Windows team isn't introducing features into the build until they're "done." Sure, there may be some small issues, but nothing like what we saw in the pre-release versions of Vista or XP. This, along with only 2 pre-release versions of the OS making it out to the field -- beta and release candidate -- will make anyone question how much will really change between the beta and official release. Well, the &lt;a href="http://blogs.msdn.com/e7"&gt;Engineering 7&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/e7/atom.xml"&gt;&lt;img title="Syndicated feed" height="16" alt="Syndicated feed" width="16" border="0" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/images/icons/feed_16x.gif" /&gt;&lt;/a&gt; blog lets us know about&amp;#160;&lt;a href="http://blogs.msdn.com/e7/archive/2009/02/26/some-changes-since-beta.aspx"&gt;36 things we'll see in the release candidate&lt;/a&gt; based on feedback from the beta. This is very refreshing, even if a number of them are qute trivial.&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;Task Switcher (Alt+Tab) now with&amp;#160;Aero peek &lt;/strong&gt;-- excellent enhancement to really bring focus to the app you're thinking about switching to&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Win+# will open or launch, not just launch &lt;/strong&gt;-- I'm very excited about this one; I'll finally have a Win+1 shortcut to&amp;#160;open my&amp;#160;most&amp;#160;important&amp;#160;window: PowerShell&lt;/li&gt;
    &lt;li&gt;Apps wanting your attention will be more obvious&lt;/li&gt;
    &lt;li&gt;Dragging a file onto an app on the taskbar will now open the file in the app&lt;/li&gt;
    &lt;li&gt;25-40% more icons will fit on the taskbar before scrolling&lt;/li&gt;
    &lt;li&gt;Clearer mapping of what app thumbnails are related to in the taskbar&lt;/li&gt;
    &lt;li&gt;Newly installed programs will show up at the bottom of the start menu&lt;/li&gt;
    &lt;li&gt;Increased the number of items in the taskbar app's context menu (aka jump list)&lt;/li&gt;
    &lt;li&gt;More flexibility when pinning items to an app's jump list&lt;/li&gt;
    &lt;li&gt;Separation of desktop icons and gadgets&lt;/li&gt;
    &lt;li&gt;Aero peek now&amp;#160;touch-enabled&lt;/li&gt;
    &lt;li&gt;Multi-touch capabilities added to the virtual keyboard to make it more realistic&lt;/li&gt;
    &lt;li&gt;Summon the context menu with a 2 fingers -- this isn't quite as simple as it could be, but there are some reasons why a 2-finger tap isn't viable&lt;/li&gt;
    &lt;li&gt;Touch enhancements to select and drag/drop content&lt;/li&gt;
    &lt;li&gt;Simplified networking options in system tray and return of the connected-but-no-internet indicator&lt;/li&gt;
    &lt;li&gt;User Account Control (UAC) tweaks&lt;/li&gt;
    &lt;li&gt;Auto-lock a machine without applying a screensaver&lt;/li&gt;
    &lt;li&gt;Return of the high performance power option from the system tray&lt;/li&gt;
    &lt;li&gt;Clearer communication about preview vs. saved theme changes&lt;/li&gt;
    &lt;li&gt;Reliability enhancements to Windows Media Player for internet radio&lt;/li&gt;
    &lt;li&gt;Digital camcorder/camera video playback improvements&lt;/li&gt;
    &lt;li&gt;Cleaner "now playing" view in Windows Media Player&lt;/li&gt;
    &lt;li&gt;Content that Windows Media Player cannot play won't show up in the library -- this might be confusing to some, but it sounds like a good option; I'd probably opt for a dimmed color and icon depicting its unplayable status&lt;/li&gt;
    &lt;li&gt;Changed Windows Media Player to resume playback of content after returning from sleep&lt;/li&gt;
    &lt;li&gt;Introduction of Windows Media Player sync relationships dialog will be reverted -- classic case of why betas are important&lt;/li&gt;
    &lt;li&gt;Easier, quicker access to advanced playback settings in Windows Media Player&lt;/li&gt;
    &lt;li&gt;Windows Media Player's jump list now includes content launced from outside of WMP&lt;/li&gt;
    &lt;li&gt;Worked with hardware vendors to make it easier to get more devices to support Device Stage --&amp;#160;if you&amp;#160;don't know what Device Stage is (I didn't), &lt;a href="http://www.microsoft.com/windows/windows-7/beta-videos.aspx?vindex=8"&gt;watch this&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Improved headphone experience&lt;/li&gt;
    &lt;li&gt;Increased audio reliability&lt;/li&gt;
    &lt;li&gt;Improved Windows Explorer header to enhance new "libraries" capability&lt;/li&gt;
    &lt;li&gt;Drag and drop enhancements when dealing with libraries&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Win+E was opening libraries, but will return to open My Computer, as it does today &lt;/strong&gt;-- I'm glad to see this because I haven't found a use for libraries, yet&lt;/li&gt;
    &lt;li&gt;Added FAT32 support for libraries&lt;/li&gt;
    &lt;li&gt;Arrangement view enhancements for libraries&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Performance enhancements abound&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There are really only 4 of these that I'm looking forward to, but it's still a surprisingly large list. I'm looking forward to the RC. Rumor has it we'll see a public release in April. Part of me expects it to be sooner, but I have no idea.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=iKVhf-kFTCc:bIzGDqmImEU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=iKVhf-kFTCc:bIzGDqmImEU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=iKVhf-kFTCc:bIzGDqmImEU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/iKVhf-kFTCc" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Fri, 27 Feb 2009 02:57:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1091</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1091/Windows-7-RC-Enhancements.aspx</feedburner:origLink></item><item><comments>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1090/Failure-to-Yield-RightofWay.aspx#Comments</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=142&amp;ModuleID=609&amp;ArticleID=1090</wfw:commentRss><trackback:ping>http://www.michaelflanakin.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1090&amp;PortalID=2&amp;TabID=142</trackback:ping><title>Failure to Yield Right-of-Way</title><link>http://feeds.michaelflanakin.com/~r/flanakin/~3/5DqUeqmz2L4/Failure-to-Yield-RightofWay.aspx</link><description>&lt;p&gt;&lt;img style="float: right" alt="Yield" src="http://michaelflanakin.com/portals/michaelflanakin.com/weblog/2009/yield.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;I'm one of the many .NET developers out there that neglects the enhancements in the framework. Not that I mean to, I just keep a running tally of things I need to catch up on, but rarely make the time to actually do any of them. In an effort to shame myself into taking care of a few of these things, I decided to dig into something I haven't spent any time trying to understand: the &lt;span class="Code"&gt;&lt;span class="keyword"&gt;yield&lt;/span&gt;&lt;/span&gt; keyword, introduced in C# 2.0. I have to say, I was surprised at how simple it was... well, almost.&lt;/p&gt;
&lt;p&gt;To attempt the obligatory textual description: &lt;span class="Code"&gt;&lt;span class="keyword"&gt;yield&lt;/span&gt;&lt;/span&gt;, in conjunction with a &lt;span class="Code"&gt;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;/span&gt; or &lt;span class="Code"&gt;&lt;span class="keyword"&gt;break&lt;/span&gt;&lt;/span&gt; statement, tells the compiler that the code block should be treated as an iterator. This means the code block must return an instance of &lt;span class="Code"&gt;System.Collections.&lt;span class="class"&gt;IEnumerable&lt;/span&gt;&lt;/span&gt;; but that will be almost completely hidden from you. All you need to do is "yield" each value within a loop. The compiler will wrap your code block and return each value as the enumerator is traversed.&lt;/p&gt;
&lt;p&gt;There. Plain as day, right? Doubt it.&lt;/p&gt;
&lt;p&gt;While reading about the feature, I was reminded about how crappy some help can be. I just wanted a code snippet to show me what I might do without the &lt;span class="Code"&gt;&lt;span class="keyword"&gt;yield&lt;/span&gt;&lt;/span&gt; keyword and then what I'd do with it. Here's what you are probably writing today...&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;public&lt;/span&gt; &lt;strong&gt;&lt;span class="class"&gt;List&lt;/span&gt;&amp;lt;&lt;span class="class"&gt;User&lt;/span&gt;&amp;gt;&lt;/strong&gt; GetUsers(&lt;span class="class"&gt;IDataReader&lt;/span&gt; reader)&lt;br /&gt;
{&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span class="comment"&gt;// convert to list of users&lt;/span&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;&lt;span class="class"&gt;List&lt;/span&gt;&amp;lt;&lt;span class="class"&gt;User&lt;/span&gt;&amp;gt; users = &lt;span class="keyword"&gt;new&lt;/span&gt; &lt;span class="class"&gt;List&lt;/span&gt;&amp;lt;&lt;span class="class"&gt;User&lt;/span&gt;&amp;gt;();&lt;/strong&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span class="keyword"&gt;while&lt;/span&gt; (reader.Read())&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="class"&gt;User&lt;/span&gt; user = &lt;span class="keyword"&gt;new&lt;/span&gt; &lt;span class="class"&gt;User&lt;/span&gt;();&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="comment"&gt;// set user properties from reader&lt;/span&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;users.Add(user);&lt;/strong&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span class="comment"&gt;// return&lt;/span&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;&lt;span class="keyword"&gt;return&lt;/span&gt; users;&lt;/strong&gt;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;This is pretty basic stuff. Now, let's look at how you'd do it with the &lt;span class="Code"&gt;&lt;span class="keyword"&gt;yield&lt;/span&gt;&lt;/span&gt; keyword...&lt;/p&gt;
&lt;p class="code"&gt;&lt;span class="keyword"&gt;public&lt;/span&gt; &lt;strong&gt;&lt;span class="class"&gt;List&lt;/span&gt;&amp;lt;&lt;span class="class"&gt;User&lt;/span&gt;&amp;gt;&lt;/strong&gt; GetUsers(&lt;span class="class"&gt;IDataReader&lt;/span&gt; reader)&lt;br /&gt;
{&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span class="comment"&gt;// convert to list of users&lt;/span&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span class="keyword"&gt;while&lt;/span&gt; (reader.Read())&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="class"&gt;User&lt;/span&gt; user = &lt;span class="keyword"&gt;new&lt;/span&gt; &lt;span class="class"&gt;User&lt;/span&gt;();&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="comment"&gt;// set user properties from reader&lt;/span&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;&lt;span class="keyword"&gt;yield return&lt;/span&gt; user;&lt;/strong&gt;&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;If you didn't catch it, we were able to get rid of the code that uses the &lt;span class="Code"&gt;&lt;span class="class"&gt;List&lt;/span&gt;&amp;lt;&lt;span class="class"&gt;User&lt;/span&gt;&amp;gt;&lt;/span&gt; instance. Sure, only 3 lines, but less code is typically better -- assuming we're not sacrificing readability. Those who're paying a little more attention probably noticed the fourth line that changed (well, technically, it was the first): the return type. Since &lt;span class="code"&gt;&lt;span class="keyword"&gt;yield&lt;/span&gt;&lt;/span&gt; only knows about &lt;span class="Code"&gt;&lt;span class="class"&gt;IEnumerable&lt;/span&gt;&lt;/span&gt; (and &lt;span class="Code"&gt;&lt;span class="class"&gt;IEnumerable&lt;/span&gt;&amp;lt;T&amp;gt;&lt;/span&gt;, by proxy), we have to change the return type to match that. I have to admit, I didn't like this. Using &lt;span class="Code"&gt;&lt;span class="class"&gt;IEnumerable&lt;/span&gt;&lt;/span&gt; basically means I'm stuck with &lt;span class="Code"&gt;&lt;span class="keyword"&gt;foreach&lt;/span&gt;&lt;/span&gt; blocks, which I hate using. This led me to investigating performance.&lt;/p&gt;
&lt;p&gt;If you really want to know about the performance benefits of for vs. foreach, check out &lt;a href="http://www.bluebytesoftware.com/blog"&gt;Joe Duffy's blog&lt;/a&gt;&amp;#160;&lt;a href="http://www.bluebytesoftware.com/blog/SyndicationService.asmx/GetRss"&gt;&lt;img title="Syndicated feed" border="0" alt="Syndicated feed" width="16" height="16" src="http://www.michaelflanakin.com/portals/michaelflanakin.com/images/icons/feed_16x.gif" /&gt;&lt;/a&gt;. Joe works on the PLINQ team and has &lt;a href="http://www.bluebytesoftware.com/blog/2008/09/21/TheCostOfEnumeratingInNET.aspx"&gt;a very nice post about perf considerations&lt;/a&gt;. From the limited tests I ran, I started to see horrid performance when using &lt;span class="Code"&gt;&lt;span class="keyword"&gt;yield&lt;/span&gt;&lt;/span&gt;. Then, I reallized I probably needed to bump up my iterations to make it a bit more meaningful. Once I got into 10-50,000 iterations, I started seeing &lt;span class="Code"&gt;&lt;span class="keyword"&gt;yield&lt;/span&gt;&lt;/span&gt; come out on top -- or, at least making it a better race. This goes along with what Joe talks about: you pay the cost of having the enumerator, which costs a lot, but will make up for it over the long haul, assuming you have a lot of iterations.&lt;/p&gt;
&lt;p&gt;This isn't the whole story, tho. I ran this on a single core machine. Using a multi-core machine will produce better results. Why? Because &lt;span class="Code"&gt;&lt;span class="keyword"&gt;yield&lt;/span&gt;&lt;/span&gt; is multi-threaded. What actually happens is, when you call a method that uses &lt;span class="Code"&gt;&lt;span class="keyword"&gt;yield&lt;/span&gt;&lt;/span&gt;, it maintains a reference to that method. Then, your code will get an enumerator for it, typically via a &lt;span class="Code"&gt;&lt;span class="keyword"&gt;foreach&lt;/span&gt;&lt;/span&gt; block. All this happens without actually touching your method. Within the &lt;span class="Code"&gt;&lt;span class="keyword"&gt;foreach&lt;/span&gt;&lt;/span&gt; block, you actually reference the instance associated with the enumerator's location (i.e. &lt;span class="Code"&gt;users[i]&lt;/span&gt; in a &lt;span class="Code"&gt;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;/span&gt; block). When you access the instance, that's when .NET actually digs into your method to get the next instance. The benefit of this is that you only process what you need to process. If you only need to loop thru 10 of the 1000 records, you only process 10, whereas all 1000 would be loaded into memory with the typical approach.&lt;/p&gt;
&lt;p&gt;It's all a bit fuzzy until you play with it. I'd recommend creating a simple test to walk thru it yourself, if you really want to get a feel for it. It's as simple as debugging a test. As a matter of fact, &lt;a href="http://www.michaelflanakin.com/portals/michaelflanakin.com/weblog/2009/yield.zip"&gt;here's a simple MSTest project that walks thru it&lt;/a&gt;. Hopefully, this helps you understand what's going on.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=5DqUeqmz2L4:AtgacPy_AnA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.michaelflanakin.com/~ff/flanakin?a=5DqUeqmz2L4:AtgacPy_AnA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/flanakin?i=5DqUeqmz2L4:AtgacPy_AnA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/flanakin/~4/5DqUeqmz2L4" height="1" width="1"/&gt;</description><dc:creator>Michael Flanakin</dc:creator><pubDate>Fri, 30 Jan 2009 05:52:00 GMT</pubDate><guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1090</guid><feedburner:origLink>http://www.michaelflanakin.com/Weblog/tabid/142/articleType/ArticleView/articleId/1090/Failure-to-Yield-RightofWay.aspx</feedburner:origLink></item></channel></rss>
