<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://bartdesmet.net/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>B# .NET Blog : Personal</title><link>http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx</link><description>Tags: Personal</description><dc:language>en</dc:language><generator>CommunityServer 2007 (Build: 20423.869)</generator><item><title>2010 – A Personal Change: putting my “Head In The Cloud”</title><link>http://bartdesmet.net/blogs/bart/archive/2010/01/10/2010-a-personal-change-putting-my-head-in-the-cloud.aspx</link><pubDate>Mon, 11 Jan 2010 01:26:00 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:15042</guid><dc:creator>bart</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=15042</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2010/01/10/2010-a-personal-change-putting-my-head-in-the-cloud.aspx#comments</comments><description>&lt;p&gt;Slightly over two years after arriving here in Redmond to work on the WPF team, time has come for me to make a switch and pursue other opportunities within the company. Starting January 13th, I’ll be working on the &lt;strong&gt;SQL Cloud Data Programmability Team&lt;/strong&gt; on various projects related to &lt;em&gt;democratizing the cloud&lt;/em&gt;. While we have much more rabbits sitting in our magician hats, &lt;a href="http://blogs.bartdesmet.net/blogs/bart/archive/tags/Rx/default.aspx"&gt;Rx&lt;/a&gt; is the first big deliverable we’re working on.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;MARGIN-LEFT:0px;BORDER-TOP:0px;MARGIN-RIGHT:0px;BORDER-RIGHT:0px;" title="" border="0" alt="" src="http://i.msdn.microsoft.com/ee794896.DevLabs_Rx_Project(en-us).png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;For my blog, there won’t be much change as I’ve always written on topics related to what I’ll be working on: language innovation, data access, LINQ, type systems, lambda fun, etc. I’m planning to stay committed to blogging and other evangelism activities, including speaking engagements from time to time, so feel free to ping me if I’m in your proximity (or if you’re visiting our campus). Next up and confirmed are TechDays “low lands” in &lt;a href="http://www.techdays.be/"&gt;Belgium&lt;/a&gt; and the &lt;a href="http://www.devdays.nl/"&gt;Netherlands&lt;/a&gt;, end of March.&lt;/p&gt;
&lt;p&gt;Needless to say, I’m thrilled to have this opportunity of working together with a relatively small group of smart and passionate people, on the things I’d spend all my free time on anyway. Having this one-to-one alignment between day-to-day professional activities at work and all sorts of free time hacking projects is like a dream coming true. Thanks &lt;a href="http://blogs.msdn.com/dannyvv"&gt;Danny&lt;/a&gt;, &lt;a href="http://research.microsoft.com/en-us/um/people/emeijer/"&gt;Erik&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/jeffva"&gt;Jeffrey&lt;/a&gt;, &lt;a href="http://www.cartesianclosed.com/"&gt;Mark&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/wesdyer"&gt;Wes&lt;/a&gt; for taking me on board.&lt;/p&gt;
&lt;p&gt;Expect to see more Rx blogging love over here, and watch out for more goodness to come your way in the foreseeable future. In the meantime, check out the following resources on the matter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"&gt;MSDN DevLabs Rx homepage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://channel9.msdn.com/tags/Rx/"&gt;Channel 9 Rx videos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.bartdesmet.net/blogs/bart/archive/tags/Rx/default.aspx"&gt;My Rx blog category&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/rx/threads"&gt;Our forums&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Please keep the feedback on Rx coming: help us, help you!&lt;/p&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=15042" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category><category domain="http://bartdesmet.net/blogs/bart/archive/tags/IIgnorable/default.aspx">IIgnorable</category><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Rx/default.aspx">Rx</category></item><item><title>Top 9 Posts from 2009</title><link>http://bartdesmet.net/blogs/bart/archive/2010/01/03/top-9-posts-from-2009.aspx</link><pubDate>Sun, 03 Jan 2010 09:08:39 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:14996</guid><dc:creator>bart</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=14996</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2010/01/03/top-9-posts-from-2009.aspx#comments</comments><description>&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;select top &lt;/span&gt;9 [Subject] &lt;span style="color:blue;"&gt;from &lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;cs_Posts&lt;br /&gt;&lt;span style="color:blue;"&gt;where &lt;/span&gt;postlevel &lt;span style="color:gray;"&gt;= &lt;/span&gt;1 &lt;span style="color:gray;"&gt;and &lt;/span&gt;usertime &lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;01/01/2010&amp;#39; &lt;/span&gt;&lt;span style="color:gray;"&gt;and &lt;/span&gt;usertime &lt;span style="color:gray;"&gt;&amp;gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;&amp;#39;01/01/2009&amp;#39;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;order by &lt;/span&gt;TotalViews &lt;span style="color:blue;"&gt;desc&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Forgive me for the classic SQL, but here are the results with some short annotations inline:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/08/17/mis-using-c-4-0-dynamic-type-free-lambda-calculus-church-numerals-and-more.aspx"&gt;(Mis)using C# 4.0 Dynamic – Type-Free Lambda Calculus, Church Numerals, and more&lt;/a&gt; 

    &lt;br /&gt;

    &lt;br /&gt;Uses the new C# 4.0 dynamic feature to implement the type-free lambda calculus consisting of an abstraction and application operator. Besides talking about the fundamentals of lambda calculus, this post shows how to implement the SKI combinators and Church Booleans, Church numerals and even recursive functions. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/08/17/linq-to-ducks-bringing-back-the-duck-typed-foreach-statement-to-linq.aspx"&gt;LINQ to Ducks – Bringing Back The Duck-Typed foreach Statement To LINQ&lt;/a&gt; 

    &lt;br /&gt;

    &lt;br /&gt;Since LINQ to Objects is layered on top of IEnumerable&amp;lt;T&amp;gt;, it doesn’t work against objects that just happen to implement the enumeration pattern consisting of GetEnumerator, MoveNext and Current. Since the foreach statement actually does work against such data sources, we bring back this duck typing to LINQ using AsDuckEnumerable&amp;lt;T&amp;gt;(). 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/08/30/type-free-lambda-calculus-in-c-pre-4-0-defining-the-lambda-language-runtime-llr.aspx"&gt;Type-Free Lambda Calculus in C#, Pre-4.0 – Defining the Lambda Language Runtime (LLR)&lt;/a&gt; 

    &lt;br /&gt;

    &lt;br /&gt;We repeat the exercise of the first blog post but now without C# 4.0 dynamic features., encoding application and abstraction operators using none less that exceptions. Those primitives define what I call the Lambda Language Runtime (LLR), which we use subsequently to implement a bunch of samples similar to the ones in the first post. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/09/12/taming-your-sequence-s-side-effects-through-ienumerable-let.aspx"&gt;Taming Your Sequence’s Side-Effects Through IEnumerable.Let&lt;/a&gt; 

    &lt;br /&gt;

    &lt;br /&gt;Enumerable sequences can exhibit side-effects for various reasons ranging from side-effecting filter predicates to iterators with side-effecting imperative code interwoven in them. The Let operator introduced in this post helps you to keep those side-effects under control when multiple “stable” enumerations over the sequence are needed. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/08/11/statement-trees-with-less-pain-follow-up-on-system-linq-expressions-v4-0.aspx"&gt;Statement Trees With Less Pain – Follow-Up on System.Linq.Expressions v4.0&lt;/a&gt; 

    &lt;br /&gt;

    &lt;br /&gt;The introduction of the DLR in the .NET 4 release brings us not only dynamic typing but also full-fledged statement trees as an upgrade to the existing LINQ expression trees. Here we realize a prime number generator using statement trees and runtime compilation, reusing expression trees emitted by the C# compiler where possible. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/09/27/linq-to-z3-theorem-solving-on-steroids-part-1.aspx"&gt;LINQ to Z3 – Theorem Solving on Steroids – Part 1&lt;/a&gt; 

    &lt;br /&gt;

    &lt;br /&gt;LINQifying Microsoft Research’s Z3 theorem solver has been one of my long-running side-projects. This most recent write-up on the matter illustrates the concept of a LINQ-enabled Theorem&amp;lt;T&amp;gt; and the required visitor implementation to interop with the Z3 libraries. Finally, we show a Sudoku and Kakuro solver expressed in LINQ. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/08/10/expression-trees-take-two-introducing-system-linq-expressions-v4-0.aspx"&gt;Expression Trees, Take Two – Introducing System.Linq.Expressions v4.0&lt;/a&gt; 

    &lt;br /&gt;

    &lt;br /&gt;Just like post 5, we have a look at the .NET 4 expression tree support, now including statement trees. Besides pointing out the new tree node types, we show dynamic compilation and inspect the generated IL code using the SOS debugger’s dumpil command. In post 5, we follow up by showing how to reuse C# 3.0 expression tree support. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/04/27/unlambda-net-with-a-big-dose-of-c-3-0-lambdas.aspx"&gt;Unlambda .NET – With a Big Dose of C# 3.0 Lambdas&lt;/a&gt; 

    &lt;br /&gt;

    &lt;br /&gt;Esoteric programming languages are good topics for &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/tags/Crazy+Sundays/default.aspx"&gt;Crazy Sundays&lt;/a&gt; posts. In this one we had a look at how to implement the Unlambda language – based on SKI combinators and with “little” complications like Call/CC – using C# 3.0 with lots of lambda expressions. To satisfy our curiosity, we run a Fibonacci sample program. 

    &lt;br /&gt;&amp;#160; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/04/13/c-4-0-feature-focus-part-4-generic-co-and-contra-variance-for-delegate-and-interface-types.aspx"&gt;C# 4.0 Feature Focus – Part 4 – Co- and Contra-Variance for Generic Delegate and Interface Types&lt;/a&gt; 

    &lt;br /&gt;

    &lt;br /&gt;Generic co- and contra-variance is most likely the most obscure C# 4.0 feature, so I decided to give it a bit more attention using samples of the everyday world (like apples and tomatoes). We explain why arrays are unsafe for covariance and how generic variance gets things right, also increasing your expressiveness. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In conclusion, it seems esoteric and foundational posts are quite popular, but then again that’s what I write about most. For 2010, I hope to please my readers’ interests even further with the occasional “stunt coding”, “brain pain” and “mind bending” (based on Twitter quotes in 2009). If there are particular topics you’d like to see covered, feel free to let me know. So, thanks again for reading in 2009 (good for slightly over 1TB – no that’s not a typo – of data transfer from my hoster) and &lt;strong&gt;hope to see you back in 2010&lt;/strong&gt;!&lt;/p&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=14996" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Extraordinary Non-Technical Activities On Saturday</title><link>http://bartdesmet.net/blogs/bart/archive/2009/09/19/extraordinary-non-technical-activities-on-saturday.aspx</link><pubDate>Sun, 20 Sep 2009 03:25:54 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:14811</guid><dc:creator>bart</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=14811</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2009/09/19/extraordinary-non-technical-activities-on-saturday.aspx#comments</comments><description>&lt;p&gt;In this post, I’m going to do something out of the ordinary: write a post on a non-technical matter, in the “Personal” and “Microsoft” (big-bucket general stuff kind-a) categories I’ve left unattended for way too long. So, if you’re looking for interesting technical stuff, go look elsewhere this time around (but I promise to be back soon :-)).&lt;/p&gt;  &lt;p&gt;So yes, this has been an interesting non-technical start (ignoring the &lt;em&gt;continuation&lt;/em&gt; to follow after this post…) of a Saturday over here in Bellevue. To set the scene: a few months ago &lt;a href="http://www.microsoft.com/belux/techdays/2009/session.aspx?sid=intdwvsch&amp;amp;tid=tn_interviews&amp;amp;engine=TechNet"&gt;Dandy&lt;/a&gt; and I have been asked by a Belgian community (in the Microsoft-sense) member to write up something on “The Road to &lt;a href="http://www.bing.com/maps/default.aspx?q=one+microsoft+way+redmond+wa+98052&amp;amp;mkt=en-US&amp;amp;FORM=BYFD"&gt;Redmond&lt;/a&gt;”. Dandy came up with this idea to create a video highlighting several hot-spots in the area. Finally we got around to take care of this request and shoot the moving pictures today. Lots of things interfered with the planning before: camera defects, Best Buy shopping for a new camera, Dandy’s US Open attendance (to see &lt;a href="http://en.wikipedia.org/wiki/Kim_Clijsters"&gt;Kim Clijsters&lt;/a&gt; win, little did she know she’d become a recurring theme in the video), other weekend activities (occult and otherwise).&lt;/p&gt;  &lt;p&gt;It’s kind of funny I’m pretty natural in front of large audiences, but simple video interviews make me behave differently somehow, especially when the spoken language falls back to Dutch instead of the English lingo my brain is in a steady state for. But anyway, we did some great shoots today starting with Belgian-style food and beverages (the latter not for me, as I’m a &lt;a href="http://en.wikipedia.org/wiki/Teetotalism"&gt;teetotaler&lt;/a&gt;) in downtown Bellevue where the waitress claimed to speak a little French but couldn’t properly pronounce &lt;a href="http://www.specialtybeer.com/beer,index,duchesse_de_bourgogne.html"&gt;Duchesse De Bourgogne&lt;/a&gt;. At least we got &lt;a href="http://en.wikipedia.org/wiki/French_fried_potatoes"&gt;Belgian fries&lt;/a&gt; with mayonnaise to go with &lt;a href="http://www.facebook.com/FrietStoofvlees?_fb_noscript=1"&gt;beef stew&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;During a &lt;em&gt;short &lt;/em&gt;visit to Best Buy to buy a tri-pod, I got a first question by the cashier on my unusual (way too geeky, I admit) T-shirt meant for shameless self-promotion of this blog, something that became a running theme throughout the day as well. Its front – typing for Curry-style &lt;a href="http://en.wikipedia.org/wiki/System_F"&gt;System F&lt;/a&gt;-omega (different forms of definition can be found in the literature, but I chose one that fits a medium-sized T-shirt) – and back are shown below:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://bartdesmet.net/images_wlw/ExtraordinaryNonTechnicalActivitiesOnSat_11F2C/F.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="F" border="0" alt="F" src="http://bartdesmet.net/images_wlw/ExtraordinaryNonTechnicalActivitiesOnSat_11F2C/F_thumb.png" width="234" height="260" /&gt;&lt;/a&gt; &lt;a href="http://bartdesmet.net/images_wlw/ExtraordinaryNonTechnicalActivitiesOnSat_11F2C/B.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="B#" border="0" alt="B#" src="http://bartdesmet.net/images_wlw/ExtraordinaryNonTechnicalActivitiesOnSat_11F2C/B_thumb.png" width="260" height="125" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;People who saw the filming in progress or got somehow around us can testify I really do wear a yellow T-shirt with the above :-).&lt;/p&gt;  &lt;p&gt;Next shots were primarily to show off Dandy’s fancy car for the take-off (almost literally, velocity was getting close enough :-)) to the &lt;a href="http://www.spaceneedle.com/"&gt;Space Needle&lt;/a&gt;. Though I’ve been here about two years now (and so does Dandy), I hadn’t been up there just yet. Too touristy if you will, but for the occasion I had an excuse. So we got there and went up, disregarding the cloudy weather and rather windy meteorological circumstances. I must say, the view is kind of nice but nothing too fancy to write home about. Kind as I am, I even took a picture of two ladies discovering some digital cameras still have a proper mechanical “take picture now” button. Last time I had a fancy digital camera in my hands, I couldn’t even find the power button, so I felt really good about this little victory near a camera this time. Dandy insisted me on showing them my T-shirt but maybe I did it a &lt;a href="http://belmontfrontporch.files.wordpress.com/2007/11/trench-coat-flasher-lg-nwm.gif"&gt;little too explicit&lt;/a&gt; (though I sincerely don’t believe so, notice my fellow colleague was a few Belgian beers in), so after thanking me for taking the picture and some little giggles (IMO mostly due to the presence of my colleague…) they took off. I know the (App) rule looks frightening enough for people to jump down, so I kept things a bit more hidden while being on the outside up there.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Back on the inside, we met this pretty &lt;a href="http://en.wikipedia.org/wiki/Tacoma,_Washington"&gt;Tacoma&lt;/a&gt; girl who works up there to answer tourist questions, all dressed up in a fabulous &lt;a href="http://www.spaceneedle.com/iamseattle/"&gt;“I am Seattle”&lt;/a&gt; outfit. Can you believe it she even went to &lt;a href="http://www.brusselsinternational.be/wabxlint/splash.jsp"&gt;Brussels&lt;/a&gt; a while ago, totally jetlagged and looking for some old brewery nearby (can’t think of what that would have been, but nearby on the US scale is, euhm, &lt;em&gt;not small&lt;/em&gt;). But hey, that’s better than nothing (unlike people thinking Belgium is the capital of Brussels, though in the &lt;a href="http://en.wikipedia.org/wiki/Limit_(mathematics)"&gt;limit&lt;/a&gt; things get close :-)). Anyway, she did a splendid job in our video interviews and we even made here pronounce Kim Clijsters more or less correctly. And contrast to the folks on the deck, she didn’t look too frightened about my T-shirt and even found my &lt;a href="http://www.01theone.com/"&gt;binary watch&lt;/a&gt; (standard equipment for a geek) cool.&lt;/p&gt;  &lt;p&gt;Down again, we did a bit more hanging around in their souvenir shop (I know touristy things all look the same, but I needed some confirmation), where we shot some crazy scenes doing &lt;a href="http://www.dailymotion.com/video/x4ily_clipkabouter-plop-de-kabouterdans_family"&gt;Plop dances&lt;/a&gt; in appropriate garments. Put developers together with IT Pros (yes, another cliché) and you get that sort of thing. Oh well, I don’t mind making my self a bit ridiculous from time to time :-).&lt;/p&gt;  &lt;p&gt;Last but not least, we headed over to &lt;a href="http://www.microsoft.com/Presspass/gallery/campus.mspx"&gt;campus&lt;/a&gt; for a few shots around the new Studio buildings, where people were playing cricket on the fields and jogging around in Office T-shirts. All of a sudden, attention for my extraordinary clothing started to drop significantly as people over there are kind of used to this sort of weirdness :-). We did some talking on camera about serious matters this time around, covering subjects on life at Microsoft, the Microsoft culture, etc.&lt;/p&gt;  &lt;p&gt;So yes, once a year or so (give or take) I can do non-geeky stuff as well. Though I need a little compensation by wearing appropriate clothing and such :-). People who believe they were part of this crazy plot today, feel free to drop a note in the comments section below this post.&lt;/p&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=14811" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://bartdesmet.net/blogs/bart/archive/tags/IIgnorable/default.aspx">IIgnorable</category></item><item><title>The tale of the occasional network administrator</title><link>http://bartdesmet.net/blogs/bart/archive/2009/05/31/the-tale-of-the-occasional-network-administrator.aspx</link><pubDate>Sun, 31 May 2009 08:03:00 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:14480</guid><dc:creator>bart</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=14480</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2009/05/31/the-tale-of-the-occasional-network-administrator.aspx#comments</comments><description>&lt;p&gt;Saturday evening, 10:30 PM, Seattle time. Window 7 RC&amp;#39;s audio stack is pumping music from the Internet Explorer process to the laptop speakers, the process manager boosts Word 2007 with foreground priority. Bart is writing something yet unannounced. Live Messenger (not to be renamed Bing Messenger) is running too. 10 + 9 = 7, at least in clock arithmetic, a quick calculation revealing the hour component of the time at &amp;quot;home&amp;quot;, in Belgium. Little Facebook activity going on, not expecting too many log-on notifications on Messenger either. Affordable to swap in lots of context and concentrate on the writing job at hand. Boosting the IRQ level too. Life is good.&lt;/p&gt;
