<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>@ Head</title><link>http://msmvps.com/blogs/bill/default.aspx</link><description>&lt;br /&gt; Bill&amp;#39;s random thoughts...</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>VB Wish List</title><link>http://msmvps.com/blogs/bill/archive/2010/02/08/vb-wish-list.aspx</link><pubDate>Mon, 08 Feb 2010 03:21:11 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1755878</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1755878</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2010/02/08/vb-wish-list.aspx#comments</comments><description>&lt;p&gt;In case you’ve missed it, &lt;a href="http://blogs.msdn.com/lucian/default.aspx" target="_blank"&gt;Lucian Wishick&lt;/a&gt; from the VB team is doing a &lt;a href="http://blogs.msdn.com/lucian/archive/2010/01/28/what-didn-t-get-into-vb10.aspx" target="_blank"&gt;set of blog posts&lt;/a&gt; about feature ideas for future versions of VB (VB11 and later).&amp;#160; Lucian assures me &lt;strong&gt;**ALL**&lt;/strong&gt; of the ideas in &lt;a href="http://msmvps.com/blogs/bill/archive/2008/11/12/what-does-vb-10-have.aspx" target="_blank"&gt;my previous wish list for VB10&lt;/a&gt; are on the list !!!! &lt;/p&gt;  &lt;p&gt; Now’s a great time to speak up and discuss these and other features you might have in mind.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1755878" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category></item><item><title>CTypeDynamic</title><link>http://msmvps.com/blogs/bill/archive/2010/01/25/ctypedynamic.aspx</link><pubDate>Mon, 25 Jan 2010 04:27:21 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1753570</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1753570</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2010/01/25/ctypedynamic.aspx#comments</comments><description>&lt;p&gt;There’s a new function in VB 10 called CTypeDynamic . &lt;/p&gt;  &lt;p&gt;(&lt;em&gt;note it is a function not a keyword so the Microsoft.VisualBasic namespace needs to be imported&lt;/em&gt;)&lt;/p&gt;  &lt;p&gt;The CTypeDynamic function looks for dynamic information and performs the cast/conversion appropriately. This is different from the CType operator which looks for static information at compile time or relies on the types being IConvertible etc.&amp;#160; For example, consider the following simple class with a custom narrowing operator to String:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;Class&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt; &lt;span style="color:#2b91af;"&gt;Foo          &lt;br /&gt;          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;Public&lt;/span&gt; Name &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String          &lt;br /&gt;          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;Public&lt;/span&gt; &lt;span style="color:blue;"&gt;Shared&lt;/span&gt; &lt;span style="color:blue;"&gt;Narrowing&lt;/span&gt; &lt;span style="color:blue;"&gt;Operator&lt;/span&gt; &lt;span style="color:blue;"&gt;CType&lt;/span&gt;(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; instance &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Foo&lt;/span&gt;) &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color:blue;"&gt;Return&lt;/span&gt; instance.Name         &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt; &lt;span style="color:blue;"&gt;Operator          &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:consolas;color:blue;font-size:9.5pt;"&gt;End&lt;/span&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt; &lt;span style="color:blue;"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;If you were to create an object instance of Foo, you’d find you couldn’t cast it to string with CType. This code fails:&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;/span&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; f &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt; = &lt;span style="color:blue;"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Foo&lt;/span&gt;() &lt;span style="color:blue;"&gt;With&lt;/span&gt; {.Name = &lt;span style="color:#a31515;"&gt;&amp;quot;Bar&amp;quot;&lt;/span&gt;} &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; s &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span style="color:blue;"&gt;CType&lt;/span&gt;(f, &lt;span style="color:blue;"&gt;String&lt;/span&gt;) &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;But if you use CTypeDynamic the code works:&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;/span&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; f &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt; = &lt;span style="color:blue;"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Foo&lt;/span&gt;() &lt;span style="color:blue;"&gt;With&lt;/span&gt; {.Name = &lt;span style="color:#a31515;"&gt;&amp;quot;Bar&amp;quot;&lt;/span&gt;} &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; s &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = CTypeDynamic(&lt;span style="color:blue;"&gt;Of&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt;)(f) &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;The difference is the CTypeDynamic examines the object at runtime including looking for Shared (aka static) custom operators. The CType operator would only work in this case if f was explicitly dimensioned as type Foo or cast to it.&amp;#160; That is, for CType to work with custom operators the type of the original object must be expressed in code before calling CType, eg: &lt;span style="font-family:consolas;font-size:9.5pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; s &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;String&lt;/span&gt; = &lt;span style="color:blue;"&gt;CType&lt;/span&gt;(DirectCast(f, Foo), &lt;span style="color:blue;"&gt;String&lt;/span&gt;) &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="mso-layout-grid-align:none;" class="MsoNormal"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;CTypeDynamic on the other hand does the work at runtime. This obviously comes at a cost as it must examine the type(s) at runtime. Hence the “Dynamic” part in it’s name.&amp;#160; If you know the type when writing the code, use CType, but if you need dynamic casting then you need to use CTypeDynamic.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;See also &lt;a href="http://blogs.msdn.com/vbteam/archive/2010/01/20/fun-with-dynamic-objects-doug-rothaus.aspx" target="_blank"&gt;“fun with dynamic objects” blog post by Doug Rothaus&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1753570" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category></item><item><title>Banks got hexed !!</title><link>http://msmvps.com/blogs/bill/archive/2010/01/05/banks-got-hexed.aspx</link><pubDate>Tue, 05 Jan 2010 02:08:21 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1749693</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1749693</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2010/01/05/banks-got-hexed.aspx#comments</comments><description>&lt;p&gt;If it wasn’t true, a software bug in EFTPOS machines from the Bank Of Queensland (and others) would be pretty funny.&amp;#160; Problem is *&lt;strong&gt;most likely&lt;/strong&gt;* they are treating the year as a two digit date (watch out come 2100 !!!), so today with the year being 2010, they read the year as 10 and make that as 16.&amp;#160; !!!&amp;#160; That’s right they make 10 to be 16.&amp;#160; A lot of you are probably saying “what the ???” &lt;/p&gt;  &lt;p&gt;But if you consider Hex notation, eg &amp;amp;H10, or 0x10, well then that 10 is in fact 16.&amp;#160; Seems the bank has been hex’ed ;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1749693" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Bug/default.aspx">Bug</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Old age +1</title><link>http://msmvps.com/blogs/bill/archive/2009/12/22/old-age-1.aspx</link><pubDate>Tue, 22 Dec 2009 04:52:51 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1747125</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1747125</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/12/22/old-age-1.aspx#comments</comments><description>&lt;p&gt;Well the verdict is in, the reason I couldn’t read the bottle of beer label (amongst other things) is due to &lt;a href="http://en.wikipedia.org/wiki/Presbyopia" target="_blank"&gt;presbyopia&lt;/a&gt;… or in other words kind of average for someone in their forties ;)&lt;/p&gt;  &lt;p&gt;The good news is my eyes are only slightly different in strength from each other so looks like I can get by with off the shelf 1.00’s for now. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1747125" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/Life/default.aspx">Life</category></item><item><title>Do I need glasses ?</title><link>http://msmvps.com/blogs/bill/archive/2009/12/21/do-i-need-glasses.aspx</link><pubDate>Mon, 21 Dec 2009 04:07:56 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1746937</guid><dc:creator>bill</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1746937</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/12/21/do-i-need-glasses.aspx#comments</comments><description>&lt;p&gt;If I can’t read the small print on a bottle of beer does that mean I need glasses ??????&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1746937" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/Life/default.aspx">Life</category></item><item><title>ElementAtOrDefault</title><link>http://msmvps.com/blogs/bill/archive/2009/12/15/elementatordefault.aspx</link><pubDate>Tue, 15 Dec 2009 01:40:17 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1745625</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1745625</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/12/15/elementatordefault.aspx#comments</comments><description>&lt;p&gt;VB 9 or later has a particular &lt;em&gt;feature&lt;/em&gt; that can make life easier in some circumstances: the compiler allows you to access indexed items on non indexed enumerables.&amp;#160;&amp;#160; Let’s say you have code such as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Dim items as IEnumerable(Of String)     &lt;br /&gt;. . . .      &lt;br /&gt;For i = 0 to items.Count - 1      &lt;br /&gt;&amp;#160;&amp;#160; Debug.Print items(i)      &lt;br /&gt;Next&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;VB will compile that for you. The Count is an extension method that loops through the list to determine the count; luckily VB calls that only once. The real killer though is&lt;strong&gt; items(i)&lt;/strong&gt; is actually compiled as &lt;strong&gt;items.ElementAtOrDefault(i). &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;ElementAtOrDefault&lt;/strong&gt; extension tries to cast the IEnumerable(Of T) to an IList(Of T); if the IEnumerable isn’t actually an IList, it loops through the collection, returning at the given index. As you can imagine this would get extremely slow for large lists especially inside a loop.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Good:&lt;/strong&gt;    &lt;br /&gt;&amp;#160;&amp;#160; If your IEnumerable is in fact an IList, such as a List(Of T), then the compiler magically adding this extension call makes life a little easier as you don’t have to cast to IList yourself.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The BAD:     &lt;br /&gt;&lt;/strong&gt;&amp;#160;&amp;#160; You have to be really careful when doing any code maintenance, especially if you change an IEnumerable source to a different collection base that doesn’t implement IList(Of T). You can end up writing really bad, slow code really easily.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;I got bitten by the bad, but I caught it immediately as I was curious about the collection base I was using.&amp;#160; In my particular case I had swapped an List(Of T) out with a ConcurrentBag(Of T). ConcurrentBag(Of T) basically uses linked lists where each item is stored as a node. Each node has a previous and next node; the list has a head and a tail. I thought it strange that ConcurrentBag would have an indexer given that would force walking through the nodes. I went to change the items(i) to items.Item(i) and BINGO it wouldn’t compile.&lt;/p&gt;  &lt;p&gt;Possible best practices to avoid being bitten by this:&lt;/p&gt;  &lt;p&gt;(1) Use For Each loops, not indexers. Your code will be far more flexible/manageable&lt;/p&gt;  &lt;p&gt;(2) If you only want the first item, make it explicit by using First or FirstOrDefault extensions.&lt;/p&gt;  &lt;p&gt;(3) Try to do the explicit cast to IList(Of T) yourself and work with an IList(Of T) instead of an IEnumerable(Of T)&lt;/p&gt;  &lt;p&gt;(4) Consider explicitly using the Item property , eg: items.Item(0) instead of items(0)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’m not really comfortable with having to use the Item property: hopefully practices 1 to 3 will alleviate the need for practice 4.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1745625" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Saving and transferring customisations</title><link>http://msmvps.com/blogs/bill/archive/2009/11/25/saving-and-transferring-customisations.aspx</link><pubDate>Wed, 25 Nov 2009 03:54:10 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1742064</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1742064</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/11/25/saving-and-transferring-customisations.aspx#comments</comments><description>&lt;p&gt;I got an email from a reader last week asking about saving customisations in Visual Studio:&lt;/p&gt;  &lt;blockquote style="color:#7f7f7f;"&gt;   &lt;p&gt;Hi Bill&lt;/p&gt;    &lt;p&gt;I read an excellent article by you&lt;/p&gt;    &lt;p&gt;&lt;a href="http://visualstudiomagazine.com/Articles/2007/12/01/Customize-the-VB-IDE.aspx?Page=1"&gt;http://visualstudiomagazine.com/Articles/2007/12/01/Customize-the-VB-IDE.aspx?Page=1&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Just wondering if you know of a way to export those customisations so I can set up my computer at work restore after HDD fails and share my favorite settings with friends.&lt;/p&gt;    &lt;p&gt;Also would like to do same for my VBIDE customisations&lt;/p&gt;    &lt;p&gt;I have googled to no avail...... :-/ &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Well the good news is this is incredibly easy. On the Tools menu in Visual Studio you should see the “&lt;strong&gt;Import and Export Savings . . &lt;/strong&gt;.” command.&amp;#160; You can choose what groups of settings to import or export.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1742064" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VSM/default.aspx">VSM</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category></item><item><title>IntPtr gets operators !!!</title><link>http://msmvps.com/blogs/bill/archive/2009/11/05/intptr-gets-operators.aspx</link><pubDate>Thu, 05 Nov 2009 01:48:27 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1737714</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1737714</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/11/05/intptr-gets-operators.aspx#comments</comments><description>&lt;p&gt;This seems so incredibly long overdue, but at last as of .NET 4, IntPtr has + and – operators added to it !!&lt;/p&gt;  &lt;p&gt;This means you can now easily write code such as :&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Dim ptr As IntPtr &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; . . . .   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ptr += 4&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;this is great when dealing with offsets etc.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The actual implementation is kind of interesting. Here I’m seeing&amp;#160; the implementation as :&lt;/p&gt;  &lt;p&gt;&lt;font color="#4d6886"&gt;Public Shared &lt;b&gt;Operator&lt;/b&gt; &lt;b&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.IntPtr/op_Subtraction(IntPtr,Int32):IntPtr"&gt;-&lt;/a&gt;&lt;/b&gt;(ByVal &lt;b&gt;pointer&lt;/b&gt; As &lt;/font&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.IntPtr"&gt;&lt;font color="#4d6886"&gt;IntPtr&lt;/font&gt;&lt;/a&gt;&lt;font color="#4d6886"&gt;, ByVal &lt;b&gt;offset&lt;/b&gt; As &lt;/font&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.Int32"&gt;&lt;font color="#4d6886"&gt;Integer&lt;/font&gt;&lt;/a&gt;&lt;font color="#4d6886"&gt;) As &lt;/font&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.IntPtr"&gt;&lt;font color="#4d6886"&gt;IntPtr&lt;/font&gt;&lt;/a&gt;&lt;font color="#4d6886"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return New &lt;/font&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.IntPtr/.ctor(Int32)"&gt;&lt;font color="#4d6886"&gt;IntPtr&lt;/font&gt;&lt;/a&gt;&lt;font color="#4d6886"&gt;((&lt;/font&gt;&lt;a&gt;&lt;font color="#4d6886"&gt;pointer&lt;/font&gt;&lt;/a&gt;&lt;font color="#4d6886"&gt;.&lt;/font&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.IntPtr/ToInt32():Int32"&gt;&lt;font color="#4d6886"&gt;ToInt32&lt;/font&gt;&lt;/a&gt;&lt;font color="#4d6886"&gt; - &lt;/font&gt;&lt;a&gt;&lt;font color="#4d6886"&gt;offset&lt;/font&gt;&lt;/a&gt;&lt;font color="#4d6886"&gt;))      &lt;br /&gt;End Function&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I guess this is because it is the 32 bit version of the library. Hopefully in the 64 bit version it calls on IntPtr.ToInt64 ;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1737714" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category></item><item><title>Windows Virtual PC now on MSDN</title><link>http://msmvps.com/blogs/bill/archive/2009/10/08/windows-virtual-pc-now-on-msdn.aspx</link><pubDate>Thu, 08 Oct 2009 04:23:01 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1730722</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1730722</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/10/08/windows-virtual-pc-now-on-msdn.aspx#comments</comments><description>&lt;p&gt;If you’ve got Windows 7 installed, the Windows Virtual PC for Windows 7 is now on MSDN subscriber downloads !!!&lt;/p&gt;  &lt;p&gt;I had the Release Candidate (RC) installed, so had to uninstall that first and reboot before installing the RTM release. All worked perfectly, and my VPC’s from the RC also are working fine :)&amp;#160; &lt;/p&gt;  &lt;p&gt;If you need to uninstall the RC you’ll find it listed under the “Programs and Features” window from Control Panel. Click on “View installed updates” top left of window, and you’ll find it listed under “Microsoft Windows”&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1730722" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Windows crash recovery</title><link>http://msmvps.com/blogs/bill/archive/2009/09/24/windows-crash-recovery.aspx</link><pubDate>Thu, 24 Sep 2009 03:17:31 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1726113</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1726113</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/09/24/windows-crash-recovery.aspx#comments</comments><description>&lt;p&gt;Last night I accidentally pulled out the wrong power plugs, crashing my computer. For some reason this meant it wouldn’t start properly. I don’t quite get why that would mean it wouldn’t start as the hard disc didn’t fail, but none the less it wouldn’t : the computer would seemingly just hang and the keyboard was no longer responsive and its lights went out.&amp;#160;&amp;#160; The good news is that start-up offered a recovery, and that recovery fixed it and life is good again.&amp;#160; The thing to be aware of though is the recovery boot seemed to be hung for a long long time ; I’m talking like 20 minutes or half an hour.&amp;#160; &lt;/p&gt;  &lt;p&gt;If this happens to you, just be patient: it worked for me :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1726113" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Rant/default.aspx">Rant</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Updates on the Snippet Editor</title><link>http://msmvps.com/blogs/bill/archive/2009/09/03/updates-on-the-snippet-editor.aspx</link><pubDate>Thu, 03 Sep 2009 01:03:56 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1720398</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1720398</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/09/03/updates-on-the-snippet-editor.aspx#comments</comments><description>&lt;p&gt;First the good news :&lt;/p&gt;  &lt;p&gt;The February release of the &lt;a href="http://billmccarthy.com/Projects/Snippet_Editor/default.html"&gt;Snippet Editor&lt;/a&gt; has now had &lt;strong&gt;10,000&lt;/strong&gt; downloads !&lt;/p&gt;  &lt;p&gt;Now for bug fix news:&lt;/p&gt;  &lt;p&gt;There were a couple of issues with the paths per language.&amp;#160; A problem with Express Editions of Visual Studio occurred due to partial entries in the registry I didn’t for-see. Initial design and testing was done with full versions of Visual Studio, but I want to ensure that it does work with the express versions, that’s why the tool is standalone not an add-in.&amp;#160; So the good news is I have fixed those bugs (I think).&amp;#160; &lt;/p&gt;  &lt;p&gt;If you want those fixes you can use the original source from Feb and just &lt;a href="http://snippeteditor.codeplex.com/SourceControl/changeset/view/36425#391917"&gt;download the updated products.vb&lt;/a&gt; file. I’ll probably look at rolling this up into a new release in the not to distant future.&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1720398" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Whidbey/default.aspx">Whidbey</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Snippets/default.aspx">Snippets</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS2008/default.aspx">VS2008</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/XML/default.aspx">XML</category></item><item><title>Is C# unacceptable ?</title><link>http://msmvps.com/blogs/bill/archive/2009/09/03/is-c-unacceptable.aspx</link><pubDate>Thu, 03 Sep 2009 00:50:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1720397</guid><dc:creator>bill</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1720397</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/09/03/is-c-unacceptable.aspx#comments</comments><description>&lt;p&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;span style="font-size:small;"&gt;Well if you mark your methods as being &lt;strong&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;void&lt;/span&gt;&lt;/strong&gt; from the outset &amp;hellip;&amp;hellip;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1720397" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Rant/default.aspx">Rant</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Wild carrots</title><link>http://msmvps.com/blogs/bill/archive/2009/08/30/wild-carrots.aspx</link><pubDate>Sun, 30 Aug 2009 09:01:19 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1719260</guid><dc:creator>bill</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1719260</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/08/30/wild-carrots.aspx#comments</comments><description>&lt;p&gt;I managed to spend an hour in the veggie patch this afternoon. Was pulling a lot of big weeds really easily after the rain, getting the beds ready for spring :) &lt;/p&gt;  &lt;p&gt;And in amongst the weeds I found all these carrots which had self sown from my seed collecting last season:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://picasaweb.google.com.au/lh/photo/ZZOayufg9ik41hxkRehVqA?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_U-g1hUxYCKY/Spo-3bTqldI/AAAAAAAACkY/W2lLOP8K1CQ/s400/carrots%20Aug%202009.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And they taste great !!!&amp;#160; :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1719260" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/Life/default.aspx">Life</category></item><item><title>In the garden: Aug 2009</title><link>http://msmvps.com/blogs/bill/archive/2009/08/19/in-the-garden-aug-2009.aspx</link><pubDate>Tue, 18 Aug 2009 13:35:07 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1716460</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1716460</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/08/19/in-the-garden-aug-2009.aspx#comments</comments><description>&lt;p&gt;The first signs of spring have sprung:&lt;/p&gt; &lt;a href="http://picasaweb.google.com.au/lh/photo/uVPbOB9D1R1uRExdQJZebA?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_U-g1hUxYCKY/Soqq1lT-5CI/AAAAAAAACjA/KTWjnBg2evg/s400/Aug%2009%20spring%20buds.JPG" alt="" /&gt;&lt;/a&gt;   &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;With the wild plums currently showing the most early blooms :&lt;/p&gt; &lt;a href="http://picasaweb.google.com.au/lh/photo/FOfh_8ihyATanoURiivAQw?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_U-g1hUxYCKY/Soqq_su8fqI/AAAAAAAACjE/7PlyupTwzLU/s400/Aug%2009%20plum%20blossoms.JPG" alt="" /&gt;&lt;/a&gt;   &lt;p&gt;There’s not a lot happening in the veggie patch, just some carrots and silverbeet mainly. One of the climbers around the garden is also in bloom (you can see some silver beet that was used for seed behind it):&lt;/p&gt; &lt;a href="http://picasaweb.google.com.au/lh/photo/19aehOMW6J2pVr-blG9akw?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_U-g1hUxYCKY/SoqqymsmFoI/AAAAAAAACi8/1m5O6ucn288/s400/Aug%2009%20climber.JPG" alt="" /&gt;&lt;/a&gt;   &lt;p&gt;The wattles are in stunning bloom at present: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://picasaweb.google.com.au/lh/photo/d1NIwMwYAyALGiuALieOxQ?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_U-g1hUxYCKY/SoqrTlLszlI/AAAAAAAACjU/AoP0usTEqeg/s400/Aug%2009%20wattle%203.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://picasaweb.google.com.au/lh/photo/MqdtXDmnlHUxmqjQsLxk9Q?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_U-g1hUxYCKY/SoqrZ-AfvxI/AAAAAAAACjY/Re1_1j5fLXY/s400/Aug%2009%20wattle%204.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://picasaweb.google.com.au/lh/photo/bf4lSmQlML-vcbpYpVKBmw?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_U-g1hUxYCKY/SoqrMoqO0GI/AAAAAAAACjQ/r1GKP78zVY4/s400/Aug%2009%20wattle%202.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://picasaweb.google.com.au/lh/photo/zCRsamSkvy6iL3511FiDTQ?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_U-g1hUxYCKY/SoqrFc766nI/AAAAAAAACjM/Kue0MbRxJMM/s400/Aug%2009%20wattle%201.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Blackwood beginning to bloom: &lt;/p&gt; &lt;a href="http://picasaweb.google.com.au/lh/photo/VpP-cBZQn2-i_SfeN_ZSXQ?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_U-g1hUxYCKY/SoqqqjD0vjI/AAAAAAAACi4/CEFyLkwEEMc/s400/Aug%2009%20blackwood.JPG" alt="" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;And of course the proteas are also beginning to add some colour&lt;/p&gt;  &lt;p&gt;pink proteas:&lt;/p&gt; &lt;a href="http://picasaweb.google.com.au/lh/photo/b4TP-tjjC0Q10IUcJ06Z_A?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_U-g1hUxYCKY/Soqrezj4-zI/AAAAAAAACjc/DDNUYTI5zVU/s400/Aug%2009%20pink%20protea.JPG" alt="" /&gt;&lt;/a&gt;   &lt;p&gt;honey proteas&lt;/p&gt; &lt;a href="http://picasaweb.google.com.au/lh/photo/ypTja3Os-0r2MaMZvkGjJw?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_U-g1hUxYCKY/SoqriJnV2QI/AAAAAAAACjg/3k2IOZjTQ3o/s400/Aug%2009%20honey%20protea.JPG" alt="" /&gt;&lt;/a&gt;   &lt;p&gt;young king proteas&lt;/p&gt; &lt;a href="http://picasaweb.google.com.au/lh/photo/xi3bHiiRm-mfVMB0lAiFlA?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_U-g1hUxYCKY/SoqrlCe4L2I/AAAAAAAACjk/5yGnbktostU/s400/Aug%2009%20king%20protea.JPG" alt="" /&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1716460" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/Life/default.aspx">Life</category></item><item><title>Screen-cast recording tools</title><link>http://msmvps.com/blogs/bill/archive/2009/08/17/screen-cast-recording-tools.aspx</link><pubDate>Sun, 16 Aug 2009 13:56:10 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1716165</guid><dc:creator>bill</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1716165</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/08/17/screen-cast-recording-tools.aspx#comments</comments><description>&lt;p&gt;Recently I got this email from Ted:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;font face="Times New Roman"&gt;Hi Bill!&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;font face="Times New Roman"&gt;Love the snippet tool, it&amp;#39;s great!&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;font face="Times New Roman"&gt;I&amp;#39;m curious, what tool did you use to produce the screencast for the tool? The quality is awesome!&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;font face="Times New Roman"&gt;Thanks a lot!&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;font face="Times New Roman"&gt;Kind regards,&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;font face="Times New Roman"&gt;Ted&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The answer to that is I used Camtasia Studio 5. It’s really easy to use and lots of options on output formats. And it will even produce the basic html file for you with the embedded video etc.&lt;/p&gt;  &lt;p&gt;Note: I really like Camtasia. I do also get it for free from the nice folks at &lt;a href="http://www.techsmith.com/" target="_blank"&gt;TechSmith&lt;/a&gt; as they value the contribution MVPs make to the community, and that makes it even easier to like :)&lt;/p&gt;  &lt;p&gt;An alternative worth looking at is Expression Encoder 3 Screen Capture which comes with &lt;a href="http://www.microsoft.com/expression/" target="_blank"&gt;Microsoft Expression&lt;/a&gt; 3. I’ve only given it a quick test drive and it seemed pretty good. Picking formats was a little daunting, but I got it to produce some good quality wmv files that were really good for the bandwidth (small file size). I haven’t driven it enough to find how to produce web files that embed the video; my guess is it would be more silverlight orientated. Still if you have a MSDN subscription that includes expression, it’s definitely worth a look at.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1716165" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Snippets/default.aspx">Snippets</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Colds and Flu</title><link>http://msmvps.com/blogs/bill/archive/2009/08/14/colds-and-flu.aspx</link><pubDate>Fri, 14 Aug 2009 02:21:57 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1715483</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1715483</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/08/14/colds-and-flu.aspx#comments</comments><description>&lt;p&gt;The last couple of weeks I’ve had what seems to be both a cold and the flu. In the process I learnt some things about them …&lt;/p&gt;  &lt;p&gt;First off, they spread easily. We had a two weekend fire line leadership course,&amp;#160; running from Friday after work till Sunday midday both weekends.&amp;#160; On the first week there was one person with a cold, and another with what was probably the flu. By the following week another six members of the class of twenty three had signs of a cold or similar.&lt;/p&gt;  &lt;p&gt;Me, I thought I had caught a cold the first week, and had the usual running nose symptoms etc. Then when I got back from the second weekend I got hit hard with a fever. That seemed to knock the cold symptoms away, but what I had left was the flu as characterised by strong fevers, complete lack of energy and muscle aches. In my particular case my thighs and calves were like they were burning really really hot.&amp;#160; I now know first hand the difference between cold and flu ;)&lt;/p&gt;  &lt;p&gt;After the first night of fever I thought I was pretty much right or at least getting better for the next couple of days only to be hit by fever again. Foolishly I though that was it and was out and about again the next day. That night the real fever hit and hit hard. My temp was at 40C for hours (I think that’s 104F in old talk). Probably the scary part of that was I wasn’t really sweating. The next day it was hovering more around 39, and at times some profuse sweating which at least meant things were still working ;)&amp;#160; All up it knocked me out for the best part of three days.&amp;#160; Btu I did learn about safe temperatures.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt; Above 40, it’s hospital time. &lt;/li&gt;    &lt;li&gt; 39 to 40: as long as it is fever it’s okay, just keep up fluids an try to reduce the temp a bit.     &lt;br /&gt; NOTE: if it is heat stroke this temp is too high and must be cooled.&lt;/li&gt;    &lt;li&gt;38 to 39 fever. Normally nothing to worry about&lt;/li&gt;    &lt;li&gt;37 to 38.&amp;#160; slightly warm (above 37.5 is considered mild fever, but is more like flushed IMO)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So that’s been my fun for the last week or so.&amp;#160; One cool thing was I upgraded my main machine from Vista x64 to Windows 7 x64 whilst I wasn’t doing anything (more on that later).&lt;/p&gt;  &lt;p&gt;I’m still catching up with emails, may take me a day or two more yet.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1715483" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/Life/default.aspx">Life</category></item><item><title>Expression 3 is on MSDN</title><link>http://msmvps.com/blogs/bill/archive/2009/07/27/expression-3-is-on-msdn.aspx</link><pubDate>Mon, 27 Jul 2009 08:01:58 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1710315</guid><dc:creator>bill</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1710315</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/07/27/expression-3-is-on-msdn.aspx#comments</comments><description>&lt;p&gt;With all the focus on Windows 7 RTM announcements, the availability of Expression 3 on the MSDN site last Thursday may have sneaked under folks radars.&amp;#160; &lt;a href="http://msdn.microsoft.com/subscriptions/downloads/default.aspx?PV=62:375:DVD:en:x86" target="_blank"&gt;For MSND subscribers, grab your copy of Expression 3.&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1710315" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/DevCenter/default.aspx">DevCenter</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Design/default.aspx">Design</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VS+10/default.aspx">VS 10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Why Live Maps sucks compared to Google maps</title><link>http://msmvps.com/blogs/bill/archive/2009/04/30/why-live-maps-sucks-compared-to-google-maps.aspx</link><pubDate>Thu, 30 Apr 2009 07:22:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1691592</guid><dc:creator>bill</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1691592</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/04/30/why-live-maps-sucks-compared-to-google-maps.aspx#comments</comments><description>&lt;p&gt;The user experience of Live Maps completely sucks compared to Google Maps. It’s that bad I really don’t think they even bother testing it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Live Maps experience:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;go to maps.live.com. Here it redirects to &lt;a title="http://maps.live.com.au/?" href="http://maps.live.com.au/?"&gt;http://maps.live.com.au/?&lt;/a&gt; which seems to fail to properly load every single time. Instead you have to hit refresh.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;the page loads with a script error :     &lt;br /&gt;Message: &amp;#39;dapMgr&amp;#39; is undefined      &lt;br /&gt;Line: 480      &lt;br /&gt;Char: 9      &lt;br /&gt;Code: 0      &lt;br /&gt;URI: &lt;a href="http://network.ninemsn.com.au/share/js/spac_adx.js"&gt;http://network.ninemsn.com.au/share/js/spac_adx.js       &lt;br /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;as I scroll to zoom, the zoom ignores where my mouse is, meaning I have to often drag the map to centre it before continuing zooming     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;once I have zoomed in, the map lacks allotment boundary details.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;the “aerial” view seems a lot older and a lot less detail compared to google     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;there’s no context menu !!&amp;#160; I can’t right click and add a pushpin or get directions form or to there, instead I have to type in an address (how utterly lame !!)     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;when I click on directions so as I can add an address, the map goes back to a view of Australia, meaning I lost all that zooming and scrolling I just did.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;If I can’t specify an address I’m rooted (as opposed to being routed &amp;lt;g&amp;gt;).&amp;#160; So I guess nearby addresses but then aren’t able to move them.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;I can’t re-route directions, instead I have to try to add stops.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;I can’t hide that directions pane&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Google Maps experience:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;No redirection. I get to choose if I use the .au one or not !!     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Pages load first time without any script errors !! (OMG what were they thinking. How dare they actually test it !!)     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;As I zoom in, the zoom centres on my mouse and gives me a visual indication it is doing that.&amp;#160; (a responsive UI. What the ???)     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;the maps show lots of details including allotment boundaries. Aerial view is really good.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;I &lt;strong&gt;&lt;em&gt;can&lt;/em&gt;&lt;/strong&gt; right click.&amp;#160; OMG, a “context menu” : this app must have been written in the last 15 years !      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;I &lt;strong&gt;&lt;em&gt;can&lt;/em&gt;&lt;/strong&gt; add pushpins for directions From here and directions To here      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;I &lt;strong&gt;&lt;em&gt;can&lt;/em&gt;&lt;/strong&gt; re-route the journey simply by dragging the route line.&amp;#160; It seems these guys have heard of a mouse !!      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;I &lt;strong&gt;&lt;em&gt;can&lt;/em&gt;&lt;/strong&gt; hide the directions pane      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That’s just a brief synopsis of the very obvious user experience.&amp;#160; I found Live Maps totally useless for planning my afternoon’s bike ride.&amp;#160; Seriously Microsoft if you are going to go to the bother and expense of licensing the maps and aerial images, of setting up servers etc, then you can at least try to compete.&amp;#160; At present it’s just a pathetic waste of money.&amp;#160; Say “yes you &lt;strong&gt;&lt;em&gt;can&lt;/em&gt;&lt;/strong&gt;” or go home.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1691592" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/Life/default.aspx">Life</category><category domain="http://msmvps.com/blogs/bill/archive/tags/Rant/default.aspx">Rant</category></item><item><title>Iterators: a flag for simplification ?</title><link>http://msmvps.com/blogs/bill/archive/2009/04/21/iterators-a-flag-for-simplification.aspx</link><pubDate>Tue, 21 Apr 2009 02:02:16 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1689277</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1689277</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/04/21/iterators-a-flag-for-simplification.aspx#comments</comments><description>&lt;p&gt;A couple of months ago &lt;a href="http://msmvps.com/blogs/bill/archive/2009/02/02/iterators-in-vb-10.aspx" target="_blank"&gt;I blogged about iterators in VB&lt;/a&gt; (or the lack there-of), and pointed folks to &lt;a href="http://visualstudiomagazine.com/columns/article.aspx?editorialsid=2972" target="_blank"&gt;an article I wrote for Visual Studio magazine that provides snippets and templates to help with iterators in VB&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;One of the things I talk about in that article is often the use of iterators in C# code that I have seen is superfulous, especially given the LINQ libraries.&amp;#160; Yesterday I read &lt;a href="http://weblogs.asp.net/davidmccollough/archive/2009/04/19/covariant-generic-list.aspx" target="_blank"&gt;another example of this where the developer(s) had written a custom iterator instead of using a LINQ query&lt;/a&gt;. Their code required the defining of a generic class:     &lt;br /&gt;&lt;/p&gt;    &lt;blockquote&gt;     &lt;pre&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; EnumerableGeneric&amp;lt;TClass, TInterface&amp;gt; 
              : IEnumerable&amp;lt;TInterface&amp;gt; where TClass : TInterface
{
   &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; IList&amp;lt;TClass&amp;gt; list;

   &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; EnumerableGeneric(IList&amp;lt;TClass&amp;gt; list)
   {
      &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.list = list;
   }

   &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IEnumerator&amp;lt;TInterface&amp;gt; GetEnumerator()
   {
      &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (TClass item &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; list)
      {
         yield &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; item;
      }
   }

   IEnumerator IEnumerable.GetEnumerator()
   {
      &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.GetEnumerator();
   }
}&lt;/pre&gt;
  &lt;/blockquote&gt;


