<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.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>J e r o e n ' s   w e b l o g</title><link>http://weblogs.asp.net/jvdbos/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>New year, new blog</title><link>http://weblogs.asp.net/jvdbos/archive/2006/01/02/434338.aspx</link><pubDate>Mon, 02 Jan 2006 13:16:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:434338</guid><dc:creator>jvdbos</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=434338</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2006/01/02/434338.aspx#comments</comments><description>&lt;p&gt;Happy New Year everyone! 2006 is already upon us and to keep myself busy in this new year, I've decided to move my weblog to a personal domain at &lt;a href="http://jvdb.org/"&gt;jvdb.org&lt;/a&gt;. The first post over there is already up, dealing with Software Transactional Memory and titled: &lt;a href="http://jvdb.org/blog/2006/01/02/why-developers-think-spiffy-dual-core-processors-suck/"&gt;Why developers think spiffy dual-core processors suck&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=434338" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/General/default.aspx">General</category></item><item><title>Yahoo customer care frustrations</title><link>http://weblogs.asp.net/jvdbos/archive/2005/12/20/433594.aspx</link><pubDate>Tue, 20 Dec 2005 11:36:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:433594</guid><dc:creator>jvdbos</dc:creator><slash:comments>13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=433594</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/12/20/433594.aspx#comments</comments><description> &lt;p&gt;Why can't Yahoo customer care simply do what their name suggests? A couple of days ago, I sent an e-mail to Yahoo customer care asking about whether it's possible for me, as a resident of The Netherlands, to subscribe to a small business web hosting package. All I really wanted to know was whether it's a U.S.-only service or not, because I had read in some &lt;a href="http://smallbusiness.yahoo.com/webhosting/aff_faq.php#4"&gt;affiliate FAQ&lt;/a&gt; on their site that the web hosting packages are U.S.-only, while &lt;a href="http://smallbusiness.yahoo.com/tos/tos.php"&gt;their general terms of service&lt;/a&gt; don't mention this at all. I was expecting to get a short reply stating that either the FAQ was incorrect or that they have some reason to only offer these plans to people in the U.S. The answer is actually pretty simple but I just wanted to avoid confusion in the future.&lt;/p&gt; &lt;p&gt;So I sent an e-mail and, just to prevent them from asking me about some additional information before answering the question, I specifically used the designated question form on their website. So I enter what they want: my Yahoo ID and my name and enter the question. A day later, when I get the reply, it states (along with some politeness):&lt;/p&gt; &lt;blockquote&gt;In order to review your account, please reply with the following information:&lt;br /&gt;&lt;br /&gt;* Yahoo ID&lt;br /&gt;* URL&lt;br /&gt;* Date of Birth&lt;br /&gt;* Any one of the following: [Zip Code, Alt Email Address, Street Address, or Phone Number]&lt;br /&gt;&lt;br /&gt;Once we have this information, we'll be happy to investigate the matter that you have described.&lt;/blockquote&gt; &lt;p&gt;Why do they need my date of birth in order to figure out if they sell web hosting packages to Europeans? I can understand that they might be afraid of telling an eight-year-old kid to buy their stuff, but isn't that covered by their general terms of service? Also, it can't be to check my Yahoo ID, because I've never provided my date of birth when signing up for it. The other questions are just as weird. They already have my Yahoo ID, in fact, the e-mail was sent to my Yahoo account.&lt;/p&gt; &lt;p&gt;After asking about this in a reply they ended up sending me a list of their current hosting packages, which was in fact outdated compared to their offering on the website. If Yahoo believes in social platforms so much (at least, that's how I interpret buying companies like &lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt; and &lt;a href="http://del.icio.us/"&gt;Del.icio.us&lt;/a&gt;), maybe they should start right at the actual point of contact with (potential) customers and have customer care drop the auto-generated replies.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=433594" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/General/default.aspx">General</category></item><item><title>Anyone up for annual software tax?</title><link>http://weblogs.asp.net/jvdbos/archive/2005/12/16/433323.aspx</link><pubDate>Fri, 16 Dec 2005 15:21:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:433323</guid><dc:creator>jvdbos</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=433323</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/12/16/433323.aspx#comments</comments><description>&lt;p&gt;I've been fairly critical of the Virtual Server 2005 &lt;a href="../archive/2005/08/26/423786.aspx"&gt;R2 plans&lt;/a&gt;, mostly because I felt it to be unreasonable for current customers to have to invest in a new license just to be able to use their $999 Virtual Server 2005 Enterprise license effectively with Microsoft's own then current server platform. There have been some positive developments however, such as a &lt;a href="http://www.microsoft.com/windowsserversystem/virtualserver/howtobuy/default.mspx"&gt;substantial lowering of the price of Virtual Server&lt;/a&gt; (both editions have dropped 80%, the Standard went from $499 to $99 for instance) and the availability of &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a963433c-193b-41ac-af6e-ab7ab2db8541&amp;amp;displaylang=en"&gt;updated additions&lt;/a&gt; to use with Server 2003 SP1 on the original edition of VS2005. Furthermore, participants in the Virtual Server 2005 R2 program have received a free Enterprise license of the final R2 release.&lt;/p&gt; &lt;p&gt;So all in all, it's not as bad as it looked, but I still wonder if this new pricing strategy is the way to go. I mean, perhaps the original plan was to sell VS for $499 (Standard) and then just update it for a couple of years with free service packs. Somewhere along the way, SP1 turned into R2 and the strategy was modified from releasing lots of free service packs, to releasing lots of relatively cheap new versions of the product. In the end it doesn't make such a big difference, because if you buy three $200 products or a single $600 product in the course of a couple of years, you end up spending about the same.&lt;/p&gt; &lt;p&gt;The good here is that you don't have to commit to the entire lifespan of the product in the new scheme, since if you don't like R2, you can skip the &lt;a href="http://www.microsoft-watch.com/article2/0,2180,1852436,00.asp"&gt;2006 release&lt;/a&gt; and cut your losses. I just wonder if, from Microsoft's perspective, it's a smart idea for them to periodically remind their customers that their stuff needs to be paid for every once in a while instead of just getting the whole lot up front. Especially in this era of free software. Let's enjoy it while it lasts.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=433323" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/General/default.aspx">General</category><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Virtual+Server/default.aspx">Virtual Server</category></item><item><title>Minimalist or Humane interfaces? Both ofcourse</title><link>http://weblogs.asp.net/jvdbos/archive/2005/12/10/432847.aspx</link><pubDate>Sat, 10 Dec 2005 22:51:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:432847</guid><dc:creator>jvdbos</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=432847</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/12/10/432847.aspx#comments</comments><description>&lt;p&gt;For some reason everybody has way more time on their hands to read blogs than I do, because whenever I feel like responding to a post from someone it turns out that it was written at least half a week ago and already has dozens of responses. Again here, concerning a recent post by &lt;a href="http://martinfowler.com/bliki/"&gt;Martin Fowler&lt;/a&gt; discussing &lt;a href="http://martinfowler.com/bliki/HumaneInterface.html"&gt;humane interfaces&lt;/a&gt;. There are lots of responses, most of them listed at the bottom of his original posting. Trying to read through them I noticed that what I would consider the most important argument in the discussion is somehow present but not really discussed, so I decided to bring it up myself.&lt;/p&gt; &lt;p&gt;This whole discussion centers on whether an object should expose only the bare minimum functionality (called the minimalist approach) or additional functionality that may or may not be difficult to implement, but is typically required by programmers and can therefor be a great help by being included (called the humane approach). The example is &lt;a href="http://www.rubycentral.com/ref/ref_c_array.html"&gt;Ruby's Array class&lt;/a&gt; which has 78 methods defined, including methods such as &lt;code&gt;first&lt;/code&gt; and &lt;code&gt;flatten&lt;/code&gt; that can reasonably quickly be implemented by the client code, but can still be useful to have anyway.&lt;/p&gt; &lt;p&gt;A major argument for the humane approach is that if a class only defines the absolute basic operations, that users will end up duplicating a lot of code for common tasks. The major argument for the minimalist approach is that classes that define more than they have to will require more maintenance than they should.&lt;/p&gt; &lt;p&gt;Personally, I like it when objects can help me out with more than just returning a handle that I can use to query someone else for the next handle, all part of over ten different steps in order to complete a single functional step (anyone remember setting up something in DirectX? Is it still that bad?) That doesn't mean maintenance is not an issue. I don't think it's reasonable to require that implementing an optimized version of a class means you have to rewrite 78 methods.&lt;/p&gt; &lt;p&gt;Instead I think it's good to seperate the two: always create a class that exposes a minimalist API and then encapsulate it to add the humane interface on top of that. This way you can easily seperate the derived (humane) behaviour from the implementation-specific (minimalist) behaviour. Implementing a new minimalist version of a class will give all clients access to the humane interface with the new back-end. Is this really such a fundamental issue? I feel like everybody's always been doing it like that.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=432847" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Software+Development/default.aspx">Software Development</category></item><item><title>Saving time with refactoring</title><link>http://weblogs.asp.net/jvdbos/archive/2005/12/09/432754.aspx</link><pubDate>Fri, 09 Dec 2005 10:45:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:432754</guid><dc:creator>jvdbos</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=432754</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/12/09/432754.aspx#comments</comments><description>&lt;p&gt;When I wrote about &lt;a href="../archive/2005/12/07/432550.aspx"&gt;refactoring being free&lt;/a&gt; I mentioned only a typical situation where you have a (large) body of code and you want to modify it. This happens a lot, but refactoring is especially useful when you're enhancing small pieces of code that you just wrote, as in earlier the same day or somewhere last week. The point here being that the time you gain is not from the fact that you keep modifying your own code (which will always cost some time) but from the much greater amount of time you save from having a bigger chance that you're investing precious development time in the right features.&lt;/p&gt; &lt;p&gt;I remember that a couple of years ago, I was asked to write a small parsing application to visualize a messaging protocol for debugging purposes. The protocol defined several messages, but because the specs were not entirely clear, I decided to just jump in and parse what I could. The end-users did remark that the protocol consisted of incoming and outgoing messages and that it was probably a good idea to display those in seperate columns next to eachother.&lt;/p&gt; &lt;p&gt;I just started parsing the messages and defined a simple &lt;code&gt;Message&lt;/code&gt;-class. Every time I found a chunk of data in the stream that consisted of a complete message, I created an instance of this class that contained mostly some basic get-operations. Before attempting to parse anything else, I decided to create a basic GUI-application to go along with it, so I could deliver a first &lt;a href="http://www.extremeprogramming.org/rules/spike.html"&gt;spike&lt;/a&gt; to my users to get some additional feedback on where the GUI should be headed in terms of design, since I'm fairly crappy at coming up with good user interfaces on my own.&lt;/p&gt; &lt;p&gt;I released the first version of this tool the same day I started working on it. The users were very happy with it, as they were looking at the data streams with a hex editor before that and figuring out where messages started and ended was their biggest problem - and it was solved already! Furthermore, they told me I should forget about the multiple column display they wanted earlier that day, because they now noticed that the communication was not always consistent in the order that messages were being sent and received. In other words, the single column view provided some interesting facts that a multi-column view may have obfuscated, unless it would have been much more sophisticated, in a way that I would never be able to deliver within a short period of programming anyway.&lt;/p&gt; &lt;p&gt;And that's the most important point about refactoring: sure, modifying your code always takes more time than writing it once and never changing it. But that's only possible if your specs are 100% clear up front and never change. And how often does that happen? It has never happened to me.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=432754" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Software+Development/default.aspx">Software Development</category></item><item><title>Refactoring is free</title><link>http://weblogs.asp.net/jvdbos/archive/2005/12/07/432550.aspx</link><pubDate>Wed, 07 Dec 2005 10:24:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:432550</guid><dc:creator>jvdbos</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=432550</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/12/07/432550.aspx#comments</comments><description>&lt;p&gt;I'm a little late to the party, but I wanted to give my perspective on some of the discussion surrounding the cost of refactoring I've been reading about in the past week, most notably some posts by &lt;a href="../../pgielens"&gt;Paul Gielens&lt;/a&gt;, starting with &lt;a href="../../pgielens/archive/2005/12/04/432253.aspx"&gt;Refactoring is Not Free&lt;/a&gt;, where he writes:&lt;/p&gt; &lt;blockquote&gt;A couple of months ago we where up for the challenge to refactor a large portion of a badly performing application. The application had no supporting unit tests, cruddy code and Swiss cheese specifications (its developers only had a sense of what the application had to do). It is in this example where refactoring became costly. At start we tried to cover as much existing code possible [...]. Although the confident level increased we weren’t able to preserve the behavior of the code while refactoring small pieces at a time. Eventually we had clear signs that the progress we made just wasn’t enough. We then decided to rewrite it from scratch and than refactor it.&lt;/blockquote&gt; &lt;p&gt;What I don't understand in the described situation is what the goal of refactoring here was. Refactoring itself doesn't increase performance, in fact, often refactorings reduce speed in order to make the design more clear. What I do understand from the above was some kind of decision to just "refactor the whole thing" and then see what could be done with performance, which is a strange approach in my opinion.&lt;/p&gt; &lt;p&gt;When a system performs poorly, there's a basic approach to figuring things out: first find out what the bottlenecks are, find solutions to them, test them independently to verify them in the situation at hand and finally, modify the code to incorporate these changes. Now, refactoring comes along in the final step, because in order to modify the existing code, you'll probably need to do some refactoring. Not all of the existing code, just the pieces where you want to modify things to incorporate the higher performing approach. Now even then, writing from scratch can often be quicker, so the conclusion may be the same. But either way, the refactoring is never "costly", it's always the sanest way to change code. So that's why I'm stating: refactoring is free.&lt;/p&gt; &lt;p&gt;Suppose you have a class that works with a type code that modifies its behaviour. Every method may consist of a switch/case-construct that decides which behaviour to expose. Modifying this into a class hierarchy where polymorphism takes care of the type-specific behaviour does take time, but it's always better than just adding another case-label to all the existing switch/case-constructs. It only takes a couple of 2:00 AM debugging sessions to figure that out.&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=432550" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Software+Development/default.aspx">Software Development</category></item><item><title>Switching to e-books, sort of</title><link>http://weblogs.asp.net/jvdbos/archive/2005/12/04/432271.aspx</link><pubDate>Sun, 04 Dec 2005 16:48:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:432271</guid><dc:creator>jvdbos</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=432271</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/12/04/432271.aspx#comments</comments><description>&lt;p&gt;I've never been a fan of e-books. I don't have trouble reading large articles on the web though, or even entire chapters of books (usually example chapters provided by publishers) in Adobe Reader. It's not so much the reading on a monitor that I don't like, but more the idea that you buy a book, you read it and then you don't have a used slot on your bookshelf to show for it. But that's not all, I sometimes like to take a really good book with me when I have some travelling to do and I usually pick technical books for that. It's probably doable to read e-books on a PDA, but I don't use one and don't know if I'd enjoy reading from such a device. It's probably about perspective: if you don't associate books with your computer, then you simply don't want them to mix too much.&lt;/p&gt; &lt;p&gt;Anyway, I did make the switch a couple of weeks ago, but decided that instead of switching to e-books completely, I've switched completely in a single category of books: technical books on subjects that will lose relevance relatively quickly. The first e-book I bought is &lt;a href="http://www.apress.com/book/bookDisplay.html?bID=10042"&gt;Foundations of AJAX&lt;/a&gt; by Ryan Asleson and Nathaniel Schutta, published by &lt;a href="http://www.apress.com/"&gt;APress&lt;/a&gt;. Not that I feel that this book will lose relevance quickly, but I don't suspect I'll dig it up a couple of years from now, simply because either AJAX will be something of the past by then, or if it's not, then everything around it will have evolved so much that the book will be fairly useless anyway. By that time I'll expect to still have a look through &lt;a href="http://www.amazon.com/gp/product/0201633612"&gt;Design Patterns&lt;/a&gt; however, as well as &lt;a href="http://www.amazon.com/gp/product/0201485672"&gt;Refactoring&lt;/a&gt;. So they'll remain on my physical bookshelf.&lt;/p&gt; &lt;p&gt;The e-book experience is actually quite good: APress basically lets you download a full PDF file as well as seperate PDFs of each chapter. When you open it up you have to enter your e-mail as a password (to prevent you from spreading the file) and every other page there's a subtle serial number visible through the text (in case you start spreading lots of printed copies I suppose). The good thing is that you can easily print a couple of chapters and that the text is now fully searchable when you need the book as a reference. Anyone care to share his experiences with other publishers' e-books?&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=432271" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Books/default.aspx">Books</category></item><item><title>Now all I need is a title snippet</title><link>http://weblogs.asp.net/jvdbos/archive/2005/10/31/429036.aspx</link><pubDate>Mon, 31 Oct 2005 16:54:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:429036</guid><dc:creator>jvdbos</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=429036</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/10/31/429036.aspx#comments</comments><description>&lt;p&gt;I have to admit, when I first saw the VS2005-integrated code snippets during the TechEd Europe 2004 (yes 2004) keynote, it sounded like the typical feature that I would never use. Well, to make a long story short, I've been using VC#2005 for a couple of days and it's already one of my favorite features!&lt;/p&gt; &lt;p&gt;Sometimes I would omit handling an exception in some code during development just because it's such a drag to keep writing all that try/catch/finally-stuff. Sure, the handling would make it into the code in the end - if only because some of the unit-tests triggering the exceptions simply wouldn't pass, but still, it's a bit of a risk not including them right away when all the context is still clear to you. So what I do now is this:&lt;/p&gt; &lt;p&gt;&lt;code&gt;try[TAB][TAB]&lt;/code&gt;&lt;/p&gt; &lt;p&gt;And there it is: a try-block with a catch-clause. And the best part is that you get this in-code-wizard-type functionality to go through all the variable stuff in all these snippets. After that the cursor ends up in the logical next place to start typing. Great stuff!&lt;/p&gt; &lt;p&gt;Some more cool snippet-shortcuts (just type them in and follow with double TAB): &lt;code&gt;cw&lt;/code&gt; (Console.WriteLine), &lt;code&gt;mbox&lt;/code&gt; (MessageBox), &lt;code&gt;for/forr&lt;/code&gt; (regular and reverse for-loop) and &lt;code&gt;prop/propg&lt;/code&gt; (property get/set and just with a get, along with the backing variables).&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=429036" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Doing it right means putting it left</title><link>http://weblogs.asp.net/jvdbos/archive/2005/10/29/428847.aspx</link><pubDate>Sat, 29 Oct 2005 10:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:428847</guid><dc:creator>jvdbos</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=428847</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/10/29/428847.aspx#comments</comments><description>&lt;p __designer=""&gt;The first thing that hit me when firing up Visual Studio 2005 for the first time was that the solution explorer was docked on the right side of the screen. Funny thing is, it seems the same thing happened to &lt;a href="../../fbouma/archive/2005/10/28/428791.aspx" __designer=""&gt;Frans&lt;/a&gt;! His motivation of why the solution explorer should be docked on the left side of the screen is correct ofcourse, but while reading the comments one by &lt;a href="../../fbouma/archive/2005/10/28/428791.aspx#428810" __designer=""&gt;Bruce Johnson&lt;/a&gt; made me laugh out loud, so I'll just paste it here:&lt;/p&gt; &lt;blockquote __designer=""&gt;&lt;p __designer=""&gt;If you plan on keeping your Solution Explorer open, your suggestions make sense. On the other hand, I always keep mine collapsed, so I want it on the right side. Otherwise, when it expands, it covers the code that, as you wisely noted, sits mostly on the left.&lt;/p&gt;&lt;p __designer=""&gt;I'm guessing the decision as to the 'default' positioning was one made by committee. "If we collapse it by default, people won't know where it went to. But if we put it on the left, it makes the code jump around. Why don't we just put it on the right". Hence getting the worst of both worlds. ;)&lt;/p&gt;&lt;/blockquote&gt; &lt;p __designer=""&gt;I remember noticing the default right-side docking when I first installed VS.NET 2003 so it's not a new decision. I remember seeing it on the left by default as well though. It appears to have something to do with the language selection you make when you first start it up: if you select VC++, you'll get the old left-side look from VC++6 (and before), but any .NET-language including C# will give you the VB6-type right docking position. Just goes to show that Microsoft is more concerned with keeping all those migrating VB-users happy than a bunch of those (always-whining anyway) C++ types :)&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=428847" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Microsoft joins the web search API world</title><link>http://weblogs.asp.net/jvdbos/archive/2005/09/14/425124.aspx</link><pubDate>Wed, 14 Sep 2005 06:48:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:425124</guid><dc:creator>jvdbos</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=425124</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/09/14/425124.aspx#comments</comments><description>&lt;p&gt;Microsoft has released &lt;a href="http://msdn.microsoft.com/msn/msnsearch/"&gt;an API to use MSN Search&lt;/a&gt; at last. Instead of changing &lt;A href="http://weblogs.asp.net/jvdbos/archive/2005/03/05/385892.aspx"&gt;the license to their XML-formatted results&lt;/a&gt;, they've published a WSDL file for use with SOAP. I don't mind that at all though, I'm just happy I can finally use MSN Search output in my tools. The most important part of the license (for me as a developer anyway) is that every IP is allowed to retrieve 10k results per day for free, which is a much more elegant solution than Google's API key mechanism, where you have to get your application's users to register with Google and paste some key into a configuration screen or file. The 10k results are the same amount Google allows, both are dwarfed by &lt;A href="http://weblogs.asp.net/jvdbos/archive/2005/03/01/382391.aspx"&gt;Yahoo's 250k&lt;/a&gt; though.&lt;/p&gt; &lt;p&gt;What's interesting is that MSN chose to go the SOAP route, after &lt;a href="http://developer.yahoo.net/faq/#why_rest"&gt;Yahoo picked REST&lt;/a&gt; and Google said that in retrospect, &lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=83ec4876-7578-418c-8335-a3b0a147037b"&gt;they'd rather have gone with REST&lt;/a&gt; as well. MSN could have released a REST API by changing the license text in the XML-results, but instead they went through the trouble of creating a WSDL, which although it's not an incredible amount of work, does seem to signal that Microsoft still believes that SOAP is the way to go. I'm not sure I agree though, I tend to think that REST is great for utility APIs where you want easy access from high-level tools like scripting languages and that the extra weight of SOAP is only worth it when composing applications based on multiple services. Personally I see searching the web more as a utility than as a base service.&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=425124" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Services/default.aspx">Services</category></item><item><title>Want a usable Virtual Server? Pay more money!</title><link>http://weblogs.asp.net/jvdbos/archive/2005/08/26/423786.aspx</link><pubDate>Fri, 26 Aug 2005 21:19:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:423786</guid><dc:creator>jvdbos</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=423786</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/08/26/423786.aspx#comments</comments><description>&lt;p&gt;Microsoft renamed Virtual Server 2005 SP1 to R2 somewhere this week, which at first may sound like a technicality, but one that could end up costing you some money. According to the &lt;a href="http://www.microsoft.com/windowsserversystem/virtualserver/evaluation/virtualizationfaq.mspx"&gt;FAQ&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;Customers with active Software Assurance (SA) when Virtual Server 2005 R2 becomes available will be eligible to upgrade to Virtual Server 2005 R2.&lt;/blockquote&gt; &lt;p&gt;This appears to mean that if you apparantly were stupid enough to go out last week and buy a &lt;a href="http://www.microsoft.com/windowsserversystem/virtualserver/howtobuy/default.mspx"&gt;$999,- license&lt;/a&gt; of Virtual Server 2005 Enterprise Edition, that you'll have to shell out additional money near the end of the year just to keep it from slowing your Server 2003 SP1 VMs down to an unacceptable crawl. Sure, you knew SP1 wasn't supported on Virtual Server 2005, but before you decided to buy it, you did the responsible thing and tested the Virtual Server 2005 SP1 beta, which includes VM Additions for Server 2003 SP1. So after considerable testing, you decided to buy it because even though the current product was clearly not up to the task of virtualizing and consolidating a bunch of current Server 2003 machines, it would surely after SP1 is out. But apparantly, SP1 won't be out, but you can buy something better in a couple of months.&lt;/p&gt; &lt;p&gt;One of the main reasons to get Virtual Server 2005 is that it's quite a bit cheaper than VMWare's offerings. At least, it used to be. If we have to start paying for the support for every new Windows Server Service Pack (since apparantly, &lt;a href="http://www.microsoft-watch.com/article2/0,2180,1852436,00.asp"&gt;Virtual Server 2006&lt;/a&gt;, or should I say R3, is already in the works) then that advantage will diminish rapidly.&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=423786" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Virtual+Server/default.aspx">Virtual Server</category></item><item><title>Actual slow network on virtual machines fixed</title><link>http://weblogs.asp.net/jvdbos/archive/2005/08/08/421901.aspx</link><pubDate>Mon, 08 Aug 2005 14:13:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:421901</guid><dc:creator>jvdbos</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=421901</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/08/08/421901.aspx#comments</comments><description>&lt;p&gt;Until today &lt;A href="http://weblogs.asp.net/jvdbos/archive/2005/07/19/419881.aspx"&gt;I still wasn't able&lt;/a&gt; to install the July CTP of VS.NET 2005 on a VM hosted by Virtual Server 2005 until &lt;a href="http://groups-beta.google.com/group/microsoft.public.virtualserver/browse_frm/thread/9d9d2a0cfe8973b8/06f94f3e0867d653#06f94f3e0867d653"&gt;someone in microsoft.public.virtualserver&lt;/a&gt; found the following KB article: &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;888750"&gt;Slow performance when you try to access resources on your Virtual Server 2005 host computer from a guest virtual machine&lt;/a&gt;, which is exactly my (and many others') problem. This sure is a relief, as not being able to move large files to/from a VM would have made it completely useless for development/testing.&lt;/p&gt; &lt;p&gt;A quick summary of the article: the virtual NIC implemented in the VM doesn't support TCP segmentation offloading, so if the underlying physical NIC is configured to use it, a lot of translation is taking place. This slows things down immensely, up to the point where copying large files fails completely (my guess is timeouts). Fortunately, this can be fixed by simply disabling it in the Device Manager (Network adapters -&amp;gt; &lt;i&gt;Your physical adapter&lt;/i&gt; -&amp;gt; Properties -&amp;gt; Advanced) on the host machine. I've done this today and it's working like it should, finally!&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=421901" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Virtual+Server/default.aspx">Virtual Server</category></item><item><title>Copying virtual machines made easy (sort of)</title><link>http://weblogs.asp.net/jvdbos/archive/2005/08/03/421441.aspx</link><pubDate>Wed, 03 Aug 2005 14:15:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:421441</guid><dc:creator>jvdbos</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=421441</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/08/03/421441.aspx#comments</comments><description>&lt;p&gt;As I mentioned in &lt;A href="http://weblogs.asp.net/jvdbos/archive/2005/07/19/419881.aspx"&gt;my previous post&lt;/a&gt; on Virtual Server 2005, it's very easy to create a base virtual machine that contains (for instance) a fully patched version of Windows XP Pro and copy it around to work with multiple instances since all a VM really is is just a .vmc (Virtual Machine Configuration) and .vhd (Virtual Hard Drive) file. Making a copy of a VM is just a matter of creating a new machine in the Virtual Server web interface and copying the .vmc and .vhd files over the ones created. The only changes required are two values in the .vmc xml file: one pointing to the absolute path of the .vhd file to use and another that points to the relative path of the same file (in my experience if you change only one of these it will use the absolute path, don't ask how I discovered that, it wasn't very funny, especially the part where throwaway.vmc's VM wrote to donttouchthisbaseimage.vhd). After that you can start up the just created VM and it'll be a copy of the base image.&lt;/p&gt; &lt;p&gt;One problem remains however: machine name. This didn't seem like much of an issue, but having multiple instances running will mess with file sharing, besides producing annoying error messages. Fortunately, there's a solution to this, one that's probably known to system administrators but not to a developer like me. What you need is deploy.cab in /support/tools on the Windows XP or Windows 2003 installation disk. Install the files from this archive on the base image and first run setupmgr.exe. This tool will help you create a sysprep.inf file. First you choose to do a fully automated install, next select the options you want to automatically configure on a copied image, like generating a machine name. When you're done the tool will have automatically created a sysprep-directory with the sysprep.inf file in it (it will ask you to save the sysprep.inf file but regardless of where you save it, it will also place it in the correct directory).&lt;/p&gt; &lt;p&gt;Next you can run the &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;302577&amp;amp;sd=tech"&gt;sysprep.exe&lt;/a&gt; tool. Here you choose to do a mini-setup and click "Reseal". This will freeze the VM shortly and then shut down. Now you can create a copy of the virtual machine. When you boot into that copy for the first time, you'll see an automated configuration taking place and a reboot, after which the virtual machine is done: fully customized with a unique machine name! This is especially useful if you plan to do automated resets of a virtual machine using a script or a custom application: just copy the .vmc/.vhd files and change the path in the .vmc file. After that you're set to start over again from scratch. This might seem like a far-fetched solution, but being able to select what to automatically set during configuration and what to ask the user is very useful: for instance setting the localization during setup can be used to test localized versions of your application without having to maintain a bunch of localized base images.&lt;/p&gt; &lt;p&gt;A note on licensing though: I've called Microsoft to ask about licensing in such a scenario and they've told me that my MSDN Universal subscription is enough for doing it like this when I'm the only user of the virtual machines. I'm not a lawyer so I can't say anything about what you're allowed to do in other situations/with other licensing schemes.&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=421441" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Virtual+Server/default.aspx">Virtual Server</category></item><item><title>Virtual Server 2005: first experiences</title><link>http://weblogs.asp.net/jvdbos/archive/2005/07/19/419881.aspx</link><pubDate>Tue, 19 Jul 2005 09:37:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:419881</guid><dc:creator>jvdbos</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=419881</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/07/19/419881.aspx#comments</comments><description>&lt;p&gt;After attending &lt;a href="http://www.mseventseurope.com/teched/05/pre/content/default.aspx"&gt;TechEd Europe 2005&lt;/a&gt; last week, I decided to give my &lt;a href="http://www.mseventseurope.com/teched/05/pre/content/MVS2005.aspx"&gt;free copy&lt;/a&gt; of &lt;a href="http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx"&gt;Virtual Server 2005&lt;/a&gt; a go on the development server at work. My initial impressions were very good, in fact, the whole system in general works much better than I had expected. I'm not familiar with any of the &lt;a href="http://www.vmware.com/solutions/consolidation/"&gt;VMWare server offerings&lt;/a&gt; however, so I don't have any reference. What I was expecting though, was a server application to split my machine's resources into a bunch of virtual machines, install operating systems on them and then remotely access those, through remote desktop, filesharing, etc. The general interaction with the virtual machines however works much better: there's a web-based management interface installed on the server, where you can configure all machines (like put an ISO in their virtual diskdrive) and actually connect to them through the virtual server application. This connecting can be done either using a seperate client application or an ActiveX control in the browser (this requires IE though ofcourse). The ActiveX control works just as well as the client and is accessed by clicking on a virtual machine on the management website.&lt;/p&gt;&lt;p&gt;So far so good, I installed Windows XP Pro on my first virtual machine, ran a couple of WindowsUpdate cycles over it, installed the virtual machine additions package (which is similar to the one that comes with Virtual PC 2004) that mainly allows better integration with the mouse (you don't have to switch the mouse from real to virtual machine, it moves around seamlessly). After some very basic configuring I decided to copy this virtual machine to create another that would be used to install betas and ctps on for testing. Copying a virtual machine is simple as well: the .vmc file is an XML file that contains information about the virtual machine, the most important is the path to the accompanying .vhd file, a virtual harddisk. Just make a copy of both these files, change the path to the .vhd file and add the .vmc file to the virtual server using the management interface. The only error I got when booting the copied machine was that the computer's name already exists on the network, which is easily fixed.&lt;/p&gt;&lt;p&gt;After that things went downhill, because this morning I've been trying to install the July CTP of Visual Studio 2005 on it. I downloaded the ISO from MSDN subscriber downloads, put it in the virtual diskdrive and went to My Computer on the virtual machine. The first thing I noticed was that the DVD drive's icon was incorrect, double-clicking it was even stranger:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;center&gt;&lt;img src="http://infuse.org/drivesarenotwin32apps.gif" alt="Drives are not Win32 apps" height="425" width="600" /&gt;&lt;/center&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;To which my first instinctive response was to think: "Ofcourse, I know that!", followed by some kind of surprise that it somehow misinterpreted the double-click. Actually just typing in D: in the address bar does display the contents of the disk, so it was not a big deal. The setup.exe and vs_setup.msi then also came up with weird and unexpected errors (the setup.exe does not appear to be a valid win32 executable either and the vs_setup.msi cannot be opened?) After that I figured that the ISO was probably corrupt, but the installer started up fine on my real machine.&lt;/p&gt;&lt;p&gt;So then I tried to copy the data to the virtual machine and then run the installer from a directory on its local disk, since there's probably something wrong (or at least incompatible) with the ISO file. Copying it over the network (from a directory on the machine running Virtual Server) caused the client connection to the virtual machine to close, the copying itself also failed with a cryptic error about a network name no longer being valid). Perhaps there is a normal cause for this since the virtual machine is not part of the domain of the server, although in real-world situations I do this stuff a lot and it normally works. It's a Windows 2003 server though, so perhaps this is some new secure quick timeout scheme.&lt;/p&gt;&lt;p&gt;The last thing I tried was copying the ISO contents from the server to the virtual machine. Unfortunately I'm not sure whether this was successful, because when it started to copy the files (very slowly) the virtual machine client got disconnected again and the remote desktop connection to the server itself as well! I can't restore either connection, so this looks like it ends in a trip to the server room.&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=419881" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Virtual+Server/default.aspx">Virtual Server</category></item><item><title>The SOA was good, the DSL Tools were better</title><link>http://weblogs.asp.net/jvdbos/archive/2005/07/10/418842.aspx</link><pubDate>Sun, 10 Jul 2005 20:57:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:418842</guid><dc:creator>jvdbos</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/jvdbos/rsscomments.aspx?PostID=418842</wfw:commentRss><comments>http://weblogs.asp.net/jvdbos/archive/2005/07/10/418842.aspx#comments</comments><description>&lt;p&gt;It's been an excellent week at TechEd Europe! I know it's been over for two days but I just now found some time to write about it. I've visited lots of sessions, mostly the ones about SOA since that was my focus this year, to get a good idea of what the concepts are before I dive in and start to think about how to apply it (my experience is that if you do it the other way around you end up mapping what everybody says onto your original (and probably wrong) ideas about the stuff and incorrectly believe that you already knew what it was all about).&lt;/p&gt;&lt;p&gt;The coolest thing however were the sessions on the upcoming &lt;a href="http://lab.msdn.microsoft.com/teamsystem/workshop/DSLTools/default.aspx"&gt;Domain-Specific Language (DSL) Tools&lt;/a&gt; that Microsoft is working on. These are a suite of tools that let you define a domain model, define and relate shapes to the concepts in it and provide templates to do code generation based upon it. This looks like it could be a very interesting tool as I believe that code generation is something that should be leveraged much more in the developer community. The opportunity to make your own along with a visual modeling tool is just too tempting to pass up, so I'll be playing with the CTPs and probably post on my experiences in that area.&lt;/p&gt;&lt;p&gt;So TechEd was great, also because I got to hang out with some interesting people, including my good friend &lt;A href="http://weblogs.asp.net/fbouma"&gt;Frans Bouma&lt;/a&gt; who's always up for a technical discussion. It's amazing how much you can learn about stuff just by having a discussion about it with people that have good insights on the issues.&lt;/p&gt; &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=418842" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/jvdbos/archive/tags/General/default.aspx">General</category><category domain="http://weblogs.asp.net/jvdbos/archive/tags/Services/default.aspx">Services</category><category domain="http://weblogs.asp.net/jvdbos/archive/tags/TechEd/default.aspx">TechEd</category></item></channel></rss>