&lt;p&gt;10:35 PM, Seattle time. A log-on notification message disturbs the graphical memory in the bottom right corner of the screen, after being fixed with some of Word&amp;#39;s chrome for zooming and scrolling. The MSNP protocol is doing its work faithfully. The audio stack nicely overlaps the music with the log-on sound. An interrupt takes place. Old friend in Belgium, awake at 7:35 AM in a Sunday morning? Strange. A conversation is initiated, and&amp;nbsp;a few watts in the data center are spent connecting two old friends together through the electronic alleyways of a gigantic TCP/IP world-scale network. An ethernet package with payload &amp;quot;&lt;font size="2"&gt;too early - go to bed :)&amp;quot;, with the last two-length character sequence nicely turned into a yellow happy face, leaves the NIC&amp;#39;s port. An answer &amp;quot;emergency&amp;quot; followed by the brother&amp;#39;s of the aforementioned yellow face travels back. Rang out of bed for some server going down it seems. None of my business. For a while at least...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Makes me wonder why I always have to inform for the software being used. Curious to hear about our stuff put to practice I guess. Admitted, I felt quite happy to hear Windows Server was involved. Not the latest release, but hey: better than nothing. Quite happy, but a bit unconfortable too: what piece of software was to blame, if any? Curiosity, that was I think it is. Or maybe my subconsience was in search for an excuse to deflect further talks about technology. Don&amp;#39;t want to spoil a sunny morning in Ghent, Belgium - sunny, according to an orphaned&amp;nbsp;sidebar gadget, floating freely on the Windows 7 desktop now. Let&amp;#39;s not go deeper into an analysis of the subconsious me, I&amp;#39;m not a qualified psychologist, nor will I become one, and qualified ones haven&amp;#39;t had any luck to reverse engineer my dark cells so far. Anyway, we suspend the conversation for a while. Problem being investigated on the other side; using the window switcher to get back to Word 2007. Smalltalk, in any form, I like it.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;10:41 PM, Seattle time. A new IM message arrives. Error messages are being pasted. Should I regret having initiated a conversation to begin with? Maybe. Could turn out to be a fun exercise of psychic remote debugging. It takes 5 minutes to make Messenger turn to the Away state. Can&amp;#39;t fake it too obviously. Should I respond? Let&amp;#39;s glimpse over the message a second time:&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;font size="2"&gt;
&lt;p&gt;&lt;em&gt;An IO error occurred during FTP transport, No buffer space available (maximum connections reached?): JVM_Bind, No buffer space available (maximum connections reached?)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;Should I make a silly joke about certain three-letter acronyms in the message? Nah, let&amp;#39;s be fair. Wouldn&amp;#39;t help the other side, and my technological bias is already known. Obviously I don&amp;#39;t like the FTP protocol, or what did you think I was referring to? Actually I like the error message with built-in redundancy. They seem to be quite sure about the cause. But what does some error reporting component like to tell us? Clearly &amp;quot;No buffer space available (maximum connections reached?)&amp;quot;.&lt;/p&gt;
&lt;p&gt;Bing search did reveal a few useful hits, but some further diagnostics would be desirable. Time for me to reveal there&amp;#39;s a bit of network admin in me. Just a tiny bit, but enough for the job at hand. Hints indicate it might reveal a &lt;font size="2"&gt;WSAENOBUFS error code. Good old &lt;a href="http://msdn.microsoft.com/en-us/library/ms740668(VS.85).aspx"&gt;WinSock&lt;/a&gt;. Netstat might tell us something. Let&amp;#39;s ask for a netstat -n -b -a&amp;nbsp;output. Don&amp;#39;t want to look like a &lt;a href="http://www.tv.com/the-thin-blue-line/fly-on-the-wall/episode/3239/summary.html"&gt;dicky-doo-dah&lt;/a&gt;, let&amp;#39;s try myself first. A hint to our DOS background &amp;quot;C:\_&amp;quot; catches my eye on the Windows 7 superbar. A few ALT-TAB presses will bring me there. Aarg, console out is fed with a string buffer containing the words &amp;quot;The requested operation requires elevation.&amp;quot;. I&amp;#39;m in the post-Vista era. Oh well, I trust my main memory, press &amp;lt;ENTER&amp;gt; in the Live Messenger window.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;A text file travels back, capturing output of the requested command:&lt;/font&gt;&lt;/p&gt;&lt;font face="Courier New"&gt;
&lt;p&gt;&lt;font size="2"&gt;Active Connections&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&amp;nbsp; Proto&amp;nbsp; Local Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Foreign Address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; State&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PID&lt;br /&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&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; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 13668&lt;br /&gt;&amp;nbsp; [inetinfo.exe]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:22&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&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; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 13668&lt;br /&gt;&amp;nbsp; [inetinfo.exe]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:80&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:0&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; LISTENING&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 13068&lt;br /&gt;&amp;nbsp; W3SVC&lt;br /&gt;&amp;nbsp; [svchost.exe]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;...&lt;/p&gt;
&lt;p&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:1026&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.27.22:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOSE_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15384&lt;br /&gt;&amp;nbsp; [dllhost.exe]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:1027&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOSE_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15384&lt;br /&gt;&amp;nbsp; [dllhost.exe]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:1028&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOSE_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15384&lt;br /&gt;&amp;nbsp; [dllhost.exe]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; ...&lt;/p&gt;
&lt;p&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:4998&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOSE_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15384&lt;br /&gt;&amp;nbsp; [dllhost.exe]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:4999&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOSE_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15384&lt;br /&gt;&amp;nbsp; [dllhost.exe]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:5000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.27.22:21&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOSE_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15384&lt;br /&gt;&amp;nbsp; [dllhost.exe]&lt;/p&gt;
&lt;p&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 127.0.0.1:383&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 127.0.0.1:4696&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TIME_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 127.0.0.1:4281&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 127.0.0.1:2485&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TIME_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 127.0.0.1:4696&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 127.0.0.1:2485&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TIME_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;&amp;nbsp; TCP&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.30:4281&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 172.26.28.31:445&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TIME_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;&amp;nbsp; UDP&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0:135&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;&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; 1936&lt;br /&gt;&amp;nbsp; RpcSs&lt;br /&gt;&amp;nbsp; [svchost.exe]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;...&amp;nbsp;&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;Nice to see some good old friends like IIS. But back to business. A Dictionary&amp;lt;string,int&amp;gt; in my main memory is consulted for a lookup on key &amp;quot;FTP&amp;quot;, providing a prompt response of 21. What about looking for :21 in the file? Hmm, quite a bit of hits. Port 1026, CLOSE_WAIT. 1027 same deal, not any different for 1028. A scroll bar decorates the right border of my favorite editor, Notepad. WM_VSCROLL messages are pumped, SB_THUMBTRACK joins the party. 4998 involved in an intimate though partly terminated relationship with 21 too. Same for 4999 and 5000. 21 is no further engaged. Strange, a round number. Port 21 is not monogamic for sure. But 3975 desparate ports jumping on it, can it cope with that? Something&amp;#39;s going on here.&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;80 centimeters behind me lies the answer in dead tree format. I reach out to my bookshelve. A blue book, purchased 08/03/03 in Ghent according to a sticker on the back, is removed from its spot where it&amp;#39;s been sitting since its overseas transportation almost two years ago. Not too dusty though. The title is still clearly readable: &lt;a href="http://www.microsoft.com/learning/en/us/books/5030.aspx"&gt;Windows Server 2003 TCP/IP Protocols and Services&lt;/a&gt;. Yes, I admit. I even posess books on IIS 6.0, Exchange 2003, Active Directory&amp;nbsp;Services and PKI in Windows Server 2003. Not just for decoration, I&amp;#39;ve read significant portions of it in a distant past. Oh, those &lt;a href="http://www.firw.ugent.be/p_ENG.jsp?param=welcome"&gt;student times&lt;/a&gt;&amp;nbsp;with plenty of time. Dreaming back of times with my chat buddy, sitting next to one another in courses. Pretending to pay attention. Sometimes we actually did.&amp;nbsp;A power state transition request for S1 is made in my head, but not granted. I can&amp;#39;t fall asleep now. The Book Browser service is started. Damn this book looks boring. Payload diagrams, sequence diagrams, tables. Some yellow marker reveals I&amp;#39;ve actually gone through it, ever, but the book Browser Service keeps triggering cache misses.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;What am I looking for anyway? Oh yes, huge number of connections in CLOSE_WAIT state. Luckily, the Book Browser service declared a dependency on the Indexer service. It&amp;#39;s consulted to load pages in the upper range of the dead tree volume, triggering a search algorithm&amp;nbsp;for LCID 1033, and responds to the &amp;quot;CLOSE_WAIT&amp;quot; query with an offset 329. The Book Browser service takes over again and efficiently locates and maps in the page. A table explains: &amp;quot;A FIN-ACK has been received and a FIN-ACK has been sent.&amp;quot;. Useful to know. Is there more? Figure 13-7 reveals TCP connection states. I remember it was quite involved but the number of arrows makes me dizzy. A bit of Pineapple Orange Strawberry juice will help to rejuice my power supplies. The linear page scanning is continued, and pauses at &amp;quot;Controlling TCP Connection Terminations in the Windows Server 2003 Family and Windows XP&amp;quot;. Blah, blah. TcpTimedWaitDelay. What&amp;#39;s that? Default value of 240, the number of seconds that a TCP connection remains in the TIME WAIT state. No, we&amp;#39;re in CLOSE_WAIT still. Lookup continues. Hints appear for a MaxUserPort setting: &amp;quot;MaxUserPort specifies the maximum port number .... The default value of MaxUserPort is 5000.&amp;quot; Bingo. We&amp;#39;re on to something.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;So, what happened? Some uploader for a content management system, hosted by dllhost.exe, is overly ambitious to upload files in parallel and exhausts the number of ports available to applications. All of this in a short period of time, not enough for ports to be reclaimed. &lt;a href="http://technet.microsoft.com/en-us/library/cc758002.aspx"&gt;MaxUserPort&lt;/a&gt; is the cure. At least just for the symptoms. Clearly, there&amp;#39;s a bigger problem here. Why is the CMS so greedy with sockets? I start the discussion. Being an emergency, my chat buddy decides to boost the setting, and requests a reboot by the data center folks. They&amp;#39;ll look at the underlying problem in the near&amp;nbsp;future. A case of premature optimization I feel. 4000 or so parallel connections. Wonder how that scales. Wasn&amp;#39;t FTP stateful? Reuse, pooling, whatever. Local network communication it follows from context, why no SMB file copy operations? Lots of questions.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Problem solved for now, and we chatted a bit more about the weather. Smalltalk, you know?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;PS: Why does Bart have a book on network protocols? There&amp;#39;s been a time I implemented network protocols in managed code, for fun. I love the specifications, their relatively high level of precision, and the great discussion topic they form for lunch conversations.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;ACK&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=14480" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Going Rock Solid – SSD Blows Me Away (Really!)</title><link>http://bartdesmet.net/blogs/bart/archive/2009/02/23/going-rock-solid-ssd-blows-me-away-really.aspx</link><pubDate>Tue, 24 Feb 2009 06:07:33 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:14286</guid><dc:creator>bart</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=14286</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2009/02/23/going-rock-solid-ssd-blows-me-away-really.aspx#comments</comments><description>&lt;p&gt;Geeks need fancy hardware, don’t they? Well, for a geek, this evening has been a most exciting one. A while back, I decided I should start thinking about upgrading my laptop. I’m currently running a dual core 2.16 GHz machine with 2GB of RAM. As I’m writing this, I conclude I’ve already forgotten when I got the thing. But my blog reveals the &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2006/03/24/3840.aspx"&gt;precise timing&lt;/a&gt;. That’s almost three years now, enough for Moore’s law to strike twice or so. So, the specs I got in mind are as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Quad Core CPU (I’m running one of these at work on a desktop and build times benefit greatly)&lt;/li&gt;    &lt;li&gt;8GB of RAM&amp;#160; (I want to be able to run Hyper-V while I’m “on the road”)&lt;/li&gt;    &lt;li&gt;1920 x 1200 resolution (I’d never settle for a lower resolution)&lt;/li&gt;    &lt;li&gt;Solid State Drive (I’m a geek after all…)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Not everything needs to be the sweetest piece of hardware for me though. The first thing I downgrade is the video card (and I’m actually proud of that); gaming and movies are the biggest waste of time on earth (personal opinion, feel free to disagree) and I don’t care about the fancy pixels some humans require to transmit optical impulses carrying fiction for the brain. A good old boring text editor for coding is all I need (and occasionally a mail reader and web browser to survive in the connected jungle called the internet).&lt;/p&gt;  &lt;p&gt;Due to availability issues on the LCD screen I kept myself from ordering the new laptop, but instead I wanted to prepare myself for the upgrade. So, a few weeks back I heard about the &lt;a href="http://www.intel.com/design/flash/nand/mainstream/index.htm"&gt;Intel X25-M SATA Solid-State Drive&lt;/a&gt; from a colleague at work. It seems that most laptop vendors that offer SSD are kind of vague on the thing they put inside and I heard some horror stories on reliability of a few models. But the X25-M, 80GB in capacity, had very good reviews. So last Friday, I decided to order the thing and this morning it arrived; some online stores offer amazing delivery times in a country as big as this one (where I’m considered a “resident alien”, only the first part was new to me when I first heard it). A bit expensive, I have to admit, but I don’t care (another colleague of mine insists I shouldn’t care at all, being a single geek driving no car, carrying no cell phone and not owning photon emitting devices called TVs).&lt;/p&gt;  &lt;p&gt;In the meantime, this weekend, I visited an electronics store in the wide area of Seattle, looking for a 7200 RPM high-capacity classic (boring) mechanical hard drive. Historically I’ve been a huge fan of Western Digital and recent quotes from another WD-believer at work (who experienced a non-WD drive crash) confirmed my faith in Western Digital, so I got &lt;a href="http://www.wdc.com/en/products/Products.asp?DriveID=482"&gt;one&lt;/a&gt;. Ultimately this will become the secondary disk in my new laptop, to store virtual machine images on. For now, it contains a couple of demo partitions for my upcoming trip. Actually this makes me wonder whether I’m the only one spending far too much time strategizing partition sizes only to conclude I’ve made the wrong partitioning once more?&lt;/p&gt;  &lt;p&gt;Actually, I seldom reinstall my computer, most of the time I get a new hard disk, mostly because the old one is such a mess it’s almost impossible to backup all the files I still care about, so I just keep it around likely to never plug it in again (a great way to reset the brain is to take distance from existing pieces of work :-)). However, that barrier has been removed now too as I ordered a &lt;a href="http://www.thermaltakeusa.com/Product.aspx?C=1346&amp;amp;ID=1642"&gt;Thermaltake docking station&lt;/a&gt; last Friday with my SSD order too. Kind of funny, because earlier tonight I gave the thing a try. I removed the 320 GB 7200 RPM disk that was in the laptop for barely two days, placed it in the device and plugged it in. Next, I tried to boot the machine from it, and yes: there was Windows 7 resuming from hibernation…&lt;/p&gt;  &lt;p&gt;Anyway, here I am, writing this blog post on a brand new snappy install of some recent Windows 7 build, live on SSD. Here’s how the install went, carefully written down on the analog device commonly referred to as a whiteboard behind me:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;8:20 – Boot from network, contacting our Windows Deployment Services servers.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;8:28&lt;/strong&gt; – Went through the first few clicks of the Windows 7 installer, selecting keyboard layout, locale and the destination partition. My SSD 80 GB appears, obviously suspect to a 2^10 division error as our OS believes in &lt;a href="http://en.wikipedia.org/wiki/Gibibyte"&gt;GiB&lt;/a&gt; more than &lt;a href="http://en.wikipedia.org/wiki/Gigabyte"&gt;GB&lt;/a&gt;. File copy starts.&lt;/li&gt;    &lt;li&gt;8:37 – File copy (over the network) and file extraction finishes. The patterns in the blinking of the disk (no longer hard-) activity LED look different, but that might be my imagination. One thing is sure: the icon for disk activity needs to be replaced by the outlines of a chip as opposed to a cylinder.&lt;/li&gt;    &lt;li&gt;8:38 – The machine reboots twice the next two minutes, finishing the installation and detecting some hardware.&lt;/li&gt;    &lt;li&gt;8:39 – Windows starts the first time after the installation.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;8:40&lt;/strong&gt; – I’m on the desktop of the freshly installed machine.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The core of the installer (eliminating booting from the network and loading the Windows PE image that is) took &lt;strong&gt;&lt;font color="#ff0000"&gt;barely 12 minutes from a completely empty disk to a 10 GB occupation for the clean install&lt;/font&gt;&lt;/strong&gt; (including page file, cache of the setup binaries, etc). I attribute this to two things: I’ve experienced the Windows 7 installer to be really fast for clean installs, and the solid state disk seems to make a difference (although SSD doesn’t excel in write speeds according to specifications).&lt;/p&gt;  &lt;p&gt;Next, I wanted to give boot time a test. Cold start, from a press on the power button takes &lt;strong&gt;&lt;font color="#ff0000"&gt;14 seconds to the boot screen (4 to the first pixel of the Windows 7 boot logo)&lt;/font&gt;&lt;/strong&gt;. Disk activity is completely absent at the end. Next I log in to the local profile and &lt;strong&gt;&lt;font color="#ff0000"&gt;3 seconds later I’m on my desktop&lt;/font&gt;&lt;/strong&gt; with now disk activity whatsoever. The clean install on the mechanical drive last weekend took 34 seconds all the way to the desktop with drive activity till the very end. (&lt;u&gt;Note:&lt;/u&gt; I seldom use red text on my blog, but from this you can tell I’m as excited as a new-born, not that I’ve seen a new-born in years...)&lt;/p&gt;  &lt;p&gt;Windows 7 downloads a few drivers that didn’t come on the OS image (for my crappy video card), the system reboots and I have to re-do the hardware assessment as new hardware has been found. This is the moment of truth:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/image_7B5DEF6B.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://community.bartdesmet.net/blogs/bart/image_thumb_2655DD71.png" width="857" height="544" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Windows 7 seems to tell me indirectly I should become a gamer by subtly pointing out the slightly-below-average performance of a thing called “3D business and gaming graphics performance”. Unfortunately I don’t have a microphone installed: the speech recognition engine would have had a hard time recognizing my yell which reflected an emotional state anywhere between: “Graphics go to ****; Solid State go to ****” (where the two **** notations have totally opposite meanings). I should note the disk’s SATA interface has a higher bandwidth than my motherboard is capable of (will get resolved soon with the new baby), so the result is even not honoring the drive’s speed for full.&lt;/p&gt;  &lt;p&gt;In the meantime I’ve copied my Virtual PC demo images from my mechanical drive and clearly the performance of the images has increased significantly. The machine feels like reborn, the right bottom corner is dead silent and cold (for the first time, the left hand side carrying the DVD drive gets hotter – no it doesn’t contain a movie, just a DVD with robust software bits). Visual Studio and Office applications have been installed in the meantime and feel to start up much faster. Next test is the battery drain, but the last 40 minutes I have only lost 15% of my battery charge, so that seems to go in the right direction too. Finally I’ll be able to do a bit more work on transatlantic flights…&lt;/p&gt;  &lt;p&gt;Needless to say, the SSD movement has a new believer. &lt;strong&gt;&lt;font color="#ff0000"&gt;Get one to believe it yourself!&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=14286" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Windows+7/default.aspx">Windows 7</category></item><item><title>Upcoming trips – TechDays Finland, Belgium and more</title><link>http://bartdesmet.net/blogs/bart/archive/2009/02/22/upcoming-trips-techdays-finland-belgium-and-more.aspx</link><pubDate>Mon, 23 Feb 2009 02:33:28 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:14279</guid><dc:creator>bart</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=14279</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2009/02/22/upcoming-trips-techdays-finland-belgium-and-more.aspx#comments</comments><description>&lt;p&gt;Readers can expect traffic caused by my blog to decrease a bit over the next few weeks as I’ll be travelling to Europe for a couple of events I’ll be speaking at (not to talk about the preparations required for the seven distinct talks &amp;lt;g&amp;gt;). If you’re attending any of those events or are in the proximity, feel free to jump by and say ‘Hi’ (or better, attend one of my talks). Here’s an overview of the topics I’ll be delivering:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;TechDays Finland – 5 and 6 March&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;More information about the event at &lt;a href="http://www.techdays.fi"&gt;http://www.techdays.fi&lt;/a&gt;. I can’t read a word of it, so no idea how my talks (and my bio :-)) are described…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Introduction to Oslo and ”M”&lt;/strong&gt; – Covers the essentials of the Oslo modeling platform with a bit more attention to the language aspect of it. During this talk, I’ll be showing stuff attendees can play with immediately using the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=f2f4544c-626c-44a3-8866-b2a9fe078956&amp;amp;displaylang=en"&gt;Oslo January 2009 CTP SDK&lt;/a&gt;, covering the repository, Intellipad, the m/mx toolchain, the M language and maybe a bit of MGrammar. Check out my &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/tags/M/default.aspx"&gt;blog series on the topic&lt;/a&gt; as well.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Introduction to F# &lt;/strong&gt;– One of my favorite .NET languages is without doubt &lt;a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/"&gt;F#&lt;/a&gt; (the first part of a blog series on the language is in my Windows Live Writer drafts folder as we speak). This session will be a gentle introduction to F#, explaining why functional matters and how it can help to solve real-world problems. We’ll also look at the more “exotic” features of F# like asynchronous workflows, that make the language unique.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I’ve never been to Helsinki, so I plan on sight-seeing half a day during the hectic trip :-). If you have any tips on must-see places, let me know!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ICTdag Belgium – 9 March&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;An event I’ve been speaking at quite a bit in the past when I was a full-time Belgian... The site is in Dutch, but the curious can find information here: &lt;a title="http://ictdag.be/indexnl.aspx" href="http://ictdag.be"&gt;http://ictdag.be&lt;/a&gt;. Basically it’s an event for education folks (teachers, ICT coordinators, etc) on how to use technology in schools. Always great to meet a different kind of audience than developers or IT Pros.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;A sneak peek at Windows 7&lt;/strong&gt; – What’s new in Windows 7: covers improvements to the user experience, a few looks at more technical concepts, Internet Explorer 8, etc.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Windows PowerShell Introduction&lt;/strong&gt; – How to use Windows PowerShell to improve manageability of school infrastructures and networks on Windows.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The event takes place in Hasselt, and a short train ride brings me to…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;TechDays Belgium – 11 and 12 March&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This time in Antwerp, more information at &lt;a href="http://www.techdays.be"&gt;http://www.techdays.be&lt;/a&gt;. Looking forward to meet old friends from Microsoft Belux and the community once more.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;The Future of C#&lt;/strong&gt; – Essentially a redelivery of &lt;a href="http://channel9.msdn.com/pdc2008/TL16/"&gt;Anders’ great PDC08 session&lt;/a&gt; on the topic, but with a couple of little “under the covers” investigations. In this talk, we’ll take a look at what’s coming next for C# in the 4.0 release. Features that will be covered are dynamic, generic co- and contravariance, optional and named parameters, better COM interop and “no PIA”.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;LINQ in Breadth&lt;/strong&gt; – Ah, this one will be truly fun (the others too of course, but this one just that little bit more). Last year, I talked at the same conference on “LINQ in depth” (custom LINQ providers); this time, I’m rotating the approach. I have a few surprises in the cooker, but basically we’ll take a look at LINQ from a different angle: how to LINQify virtually everything, how to apply LINQ design concepts in other places, etc.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Windows PowerShell v2: the IT revolution, part two&lt;/strong&gt; – An overview of Windows PowerShell 2.0 features with a closer look at the WS-MAN and Remoting functionality that will be part of the second release of PowerShell. Other topics that will be covered are script cmdlets, interactive script debugging, ISE (Interactive Scripting Environment) and more.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I have a few upcoming blog posts ready that will come to your RSS feeds in auto-pilot mode, but response to feedback might be slow.&lt;/p&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=14279" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category></item><item><title>The Tale of the Obscure Weblog Engine Bug</title><link>http://bartdesmet.net/blogs/bart/archive/2009/02/15/the-tale-of-the-obscure-weblog-engine-bug.aspx</link><pubDate>Mon, 16 Feb 2009 01:01:00 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:14213</guid><dc:creator>bart</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=14213</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2009/02/15/the-tale-of-the-obscure-weblog-engine-bug.aspx#comments</comments><description>&lt;p&gt;A couple of days ago I wrote about Oslo in my blog entry &lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/02/13/getting-started-with-oslo-introducing-m.aspx"&gt;Getting started with Oslo – Introducing “M”&lt;/a&gt;. It turned out quite a bit of a hassle to get the thing posted for various reasons that make my setup not ideal. Here’s what the battlefield looked like:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A short combat with &lt;a href="http://technet.microsoft.com/en-us/library/bb742423.aspx"&gt;IntelliMirror&lt;/a&gt;. Our network infrastructure allows to set up folder redirection, so that your documents follow you everywhere. However, Windows Live Writer kept claiming the disk was full. I had forgotten where Windows Live Writer stores its stuff (obviously under My Documents which were on the file server), so my reaction was: “can’t be true – I have plenty of space free on my disk”, so I opened up &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx"&gt;Process Monitor&lt;/a&gt; only to conclude Windows Live Writer was honest to me and reminded me in an indirect way I was IntelliMirrored:       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image_thumb.png" width="640" height="173" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;And the rest was easy to figure out: I had reached my quota (due to other large Windows Live Writer drafts with lots of pictures).       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Convince my network stack to connect to the FTP server to upload pictures. Turned out I didn’t have the &lt;a href="http://technet.microsoft.com/en-us/library/bb794739.aspx"&gt;ISA Firewall Client&lt;/a&gt; software installed yet and our IT department knows how to lock down network access quite well :-). Another time Windows Live Writer wasn’t to blame at all. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But now the final challenge came up:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image_3.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image_thumb_3.png" width="365" height="241" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Let’s spell out the message for search indexing friendliness: “Blog Server Error. Server Error 0 Occurred. Specified argument was out of the range of valid values. Parameter name: The requested index value does not exist”. Hmm, looks like an IndexOutOfRangeException to me, doesn’t it? Yes, it was a pretty complex post in terms of size, number of pictures, etc, but nothing too fancy in there (and It Should Just Work, &lt;a href="http://msdn.microsoft.com/en-us/library/ms235282(VS.80).aspx"&gt;irrelevant link&lt;/a&gt;). The fact the title of the error says “Blog Server Error” told me Windows Live Writer was putting the blame on my blog engine, so I turned my attention to that one. It started to feel like the cloud was letting my down that night :-).&lt;/p&gt;  &lt;p&gt;However, I couldn’t really find a clue in the exception logs on the server, so it was about time to train my psychic debugging skills (for various, non-technical, reasons I can’t debug through the source code of the blog engine). Let’s analyze what I’m trying to do: posting quite some text with images in it, but I also added new categories from within Live Writer:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image_4.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image_thumb_4.png" width="314" height="138" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Maybe the server tried to access the new categories and hit an issue doing so (because they were too new or so, you never know). Bummer, deselecting the categories doesn’t fix it. What else? Lots of images in my post, but that has worked before. It should be the text somehow, but I couldn’t yet think about special things in there. So, I started a new post, copying in parts of my original post and try to isolate the problem using divide and conquer (a proven technique). The precise same post without the images still had the problem, so that was assuring. As I started to cut out pieces, I came to the realization there was something different about this post: it had SQL code in it, something almost unprecedented on my blog.&lt;/p&gt;  &lt;p&gt;Thinking I was on the right track with a theory about SQL code being the root cause, I removed my SQL fragment and sure it worked fine. So, I started to weed out the duplicate statements (multiple create tables, insert intos, create schemas, etc), and was able to isolate the issue to something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image_5.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image_thumb_5.png" width="227" height="148" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ultimately I removed everything but the [ Name ] thing (notice how I’m inserting spaces now), and sure it still failed to post. If square brackets somehow are the issue, I thought I should find something about it around the web. I searched and found: &lt;a href="http://dev.communityserver.com/forums/p/489680/589749.aspx#589749"&gt;Problem with brackets and Date in CS 2&lt;/a&gt;, another blogger sharing a technical story in the realm of SQL, with OLAP. I ended up dropping the SQL fragment for now (it was meant to be an introductory post anyway, or how a bug can help you to improve introductory content :-)), but the “fix” was easy: don’t use some special names within brackets.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image_6.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://www.bartdesmet.info/images_wlw/TheTaleoftheSecureWeblogEngine_12978/image_thumb_6.png" width="452" height="104" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I’ll apply the real fix soon: upgrading to a new build of the blog software. But for now, I’m satisfied rational thinking (and directed web searches) still pays off when trying to debug through issues. After all, a happy ending!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;PS: Help, I’m blogging about blogging. I’m not becoming a &lt;em&gt;meta-blogger&lt;/em&gt;, am I?&lt;/p&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=14213" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Blog Traffic Load Balancing</title><link>http://bartdesmet.net/blogs/bart/archive/2008/04/19/blog-traffic-load-balancing.aspx</link><pubDate>Sun, 20 Apr 2008 00:58:54 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:13503</guid><dc:creator>bart</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=13503</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2008/04/19/blog-traffic-load-balancing.aspx#comments</comments><description>&lt;p&gt;I love my blog readers. Of course purely in a professional sense but still. Before I continue, let me point out to my much beloved audience on the other side of the RSS channel that this post isn&amp;#39;t particularly interesting. So, if you&amp;#39;re looking for hardcore technical stuff, I&amp;#39;d strongly recommend to ignore my post for one time.&lt;/p&gt;  &lt;p&gt;So what brings me to write down this love declaration all of a sudden? A flashback: in late 2003 I started to blog on blogs.bartdesmet.net. I already had my domain name but no particularly interesting homepage (and the color scheme was a highly controversial topic of discussion amongst some of my friends). In fact, I&amp;#39;ve never been a big fan of homepages with photos of summer barbecues, tales about pets and other personal trivia. So I wanted to take a different approach and started to maintain a technical blog. Having been involved in some local projects that required a web server I was so kind to maintain (first Windows 2000 Server, later Windows Server 2003), it was a luxury for me to take some of the machine&amp;#39;s web space and point my domain to it. At that time, we weren&amp;#39;t really bandwidth constrained, being housed on a fiber network in a semi-professional housing environment.&lt;/p&gt;  &lt;p&gt;But luxury is a volatile phenomenon. Time passed by, the project moved to other housing environments and I was no longer involved in the web server&amp;#39;s maintenance (which was honestly a bit of a relief too). However, my blog was in the position of becoming homeless which wasn&amp;#39;t a pretty thought given the number of links to it and of course all the time I invested to write up my sometimes interesting posts. So I was looking out for some affordable hosting company - which will remain unnamed - providing the latest and greatest platform (Windows Server 2003 and SQL Server 2005 at the time) with enough space to hold my contents. At the time I had about 250 MB of content + a 100 MB SQL Server database, so 1 GB of web space and 250 MB of SQL seemed to be more than enough. Today the size occupied has almost doubled as illustrated below:&lt;/p&gt;  &lt;blockquote&gt;   &lt;table cellspacing="0" cellpadding="2"&gt;       &lt;tr&gt;         &lt;td&gt;&lt;strong&gt;Web space&lt;/strong&gt;&lt;/td&gt;          &lt;td&gt;&lt;strong&gt;SQL Server space&lt;/strong&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;&lt;a href="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="363" alt="image" src="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_thumb.png" width="400" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;          &lt;td&gt;&lt;a href="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_5.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="300" alt="image" src="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_thumb_5.png" width="350" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/blockquote&gt;  &lt;p&gt;The thing I paid the least attention to though was the bandwidth provided by the hosting company, at that time I believe 60 GB per month. Who needs 60 GB right? I was a little surprised initially to find out there was - if I remember correctly - about 30 GB being transferred the first month at my new hoster. History only goes back to November 07, where it climbed to approximately 40 GB a month:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="300" alt="image" src="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_thumb_6.png" width="550" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I was still fine and the bandwidth limits were even increased to a stunning 80 GB. However, ever since I started using &lt;a href="http://writer.live.com"&gt;Windows Live Writer&lt;/a&gt; I&amp;#39;ve been adding more and more screenshots to my posts (it so easy to upload dude), most of these at a large size to avoid the annoying &amp;quot;click to enlarge&amp;quot; catch-phrase every two lines (my policy is to fall back to the latter thumbnail approach whenever an image isn&amp;#39;t part of the regular flow of the post but acts purely as an illustration which is &amp;quot;nice to see&amp;quot; but not strictly needed). So, after a few popular blogging series lately (C# 3.0, VB 9.0 and PowerShell 2.0 feature focuses and my recent ramblings on functional pattern matching in C# - to be continue) I was still a bit surprised to see my stats for this month so far:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_7.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="300" alt="image" src="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_thumb_7.png" width="550" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is why I love my readers: they make electrons travel the globe to deliver my writings to their brains. I never thought to become bandwidth constrained, but 63 GB in little over one half of the month is a bit too much given the limit of 80 GB a month. So this called for immediate action and luckily I have some additional space at bartdesmet.info which I bought recently to play around with IIS 7.0 (I said my hoster is on the cutting bleeding edge of technologies!) and to prepare moving my blog over to IIS 7.0 eventually.&lt;/p&gt;  &lt;p&gt;The plan is simple: move over images to the second host, leave app stuff on the first host. One of the first things that brought up nice experiences was the re-encounter with the amazingly fast (not!) FTP protocol when dealing with small files: copying about 100 MB of images from one place to the other took several hours. One thing remaining is to update all pointers to images for which I considered different approaches:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Handle all .jpg and .png files using an HTTP Handler and redirect to the new location - would work in IIS 7.0 but my old host is still on IIS 6.0 so the metabase would require a change which involves the ISP&amp;#39;s goodwill. &lt;/li&gt;    &lt;li&gt;Tweak the SQL Server database to &amp;quot;replace&amp;quot; (although the REPLACE T-SQL function wouldn&amp;#39;t work here - storage for post bodies in CommunityServer seem to be ntext fields) old links with new ones. &lt;/li&gt;    &lt;li&gt;Write a Community Server module. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I went for the last approach, at least temporarily, since it doesn&amp;#39;t involve touching the database and should take effect immediately. It goes roughly like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System;       &lt;br /&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.Text;       &lt;br /&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; System.Xml;       &lt;br /&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; CommunityServer.Blogs.Components;       &lt;br /&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt; CommunityServer.Components; &lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff"&gt;namespace &lt;/font&gt;BartDeSmet.Net       &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;public class &lt;/font&gt;&lt;font color="#008080"&gt;CSRewriteImageLinks &lt;/font&gt;: &lt;font color="#008080"&gt;ICSModule&lt;/font&gt;       &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;font color="#0000ff"&gt;public void &lt;/font&gt;Init(&lt;font color="#008080"&gt;CSApplication &lt;/font&gt;csa, &lt;font color="#008080"&gt;XmlNode &lt;/font&gt;node)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; csa.PreRenderPost += &lt;font color="#0000ff"&gt;new &lt;/font&gt;&lt;font color="#008080"&gt;CSPostEventHandler&lt;/font&gt;(csa_PreRenderPost);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;void &lt;/font&gt;csa_PreRenderPost(&lt;font color="#008080"&gt;IContent &lt;/font&gt;content, &lt;font color="#008080"&gt;CSPostEventArgs &lt;/font&gt;e)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;if&lt;/font&gt; (e.ApplicationType == &lt;font color="#008080"&gt;ApplicationType&lt;/font&gt;.Weblog &amp;amp;&amp;amp; e.Target == &lt;font color="#008080"&gt;PostTarget&lt;/font&gt;.Web)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008080"&gt;WeblogPost &lt;/font&gt;post = content &lt;font color="#0000ff"&gt;as &lt;/font&gt;&lt;font color="#008080"&gt;WeblogPost&lt;/font&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;if &lt;/font&gt;(post != &lt;font color="#0000ff"&gt;null &lt;/font&gt;&amp;amp;&amp;amp; post.PostLevel == 1)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#008080"&gt;StringBuilder &lt;/font&gt;sb = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#008080"&gt;StringBuilder&lt;/font&gt;();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sb.Append(post.FormattedBody);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sb.Replace(&lt;font color="#800000"&gt;&amp;quot;http://bartdesmet.net/images&amp;quot;&lt;/font&gt;, &lt;font color="#800000"&gt;&amp;quot;http://bartdesmet.info/images&amp;quot;&lt;/font&gt;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sb.Replace(&lt;font color="#800000"&gt;&amp;quot;http://community.bartdesmet.net/blogs/bart/WindowsLiveWriter&amp;quot;&lt;/font&gt;, &lt;font color="#800000"&gt;&amp;quot;http://bartdesmet.info/images_wlw&amp;quot;&lt;/font&gt;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; post.FormattedBody = sb.ToString();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Quite brute force - though still a bit gentle using the StringBuilder (and web infrastructure caching I&amp;#39;d assume) - but functional. Fingers crossed... Oh and obviously I&amp;#39;ve changed my Live Writer settings to upload files to my second host (click to enlarge &amp;lt;g&amp;gt;):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_3.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="228" alt="image" src="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;a href="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="221" alt="image" src="http://bartdesmet.info/images_wlw/BlogTrafficLoadBalancing_FC4F/image_thumb_4.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; Alright, with this post I violated my own policy not to nag about personal trivial but one sin should be acceptable, no? At the very least I did publish some lines of C# code...&lt;/p&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=13503" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Upcoming Event: DevDays 2008 - Amsterdam</title><link>http://bartdesmet.net/blogs/bart/archive/2008/04/18/upcoming-event-devdays-2008-amsterdam.aspx</link><pubDate>Sat, 19 Apr 2008 04:08:06 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:13499</guid><dc:creator>bart</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=13499</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2008/04/18/upcoming-event-devdays-2008-amsterdam.aspx#comments</comments><description>&lt;p&gt;After my previous little European tour visiting Ghent and Lisboa talking about LINQ, Parallel FX Extensions, Windows PowerShell 2.0 and WPF, I&amp;#39;m looking forward to meet the European audience again at &lt;a href="http://www.devdays.nl"&gt;DevDays 2008 Amsterdam&lt;/a&gt;. I&amp;#39;m especially thrilled about this one since it&amp;#39;s my first speaking opportunity at this conference though I&amp;#39;ve been living in a radius of a few 100 kilometers for the first 24,5 years of my life. The speaker list looks impressive, just a few big names: Rafal Lukaweicki, Daniel Moth and Mike Taulty, Ingo Rammer, Dan Fernandez, David Platt, the U2U triplet Peter, Patrick and Jan. This time I&amp;#39;ll be delivering purely on &lt;strong&gt;LINQ&lt;/strong&gt;, especially (agenda subject to change):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;LINQ Inside Out&lt;/strong&gt; - &lt;em&gt;Thursday 10:50-12:00&lt;/em&gt; - Want to know what really happens when you execute LINQ queries? Join us as we enter the inner workings of LINQ and see how the compiler translates LINQ query expressions into standard query operators, while digging into iterators that make LINQ to Objects tick. Learn exactly when query evaluation is deferred and how lambda expressions and closures work together to enable LINQ&amp;#8217;s elegant syntax. After investigating LINQ to Objects, we&amp;#8217;ll switch gears to dive into LINQ to SQL, which results in radically different translations as we dig into the details of IQueryable and expression trees. Finally, we explore language-specific LINQ features, including XML literals in VB 9.0.      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Creating Custom LINQ Providers&lt;/strong&gt; - &lt;em&gt;Friday 13:30-14:40&lt;/em&gt; - LINQ is all about unifying data access in a natural language integrated way. But there&amp;#8217;s more than just LINQ to Objects, LINQ to SQL and LINQ to XML. In this session, we put ourselves on the other side of the curtain and explore the wonderful world of LINQ providers. You&amp;#8217;ll learn how to create a fully functional LINQ query providers allowing users to target your favorite query language using familiar LINQ syntax in C# 3.0 and VB 9.0: LINQ to AD, LINQ to SharePoint, LINQ to Outlook, you name it! This is your chance to get to know the inner workings of LINQ.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Basically the first session acts as the entry-point to LINQ at the conference. We&amp;#39;ll be approaching the technology from top to bottom, starting with the LINQ syntax in C# 3.0 and VB 9.0, moving on to the translation patterns carried out by the compiler, to end up in the inner workings of the beast: iterators in LINQ to Objects and expression trees for implementations like LINQ to SQL. We&amp;#39;ll go fairly deep, so ideally attendees have had some prior exposure to the concepts of LINQ.&lt;/p&gt;  &lt;p&gt;My second session acts as the ultimate dive deep into LINQ Providers. More specifically, you&amp;#39;ll see how expression trees are turned into execution by runtime-translation into an underlying query language. As running samples, we&amp;#39;ll use &lt;a href="http://www.codeplex.com/LINQtoAD"&gt;LINQ to AD&lt;/a&gt; and &lt;a href="http://www.codeplex.com/LINQtoSharePoint"&gt;LINQ to SharePoint&lt;/a&gt;, covering the art of developing query providers. This includes not only coverage of expression tree parsing but also practical guidance on translation patterns, tools integration, etc. Even if you&amp;#39;re not planning to write a custom LINQ provider yourself, this session is the ideal &amp;quot;under the covers&amp;quot; session for LINQ.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1&gt;&lt;font color="#0000ff"&gt;from &lt;/font&gt;session &lt;font color="#0000ff"&gt;in &lt;/font&gt;DevDays.Sessions    &lt;br /&gt;&lt;font color="#0000ff"&gt;where &lt;/font&gt;session.Subject == &lt;font color="#800000"&gt;&amp;quot;LINQ&amp;quot;&lt;/font&gt;    &lt;br /&gt;&lt;font color="#0000ff"&gt;select new &lt;/font&gt;{ session.Title, session.Speaker }&lt;/h1&gt;  &lt;ul&gt;   &lt;li&gt;LINQ Inside Out - Bart De Smet&lt;/li&gt;    &lt;li&gt;Understanding the ADO.NET Entity Framework - Mike Taulty&lt;/li&gt;    &lt;li&gt;A Tour of LINQ to XML - Mike Taulty&lt;/li&gt;    &lt;li&gt;Is LINQ to SQL your data access layer? - Anko Duizer&lt;/li&gt;    &lt;li&gt;Creating Custom LINQ Providers - Bart De Smet&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For more information on the agenda, take a look at &lt;a href="http://www.devdays.nl/Programma.aspx"&gt;the session list over here&lt;/a&gt;. There&amp;#39;s tons of great content on various topics: hardcore debugging, Silverlight, Visual Studio 2008, MOSS and WSS, WPF/WCF/WF, smart client and mobile development, DLR stuff, data mining and cryptography, parallel extensions, VSTS, SQL 2008, etc. Too much to pick from :-).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope to see you in Amsterdam!&lt;/p&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=13499" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category><category domain="http://bartdesmet.net/blogs/bart/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Upcoming speaker commitments</title><link>http://bartdesmet.net/blogs/bart/archive/2008/02/03/upcoming-speaker-commitments.aspx</link><pubDate>Mon, 04 Feb 2008 00:25:59 GMT</pubDate><guid isPermaLink="false">863c5522-913f-4a64-ac0a-bd5f05abad0f:13018</guid><dc:creator>bart</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bartdesmet.net/blogs/bart/rsscomments.aspx?PostID=13018</wfw:commentRss><comments>http://bartdesmet.net/blogs/bart/archive/2008/02/03/upcoming-speaker-commitments.aspx#comments</comments><description>&lt;p&gt;Next month I&amp;#39;ll be traveling back to Europe to speak at a couple of&amp;#160; &lt;a href="http://www.microsoft.com/heroeshappenhere/default.mspx"&gt;&lt;img title="Heroes Happen Here" alt="Heroes Happen Here" src="http://www.microsoft.com/heroeshappenhere/images/logo_heroes.gif" border="0" /&gt;&lt;/a&gt;launch events (or to be more precise, at the TechDays conferences organized right after these). Here&amp;#39;s my schedule:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;March 11-13, 2008 - Ghent, Belgium      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.techdays.be"&gt;www.techdays.be&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;March 14, 2008 - Lisboa, Portugal      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.techdays.pt"&gt;www.techdays.pt&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you&amp;#39;re a &lt;em&gt;hero&lt;/em&gt; that &lt;em&gt;happen&lt;/em&gt;s to attend one of these conferences over t&lt;em&gt;here&lt;/em&gt; I&amp;#39;m looking forward to see you in one (or more) of my sessions. I&amp;#39;ll be presenting on a few topics (the exhaustive list is still to be compiled, I&amp;#39;ll post it over here when it&amp;#39;s available) such as WPF Futures, PowerShell 2.0, Custom LINQ Providers, Parallel Extensions and maybe ASP.NET MVC as well. Stay tuned!&lt;/p&gt;&lt;img src="http://bartdesmet.net/aggbug.aspx?PostID=13018" width="1" height="1"&gt;</description><category domain="http://bartdesmet.net/blogs/bart/archive/tags/Personal/default.aspx">Personal</category></item></channel></rss>