&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;And the example of using this required the calling code to instantiate an instance of this class:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

  &lt;blockquote&gt;
    &lt;pre&gt;MyMethod(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; EnumerableGeneric&amp;lt;ClassA, IClassInterface&amp;gt;(caInstance));&lt;/pre&gt;
  &lt;/blockquote&gt;


&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;A simpler alternative is to actually use LINQ, eg:&lt;/p&gt;

&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MyMethod(caInstance.Cast&amp;lt;IClassInterface&amp;gt;());&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;In VB talk I think it’s even more natural flowing: 
  &lt;br /&gt;

  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; MyMethod(caInstance.Cast(Of IClassInterface))&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;It is in places like that I like the (Of T) syntax of VB a lot better, but some folks prefer a Cup&amp;lt;T&amp;gt; to a Cup(Of T)&amp;#160; .&amp;#160; The key point here is the use of “yield return” in C# is a good indicator that the code can often be replaced with far simpler LINQ constructs that reduce your LOC’s, and hence reduce your debugging and maintenance loads.&amp;#160; There will of course be times where there isn’t a simple LINQ replacement, but if you do ever come across custom iterators, do take pause to think about using LINQ.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1689277" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/VB/default.aspx">VB</category><category domain="http://msmvps.com/blogs/bill/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://msmvps.com/blogs/bill/archive/tags/VB10/default.aspx">VB10</category><category domain="http://msmvps.com/blogs/bill/archive/tags/CSharp/default.aspx">CSharp</category><category domain="http://msmvps.com/blogs/bill/archive/tags/.NET/default.aspx">.NET</category></item><item><title>In the garden: Mid April 2009</title><link>http://msmvps.com/blogs/bill/archive/2009/04/18/in-the-garden-mid-april-2009.aspx</link><pubDate>Sat, 18 Apr 2009 03:43:22 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1688553</guid><dc:creator>bill</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/bill/rsscomments.aspx?PostID=1688553</wfw:commentRss><comments>http://msmvps.com/blogs/bill/archive/2009/04/18/in-the-garden-mid-april-2009.aspx#comments</comments><description>&lt;p&gt;Just a quick update. Lots of tomatoes at present. Picking a tray full every 3 days or so.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://picasaweb.google.com.au/lh/photo/K7XwTR2gbuCiJiR1pAwgNA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_U-g1hUxYCKY/SelLs9VTujI/AAAAAAAACL4/gIu1vosdMpw/s400/Harvest%20Mid%20April%202009.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://picasaweb.google.com.au/lh/photo/51SRh4z5wtVEaRmxvZk8xA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_U-g1hUxYCKY/SelLoMc20RI/AAAAAAAACLw/cN18PJAsjCo/s400/Tomatoes%20April%202009.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1688553" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/bill/archive/tags/Life/default.aspx">Life</category></item></channel></rss>