<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Fabulous Adventures In Coding : Books</title><link>http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx</link><description>Tags: Books</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>A Book By Any Other Name Would Smell As Sweet</title><link>http://blogs.msdn.com/ericlippert/archive/2009/04/02/a-book-by-any-other-name-would-smell-as-sweet.aspx</link><pubDate>Thu, 02 Apr 2009 16:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9511286</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/9511286.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=9511286</wfw:commentRss><description>&lt;DIV class=mine&gt;
&lt;P&gt;As you might have gathered from my previous posts on the subject, I occasionally edit technical books as a hobby. It’s nice having a hobby that pays money instead of costing money. And I always learn something from every book.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.apress.com/book/view/9781893115675" mce_href="http://www.apress.com/book/view/9781893115675"&gt;&lt;IMG title=MESWTWSH style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; MARGIN: 0px 10px 0px 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=244 alt=MESWTWSH src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/ABookByAnyOtherNameWouldSmellAsSweet_8AC3/MESWTWSH_5.jpg" width=194 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/ABookByAnyOtherNameWouldSmellAsSweet_8AC3/MESWTWSH_5.jpg"&gt;&lt;/A&gt;Many years ago, on one of my first editing gigs, the editor asked me my opinion on what the book’s title should be. At the time I had no particularly coherent thoughts about how to title a book, but I’m almost always willing to offer an opinion on things I know little about. So I thought about it for a few minutes and responded that since the book was about &lt;EM&gt;how to manage enterprise IT systems by writing scripts that use the Windows Script Host&lt;/EM&gt;, that the title should be “&lt;U&gt;&lt;STRONG&gt;Managing Enterprise Systems With The Windows Script Host&lt;/STRONG&gt;&lt;/U&gt;”. After some back-and-forth discussion between me, the editor and the author, we actually settled on that title, amazingly enough.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;This is not a very good title for what is really a quite good book.&lt;/STRONG&gt; I realize this now, with the hindsight of a lot more experience in thinking about how to name things.&lt;/P&gt;
&lt;P&gt;Were I asked to criticize this title now, with that hindsight, I’d ask myself some pointed questions:&lt;/P&gt;
&lt;P&gt;Q: Is “&lt;STRONG&gt;managing&lt;/STRONG&gt;” what the target customer of the book describes themselves as doing? &lt;/P&gt;
&lt;P&gt;A: Maybe sometimes, but we can do better. The target audience typically describes themselves as “systems &lt;EM&gt;administrators&lt;/EM&gt;”, not “&lt;EM&gt;managers&lt;/EM&gt;”. Cut “managing” and replace it with “&lt;STRONG&gt;Administering&lt;/STRONG&gt;”.&lt;/P&gt;
&lt;P&gt;Q: What function does the word “&lt;STRONG&gt;Enterprise&lt;/STRONG&gt;” serve?&lt;/P&gt;
&lt;P&gt;A: It discourages home-computer users from buying the book. Which is good, because they are not our target audience. But “Managing” or “Administering” already does that. It also discourages small- or medium-business sys admins from buying the book and they &lt;EM&gt;are&lt;/EM&gt; in the target audience. Cut “Enterprise”.&lt;/P&gt;
&lt;P&gt;Q: Do we really need to call out that the things being administered/managed are “&lt;STRONG&gt;Systems&lt;/STRONG&gt;”?&lt;/P&gt;
&lt;P&gt;A: No, obviously that goes without saying. Cut “Systems”.&lt;/P&gt;
&lt;P&gt;Q: Then what noun is the object of the verb “Administering”?&lt;/P&gt;
&lt;P&gt;A: We need to tell the potential reader that this is a book about administering &lt;EM&gt;&lt;STRONG&gt;Windows&lt;/STRONG&gt;&lt;/EM&gt;. The noun “Windows” &lt;EM&gt;must&lt;/EM&gt; be in the title somewhere. Admins of other operating systems are explicitly not in our target audience and we must discourage them from buying this book. We look disingenuous if we don’t do that.&lt;/P&gt;
&lt;P&gt;Q: What does “&lt;STRONG&gt;With Windows Script Host&lt;/STRONG&gt;” communicate to the potential buyer?&lt;/P&gt;
&lt;P&gt;A: It logically ties the book to a &lt;EM&gt;particular tool&lt;/EM&gt; used to solve the customer’s problems. It puts the emphasis on the solution mechanism rather than on the customer’s problem.&lt;/P&gt;
&lt;P&gt;Q: If the customer needs a circular hole in a wall, do they care much about who manufactured the drill and the drill bit?&lt;/P&gt;
&lt;P&gt;A: No. Though there are better and worse drills, good enough is good enough. As long as the drill works reasonably well, they mostly care about the result. &lt;/P&gt;
&lt;P&gt;The implementation details of the solution are not particularly important to the customer, even if they’re the person doing the implementation. What’s important to the customer is the &lt;EM&gt;benefit&lt;/EM&gt; obtained by taking the advice in the book.&lt;/P&gt;
&lt;P&gt;Q: What is the compelling overall benefit to the customer of using the advice in the book?&lt;/P&gt;
&lt;P&gt;A: They can write scripts to &lt;EM&gt;automate tasks&lt;/EM&gt;, putting in some up-front time to write the script and accruing the benefit of having a previously time-consuming and irksome administration task performed &lt;EM&gt;quickly and automatically&lt;/EM&gt; by the script host.&lt;/P&gt;
&lt;P&gt;Whew. That was a lot of pointed questions.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.apress.com/book/view/1590593979" mce_href="http://www.apress.com/book/view/1590593979"&gt;&lt;IMG title=AWA style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; MARGIN: 0px 10px 0px 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=244 alt=AWA src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/ABookByAnyOtherNameWouldSmellAsSweet_8AC3/AWA_3.jpg" width=195 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/ABookByAnyOtherNameWouldSmellAsSweet_8AC3/AWA_3.jpg"&gt;&lt;/A&gt; I wasn’t there for this conversation, but I imagine that the editors and author went through a similar mental process when they prepared the second edition for publication. The second edition has a far better name: &lt;STRONG&gt;&lt;U&gt;Automating Windows Administration&lt;/U&gt;&lt;/STRONG&gt;. It contains keywords “Windows” and “Administration” which attract the target audience – professional administrators of Windows-based systems – and repels people not in the target audience. And it leads with the compelling benefit to the customer: automation. “Automation” makes work easier. Leading with “Managing” puts the emphasis on the hard part of the job, not on making it easier. And the new name&amp;nbsp;doesn’t tie the book or the reader to committing to a particular toolset.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Good naming is a hugely important aspect of design&lt;/STRONG&gt;; the name of a thing is almost always how the thing first enters the consciousness of a potential consumer. Next time, we’ll explore some more aspects of what makes a name “good” or “bad” for a particular purpose.&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9511286" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Mistakes/default.aspx">Mistakes</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Dialogue/default.aspx">Dialogue</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/naming/default.aspx">naming</category></item><item><title>VSTO Book News</title><link>http://blogs.msdn.com/ericlippert/archive/2009/03/09/vsto-book-news.aspx</link><pubDate>Mon, 09 Mar 2009 18:10:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9467851</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/9467851.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=9467851</wfw:commentRss><description>&lt;div class="mine"&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/VSTOBookNews_72F7/vsto2007_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="244" alt="vsto2007" src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/VSTOBookNews_72F7/vsto2007_thumb.jpg" width="186" align="left" border="0"&gt;&lt;/a&gt;I am pleased to announce that &lt;a href="http://blogs.msdn.com/eric_carter/archive/2009/03/02/new-vsto-3-0-and-office-2007-book-hot-off-the-presses.aspx"&gt;my co-author Eric Carter has made significant updates to our VSTO book&lt;/a&gt;. (Though I notice with chagrin that one of the changes is that &lt;a href="http://blogs.msdn.com/ericlippert/archive/2006/05/01/visual-studio-tools-for-office-using-visual-basic-2005-with-excel-work-outlook-and-infopath.aspx"&gt;the title is much shorter than it ought to be&lt;/a&gt;.) It is not yet available in bookstores but will be soon.&lt;/p&gt; &lt;p&gt;The new parts of the book (which I did no work on at all, this one is Carter's baby!) cover the 3.0 version of VSTO in great detail; if you're looking for the definitive work on the subject, this is it.&lt;/p&gt; &lt;p&gt;See &lt;a href="http://blogs.msdn.com/eric_carter/"&gt;Eric Carter's blog&lt;/a&gt; for more details to come.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9467851" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>References are not addresses</title><link>http://blogs.msdn.com/ericlippert/archive/2009/02/17/references-are-not-addresses.aspx</link><pubDate>Tue, 17 Feb 2009 21:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9428097</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>75</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/9428097.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=9428097</wfw:commentRss><description>&lt;DIV class=mine&gt;
&lt;P&gt;[NOTE: Based on some insightful comments I have updated this article to describe more clearly the relationships between references, pointers and addresses. Thanks to those who commented.]&lt;/P&gt;
&lt;P&gt;I review a fair number of C# books; in all of them of course the author attempts to explain the difference between reference types and value types. Unfortunately, most of them do so by saying something like "&lt;EM&gt;a variable of reference type &lt;STRONG&gt;stores the&lt;/STRONG&gt; &lt;STRONG&gt;address&lt;/STRONG&gt; of the object&lt;/EM&gt;". I always object to this. The last time this happened the author asked me for a more detailed explanation of why I always object, which I shall share with you now:&lt;/P&gt;
&lt;P&gt;We have the abstract concept of "a reference". If I were to write about "Beethoven's Ninth Symphony", those two-dozen characters are not a 90-minute long symphonic masterwork with a large choral section. They're a reference to that thing, not the thing itself. And this reference itself contains references -- the word "Beethoven" is not a long-dead famously deaf Romantic Period composer, but it is a reference to one.&lt;/P&gt;
&lt;P&gt;Similarly in programming languages we have the concept of "a reference" distinct from "the referent". 
&lt;P&gt;The inventor of the C programming language, oddly enough, chose to not have the concept of references at all. Rather, Ritchie chose to have "pointers" be first-class entities in the language. A pointer in C is like a reference in that it refers to some data by tracking&amp;nbsp;its location, but there are more smarts in a pointer; you can perform arithmetic on a pointer as if it were a number, you can take the difference between two pointers that are both in the interior of the same array and get a sensible result,&amp;nbsp;and so on. 
&lt;P&gt;Pointers are strictly "more powerful" than references; &lt;STRONG&gt;anything you can do with references you can do with pointers&lt;/STRONG&gt;, but not vice versa. I imagine that's why there are no references in C -- it's a deliberately austere and powerful language. 
&lt;P&gt;The down side of pointers-instead-of-references is that pointers are hard for many novices to understand, and make it very very very easy to shoot yourself in the foot. 
&lt;P&gt;Pointers are typically &lt;EM&gt;implemented&lt;/EM&gt; as &lt;STRONG&gt;addresses&lt;/STRONG&gt;. An address is a number which is an offset into the "array of bytes" that is the entire virtual address space of the process (or, sometimes, an offset into some well-known portion of that address space -- I'm thinking of "near" vs. "far" pointers in win16 programming. But for the purposes of this article let's assume that an address is a byte offset into the whole address space.) Since addresses are just numbers you can easily perform pointer arithmetic with them. 
&lt;P&gt;Now consider C#, a language which has &lt;STRONG&gt;both references and pointers&lt;/STRONG&gt;. There are some things you can only do with pointers, and we want to have a language that allows you to do those things (under carefully controlled conditions that call out that you are doing something that possibly breaks type safety, hence "unsafe".)&amp;nbsp; But we also do not want to force anyone to have to understand pointers in order to do programming with references. 
&lt;P&gt;We also want to avoid some of the optimization nightmares that languages with pointers have. Languages with heavy use of pointers have a hard time doing garbage collection, optimizations, and so on, because it is infeasible to guarantee that no one has an interior pointer to an object, and therefore the object must remain alive and immobile. 
&lt;P&gt;For all these reasons we do not describe references as addresses in the specification. The spec just says that a variable of reference type "stores a reference" to an object, and leaves it completely vague as to how that might be implemented. Similarly, a pointer variable stores "the address" of an object, which again, is left pretty vague. Nowhere do we say that references are the same as addresses. 
&lt;P&gt;So, in C# a reference is some vague thing that lets you reference an object. You cannot do anything with a reference except dereference it, and compare it with another reference for equality. And in C# a pointer is identified as an address. 
&lt;P&gt;By contrast with a reference, you can do much more with a&amp;nbsp;pointer that contains an address.&amp;nbsp;Addresses can be manipulated mathematically; you can subtract one from another, you can add integers to them, and so on. Their legal operations indicate that they are "fancy numbers" that index into the "array" that is the virtual address space of the process. 
&lt;P&gt;Now, behind the scenes, the CLR actually &lt;EM&gt;does&lt;/EM&gt; implement managed object references as addresses to objects owned by the garbage collector, but &lt;EM&gt;that is an implementation detail.&lt;/EM&gt; There's no reason why it has to do that other than efficiency and flexibility. &lt;STRONG&gt;C# references could be implemented by opaque handles that are meaningful only to the garbage collector&lt;/STRONG&gt;, which, frankly, is how I prefer to think of them. That the "handle" happens to actually be an address at runtime is an implementation detail which I should neither know about nor rely upon. (Which is the whole point of encapsulation; the client doesn't have to know.) 
&lt;P&gt;I therefore have three reasons why authors should not explain that "references are addresses". 
&lt;P&gt;1) &lt;STRONG&gt;It's close to a lie.&lt;/STRONG&gt; References cannot be &lt;EM&gt;treated&lt;/EM&gt; as addresses by the user, and in fact, they do not &lt;EM&gt;necessarily&lt;/EM&gt; contain an address in the implementation. (Though our implementation happens to do so.) 
&lt;P&gt;2) &lt;STRONG&gt;It's an explanation that explains nothing to novice programmers.&lt;/STRONG&gt; Novice programmers probably do not know that an "address" is an offset into the array of bytes that is all process memory. To understand what an "address" is with any kind of depth, the novice programmer &lt;EM&gt;already has to understand pointer types and addresses&lt;/EM&gt; -- basically, they have to understand the memory model of many implementations of C. This is one of those "it's clear only if it's already known" situations that are so common in books for beginners. 
&lt;P&gt;3) If these novices eventually learn about pointer types in C#, their confused understanding of references will probably make it &lt;STRONG&gt;harder, not easier&lt;/STRONG&gt;, to understand how pointers work in C#. The novice could sensibly reason "&lt;EM&gt;If a reference is an address and a pointer is an address, then I should be able to cast any reference to a pointer in unsafe code, right?&lt;/EM&gt;"&amp;nbsp; But you cannot. 
&lt;P&gt;If you think of a reference is actually being an opaque GC handle then it becomes clear that to find the address associated with the handle you have to somehow "fix" the object. You have to tell the GC "until further notice, the object with this handle must not be moved in memory, because someone might have an interior pointer to it". (There are various ways to do that which are beyond the scope of this screed.) 
&lt;P&gt;Basically what I'm getting at here is that &lt;STRONG&gt;an understanding of the&amp;nbsp;meaning of "addresses" in any language requires a moderately deep understanding of the memory model of that language&lt;/STRONG&gt;. If an author does not provide an explanation of the memory model of either C or C#, then explaining references in terms of addresses becomes an exercise in question begging. It raises more questions than it answers. 
&lt;P&gt;This is one of those situations where the author has the hard call of deciding whether an &lt;STRONG&gt;inaccurate oversimplification&lt;/STRONG&gt; serves the larger pedagogic goal better than an &lt;STRONG&gt;accurate digression&lt;/STRONG&gt; or a &lt;STRONG&gt;vague hand-wave&lt;/STRONG&gt;. 
&lt;P&gt;In the counterfactual world where I am writing a beginner C# book, I would personally opt for the vague hand-wave.&amp;nbsp; If I said anything at all I would say something like "a reference is actually implemented as a small chunk of data which contains information used by the CLR to determine precisely which object is being referred to by the reference". That's both vague and accurate without implying more than is wise.&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9428097" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Best+Of+FAIC/default.aspx">Best Of FAIC</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Memory+Management/default.aspx">Memory Management</category></item><item><title>Book News</title><link>http://blogs.msdn.com/ericlippert/archive/2009/01/12/book-news.aspx</link><pubDate>Mon, 12 Jan 2009 19:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9308098</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/9308098.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=9308098</wfw:commentRss><description>&lt;DIV class=mine&gt;
&lt;P&gt;Happy new year all -- I hope 2008 was a good year for you and that 2009 will be better. I myself was crazy busy at the end of 2008, working on a number of at-work projects and personal projects which I'm not going to blog about at this time. I hope to get more time in the schedule for blogging in the next couple of months.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/BookNews_7920/CSharpThirdEdition_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/BookNews_7920/CSharpThirdEdition_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=244 alt=CSharpThirdEdition src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/BookNews_7920/CSharpThirdEdition_thumb.jpg" width=194 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/BookNews_7920/CSharpThirdEdition_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;I want to start off the year with the belated announcement that we have shipped a printed and bound version of the C# 3.0 specification. Why would you want the dead-trees version when you can just &lt;A href="http://blogs.msdn.com/charlie/archive/2007/08/20/c-3-0-specification-now-available.aspx" mce_href="http://blogs.msdn.com/charlie/archive/2007/08/20/c-3-0-specification-now-available.aspx"&gt;get the Word document off the web&lt;/A&gt;? Because &lt;STRONG&gt;the print edition is annotated&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Yes, we were fortunate enough to get Brad Abrams, Joseph Albahari, Krzysztof Cwalina, Jesse Liberty, Fritz Onion, Vladimir Reshetnikov, Chris Sells, Bill Wagner, plus me, to write annotations for those areas of the specification that we each found interesting. &lt;/P&gt;
&lt;P&gt;There are lots of good comments that elucidate tricky bits, give historical context, provide advice and guidance, rail against restrictions, and so on. My only complaints are that the annotations are so brief and that I wish I had had the time to more fully annotate every bit of the spec. But then again, that's a big part of what this blog is for, so I shouldn't complain &lt;EM&gt;too&lt;/EM&gt; much.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9308098" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>The Future of C#, Part Three: On video, plus the dead-trees edition</title><link>http://blogs.msdn.com/ericlippert/archive/2008/10/29/the-future-of-c-part-three-on-video-plus-the-dead-trees-edition.aspx</link><pubDate>Wed, 29 Oct 2008 19:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9022633</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/9022633.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=9022633</wfw:commentRss><description>&lt;DIV class=mine&gt;
&lt;P&gt;Amazingly enough,&lt;A href="http://blogs.msdn.com/ericlippert/archive/tags/Video/default.aspx" mce_href="http://blogs.msdn.com/ericlippert/archive/tags/Video/default.aspx"&gt; it has happened &lt;EM&gt;again&lt;/EM&gt;&lt;/A&gt;. Why does this keep happening to me?&lt;/P&gt;
&lt;P&gt;Anders, Mads and Eric on C# 4.0: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.informit.com/podcasts/episode.aspx?e=ff719d1a-67c8-47c9-86f4-0d31f2723e6f" mce_href="http://www.informit.com/podcasts/episode.aspx?e=ff719d1a-67c8-47c9-86f4-0d31f2723e6f"&gt;C# 4.0 with Anders Hejlsberg, Mads Torgersen, and Eric Lippert - Part 1 of 2&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.informit.com/podcasts/episode.aspx?e=4b0da588-4e09-4f4a-bb8a-2c1d7d2ff1f6" mce_href="http://www.informit.com/podcasts/episode.aspx?e=4b0da588-4e09-4f4a-bb8a-2c1d7d2ff1f6"&gt;C# 4.0 with Anders Hejlsberg, Mads Torgersen, and Eric Lippert - Part 2 of 2&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Anders, Mads and Scott on the new dead-trees edition of the C# 3.0 specification:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.informit.com/podcasts/episode.aspx?e=fa08723e-aadf-4366-a66c-7c03f7db2e52" mce_href="http://www.informit.com/podcasts/episode.aspx?e=fa08723e-aadf-4366-a66c-7c03f7db2e52"&gt;The C# Programming Language, 3rd Edition&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9022633" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Video/default.aspx">Video</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/C_2300_+4.0/default.aspx">C# 4.0</category></item><item><title>Yet More Book News</title><link>http://blogs.msdn.com/ericlippert/archive/2008/04/28/yet-more-book-news.aspx</link><pubDate>Mon, 28 Apr 2008 17:42:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8435481</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/8435481.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=8435481</wfw:commentRss><description>&lt;div class="mine"&gt; &lt;p&gt;It's a bookish day apparently. I am pleased to pass on news of the availability of the book &lt;a href="http://blogs.msdn.com/eric_carter/"&gt;Eric Carter&lt;/a&gt; and I wrote about VSTO, now in Chinese. Here is Jie Wang holding a copy of the original C# book and the VSTO开发指南 Visual Basic book:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/YetMoreBookNews_6CDD/JieWangVSTO_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="JieWangVSTO" src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/YetMoreBookNews_6CDD/JieWangVSTO_thumb.jpg" width="232" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Many thanks to Jie Wang, Mei Liang, and everyone at Addison Wesley and 中国电子工业出版社 (China Publishing House of Electronics Industry) who helped make this possible.&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8435481" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>C# In Depth</title><link>http://blogs.msdn.com/ericlippert/archive/2008/04/28/c-in-depth.aspx</link><pubDate>Mon, 28 Apr 2008 17:19:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8423437</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/8423437.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=8423437</wfw:commentRss><description>&lt;div class="mine"&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Good morning, we interrupt our irregular and unscheduled ramblings with this breaking news bulletin: I am pleased to pass on news of the &lt;a href="http://msmvps.com/blogs/jon.skeet/archive/2008/04/24/c-in-depth-it-s-really-real.aspx"&gt;availability of Jon Skeet's new book "C# in Depth"&lt;/a&gt;.  &lt;p&gt;&lt;a href="http://www.manning.com/skeet/"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="193" alt="skeet_cover" src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/CInDepth_13D12/skeet_cover_3.jpg" width="154" border="0"&gt;&lt;/a&gt;  &lt;p&gt;I had the privilege of being the technical editor of this book. But I've gotta tell you, when I unzipped the files sent from the publisher, the flattery began immediately. The "front matter" placeholder page read:  &lt;blockquote&gt; &lt;p&gt;FOREWORD: To be written by someone really prominent, hopefully – Eric Lippert, perhaps?&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Hah! Don't think I went easy on the book because you buttered me up, Jon.  &lt;p&gt;In all seriousness, I was very pleased and honoured to be asked to write the foreword to Jon's excellent book. This was by far the least work and most fun I've had doing technical editing, and the foreword practically wrote itself. Here's what I whipped up:  &lt;hr&gt; There are two kinds of pianists.  &lt;p&gt;There are some pianists who play not because they enjoy it, but because their parents force them to take lessons. Then there are those who play the piano because it pleases them to create music. They don’t need to be forced; on the contrary, they sometimes don’t know when to stop.  &lt;p&gt;Of the latter kind, there are some who play the piano as a hobby. Then there are those who play for a living. That requires a whole new level of dedication, skill and talent. They may have some degree of freedom about what genre of music they play and the stylistic choices they make in playing it, but fundamentally those choices are driven by the needs of the employer or the tastes of the audience.  &lt;p&gt;Of the latter kind, there are some who do it primarily for the money.&amp;nbsp; Then there are those professionals who would want to play the piano in public even if they weren’t being paid. They enjoy using their skills and talents to make music for others. That they can have fun and get paid for it is so much the better.  &lt;p&gt;Of the latter kind, there are some who are self-taught, who “play by ear”, who might have great talent and ability but cannot really communicate that intuitive understanding to others except through the music itself. Then there are those who have formal training in both theory and practice. They can explain what techniques the composer used to achieve the intended emotional effect, and use that knowledge to shape their interpretation of the piece.  &lt;p&gt;Of the latter kind, there are some who have never looked inside their pianos. Then there are those who are fascinated by the clever escapements that lift the damper felts a fraction of a second before the hammers strike the strings. They own key levelers and capstan wrenches. They take delight and pride in being able to understand the mechanisms of an instrument that has five to ten thousand moving parts.  &lt;p&gt;Of the latter kind, there are some who are content to master their craft and exercise their talents for the pleasure and profit it brings. Then there are those who are not just artists, theorists and technicians; somehow they find the time to pass that knowledge on to others as mentors.  &lt;p&gt;I have no idea if Jon Skeet is any kind of pianist. But from my email conversations with him as one of the C# team’s Most Valuable Professionals over the years, from reading his blog and from reading every word of this book at least three times, it has become clear to me that Jon is that latter kind of software developer: enthusiastic, knowledgeable, talented, curious and analytical; a teacher of others.  &lt;p&gt;C# is a highly pragmatic and rapidly evolving language. Through the addition of query comprehensions, richer type inference, a compact syntax for anonymous functions, and so on, I hope that we have enabled a whole new style of programming while still staying true to the statically typed, component-oriented approach that has made C# a success.  &lt;p&gt;Many of these new stylistic elements have the paradoxical quality of feeling very old (lambda expressions go back to the very foundations of computer science in the first half of the twentieth century) and yet at the same time feeling new and unfamiliar to developers used to a more modern object-oriented approach.  &lt;p&gt;Jon gets all that. This book is ideal for professional developers who have a need to understand the “what” and “how” of the latest revision to C#. But it is also for those developers whose understanding is enriched by exploring the “why” of the language's design principles.  &lt;p&gt;Being able to take advantage of all that new power will require some new ways of thinking about data, functions, and the relationship between them. It’s not unlike trying to play jazz after years of classical training – or, perhaps, vice versa. Either way, I am looking forward to finding out what sorts of functional compositions the next generation of C# programmers come up with. Happy composing, and thanks for choosing the key of C# to do it in.  &lt;p&gt;Eric Lippert &lt;br&gt;Seattle, Washington &lt;br&gt;February 2008&lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8423437" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Best+Of+FAIC/default.aspx">Best Of FAIC</category></item><item><title>Recent Book News, Part Two</title><link>http://blogs.msdn.com/ericlippert/archive/2008/01/16/recent-book-news-part-two.aspx</link><pubDate>Wed, 16 Jan 2008 21:32:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7133365</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/7133365.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=7133365</wfw:commentRss><description>&lt;div class="mine"&gt; &lt;p&gt;Two additional quick notes about books:&lt;/p&gt; &lt;p&gt;I am also pleased to announce the availability of the &lt;a href="http://www.oreilly.com/catalog/9780596516109/"&gt;C# 3.0 Cookbook&lt;/a&gt;, for which I was again lucky enough to be one of the technical reviewers. Many thanks to the authors for giving the shout-out to this blog in their front matter.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.oreilly.com/catalog/9780596516109/"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="Cookbook" src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/RecentBookNewsPartTwo_943D/Cookbook_3.gif" width="184" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;"Real" cookbooks tend to provide specific solutions to specific culinary problems; they'll tell you how to make banana bread, for instance. What I particularly like about my favourite cookbook, &lt;u&gt;The Joy of Cooking&lt;/u&gt;, is that it does not stop there; rather, each section of recipes has an introduction that treats the subject in general. Rather than merely a dozen muffin recipes, there is an exposition on the general nature of muffins that gives some context and guidelines should you want to branch out beyond the canned recipes.&lt;/p&gt; &lt;p&gt;Similarly, "cookbook" style programming books tend to de-emphasize having a solid theoretical understanding of the language and frameworks, and instead present canned solutions to specific problems. Since those solutions almost certainly do not solve your exact problem, the developer must then hammer on the canned solution until it conforms to the problem at hand. That way lies &lt;a href="http://blogs.msdn.com/ericlippert/archive/2004/03/01/syntax-semantics-micronesian-cults-and-novice-programmers.aspx"&gt;cargo cult programming&lt;/a&gt;! Fortunately, the C# 3.0 Cookbook does a good job of not just providing a lot of good solutions to common problems, but also provides some background on the general classes of problems that it treats. This is not at all a C# 3.0 language tutorial, but it is very handy to have around when you're like "Hmm, how &lt;em&gt;does&lt;/em&gt; one get the audit info out of a file?"&lt;/p&gt; &lt;p&gt;And finally, I am tickled that &lt;a href="http://blogs.msdn.com/ericlippert/archive/2003/10/13/53204.aspx"&gt;it has happened again&lt;/a&gt;. I have just heard that my last book will be translated into Chinese, of all things. Look for &lt;u&gt;VSTO开发指南&lt;/u&gt; coming to a Chinese bookstore some time in 2008, from 中国电子工业出版社 (China Publishing House of Electronics Industry). &lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7133365" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>Recent Book News, Part One</title><link>http://blogs.msdn.com/ericlippert/archive/2008/01/09/recent-book-news-part-one.aspx</link><pubDate>Wed, 09 Jan 2008 20:04:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7042867</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/7042867.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=7042867</wfw:commentRss><description>&lt;div class="mine"&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Good day and Happy New Year everyone, I hope you had a restful and joyous festive holiday season. I sure did.&lt;/p&gt; &lt;p&gt;Before I get back into my series on immutable data structures I have a few news items regarding books.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/RecentBookNewsPartOne_7F8F/Bishop_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="C# 3.0 Design Patterns by Judith Bishop" src="http://blogs.msdn.com/blogfiles/ericlippert/WindowsLiveWriter/RecentBookNewsPartOne_7F8F/Bishop_thumb.jpg" width="187" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;First off, I am pleased to announce the availability of &lt;a href="http://patterns.cs.up.ac.za/"&gt;C# 3.0 Design Patterns by Judith Bishop&lt;/a&gt;. An amusing story about this book:&lt;/p&gt; &lt;p&gt;I was lucky enough to be one of the technical reviewers relatively early on in the genesis of the book. (I do technical editing as a hobby; it's nice to have a hobby that brings in pocket money instead of spending it!) As often happens when the technical reviewers are done reading the book, I was asked if I would contribute a endorsing quote for the back of the book. Absolutely, I replied, it's a fine book, I would be happy to. I whipped up "&lt;em&gt;&lt;u&gt;C# 3.0 Design Patterns&lt;/u&gt; brings the frequently abstruse world of design patterns into sharp focus with pragmatic C# 3.0 implementations&lt;/em&gt;" in about 30 seconds and sent it off to the publisher.&lt;/p&gt; &lt;p&gt;First thing the next morning -- which, apropos of nothing, was my birthday -- the senior editor drops me a line to say that quote looks great, oh, by the way, how about you write us a foreword where that's the last sentence, we go to press, uh, today, but we could hold the presses until tomorrow if we need to.&lt;/p&gt; &lt;p&gt;Yikes!&lt;/p&gt; &lt;p&gt;Twenty minutes later, this is what I came up with. If it seems a little rushed, that's because it was. The foreword is the least important page of the book, including the colophon, so I'm not particularly worried.&lt;/p&gt; &lt;p&gt;Congratulations to Judith Bishop on her latest accomplishment in publishing, and many thanks to everyone at O'Reilly who made the editing process very pleasant indeed. &lt;hr&gt; &lt;/p&gt; &lt;p&gt;When you’re faced with a problem to solve (and frankly, who isn’t these days?) the basic strategy usually taken by we computer people is called “divide and conquer”. It goes like this:  &lt;ul&gt; &lt;li&gt;Conceptualize the specific problem as a set of smaller sub-problems.  &lt;li&gt;Solve each smaller problem.  &lt;li&gt;Combine the results into a solution of the specific problem. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Reducing complex problems down to the level of twiddling the states of a few billion bits is what we do all day. But “divide and conquer” is not the &lt;i&gt;only&lt;/i&gt; possible strategy. We can also take a more generalist approach:  &lt;ul&gt; &lt;li&gt;Conceptualize the specific problem as a special case of a more general problem.  &lt;li&gt;Somehow solve the general problem.  &lt;li&gt;Adapt the solution of the general problem to the specific problem. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Design patterns are among the major tools in the toolboxes of those who espouse the generalist approach. If you look at samples from a broad spectrum of software solutions, you will find that though the specifics may vary widely, there is often an underlying structural similarity. (Searching a file system for a file with a particular attribute is in some sense structurally similar to searching an annotated parse tree for a symbol with a particular type.) &lt;i&gt;Design patterns codify general solutions to common problems. &lt;/i&gt; &lt;p&gt;The ultimate example of the generalist approach is of course the design and implementation of programming languages themselves. As problem solving tools go, it is hard to get more general than a programming language like C#. When designing new programming languages (or new versions of old programming languages) we think about common problems that are faced every day by real developers and figure out how to create a language which solves them in a general, aesthetically pleasing and powerful way that is broadly applicable.  &lt;p&gt;We want to embed the most useful and powerful abstractions so deeply into the language infrastructure that you barely even consciously register them as being there anymore. Patterns like “local variable” or “procedure call” or “while loop” are so much a part of the air we all breathe that we don’t even think of them as patterns anymore.  &lt;p&gt;Furthermore, we want to make a language in which patterns which are useful but perhaps not quite so fundamental are nevertheless relatively straightforward to implement clearly and elegantly. A class in C# may be marked as “static”, or “abstract”, or “sealed”, but not as “singleton”. That was a deliberate choice of the language designers. However, implementing a singleton class in C# is still relatively easy.  &lt;p&gt;The gray zone in between “clearly foundational” and “occasionally useful” is where the interesting design challenges lie. Our observations of design patterns used by real-world developers in C# (and other languages) strongly drive the design process for new versions.  &lt;p&gt;Consider for example how you would implement an iterator pattern on a linked list in C# 1.0. You would end up defining an enumerator class to represent a position in the list containing a lot of boring boilerplate code (which impedes readability), and the solution would not be very reusable. The notion of “enumerate a set of things” is sufficiently applicable to a wide variety of problems that it met the bar for inclusion as a first class language concept. In C# 2.0 with its “yield return” statement the compiler can generate all the boring code for you, and the generic type system makes iterating over a set of things typesafe no matter what the “things” are.  &lt;p&gt;All of this is a long way to say just why it is that I am so very excited about Language Integrated Query (LINQ) in C# 3.0. We believed that iterating over collections of things was a great start, but that we could do so much more. &lt;i&gt;Sorting&lt;/i&gt;, &lt;i&gt;filtering&lt;/i&gt;, &lt;i&gt;grouping&lt;/i&gt;, &lt;i&gt;joining&lt;/i&gt;, &lt;i&gt;projecting&lt;/i&gt; and &lt;i&gt;transforming&lt;/i&gt; data are also fundamental operations which are useful in pretty much every domain. Whether you are writing a ray tracer, a compiler, an XML reader or an online banking security system, odds are good that you are going to need to manipulate collections of &lt;i&gt;something&lt;/i&gt; in a rich way.  &lt;p&gt;By moving these concepts out of domain-specific object models and into a general-purpose programming language hopefully we solve those more general problems. We additionally hope though that by adding C# 3.0’s query expressions, lambda expressions, extension methods, initializer expressions, expression trees, and so on to the already rich set of C# 2.0 and 1.0 features, we make it easier to elegantly implement all sorts of other useful design patterns.  &lt;p&gt;And that is also why I am excited about this book; &lt;u&gt;C# 3.0 Design Patterns&lt;/u&gt; brings the frequently abstruse world of design patterns into sharp focus with pragmatic C# 3.0 implementations. I look forward to seeing where developers can go with these tools and this language, and what useful patterns we can build into the infrastructures of future languages.  &lt;p&gt;Eric Lippert &lt;br&gt;Seattle, Washington &lt;br&gt;November 30, 2007 &lt;/p&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7042867" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>Visual Studio Tools For Office: Using Visual Basic 2005 with Excel, Work, Outlook and InfoPath</title><link>http://blogs.msdn.com/ericlippert/archive/2006/05/01/visual-studio-tools-for-office-using-visual-basic-2005-with-excel-work-outlook-and-infopath.aspx</link><pubDate>Mon, 01 May 2006 19:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:587651</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/587651.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=587651</wfw:commentRss><description>&lt;DIV class=mine&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/eric_carter"&gt;Eric Carter&lt;/A&gt; and I are excited to announce that the Visual Basic edition of &lt;A href="http://www.awprofessional.com/bookstore/product.asp?isbn=0321411757&amp;amp;rl=1"&gt;our book about Visual Studio Tools for Office&lt;/A&gt; is now available. I'd like to give a big thank-you to everyone who put their time, energy and enthusiasm behind this project, particularly my co-author (who, as always, did most of the heavy lifting.) &lt;/P&gt;
&lt;P&gt;Visual Basic and Office programmability have gone together for a long time now and it was very important to us that we build a product that worked well for Office VBA programmers who want to move into the rich .NET world. It was therefore equally important that our book cover the particular needs of Visual Basic programmers. Sorting out whether we would have one book cover both C# and Visual Basic, or two books, and which one to do first was an agonizing process, but ultimately I think we made the right choices, and I'm thrilled with the result. &lt;/P&gt;
&lt;P&gt;My only regret is that we couldn't make the title longer. I wanted it to be &lt;I&gt;"Teach Yourself How To Build Professional Real-World Enterprise Solutions With Microsoft Visual Studio .NET 2005 Tools For Microsoft Office System 2003 Using Microsoft Visual Basic 2006 With Microsoft Excel, Microsoft Word, Microsoft Outlook and Microsoft InfoPath In Twenty-One Days In A Nutshell"&lt;/I&gt;. Apparently that would have involved making the cover larger or infringing on a trademark or something, and it just wasn't feasible. &lt;/P&gt;
&lt;P&gt;See Eric's &lt;A href="http://blogs.msdn.com/eric_carter/archive/2006/04/26/584684.aspx"&gt;recent blog post&lt;/A&gt; for more details about the book and where to download the code samples. &lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=587651" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>Book Signing at the PDC</title><link>http://blogs.msdn.com/ericlippert/archive/2005/09/07/book-signing-at-the-pdc.aspx</link><pubDate>Wed, 07 Sep 2005 18:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:461962</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/461962.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=461962</wfw:commentRss><description>&lt;FONT face="lucida sans unicode" color=purple size=2&gt;
&lt;P&gt;It's a week until PDC! Very exciting. Unfortunately I'm not going this year but my coauthor and erstwhile lead &lt;a href="http://blogs.msdn.com/eric_carter"&gt;Eric Carter&lt;/A&gt; will be there, along with &lt;a href="http://blogs.msdn.com/mshneer/archive/2005/09/06/461766.aspx"&gt;Misha Shneerson &lt;/A&gt;and &lt;a href="http://blogs.msdn.com/andreww/"&gt;Andrew Whitechapel&lt;/A&gt;. He'll be talking about VSTO 2.0 (the about-to-be-released product) and you can also see a sneak preview of early VSTO 3.0 work running against Office 12. All &lt;a href="http://blogs.msdn.com/eric_carter/archive/2005/09/06/461739.aspx"&gt;the VSTO session details&lt;/A&gt; are on Eric's blog. &lt;/P&gt;
&lt;P&gt;Eric will also be &lt;a href="http://blogs.msdn.com/eric_carter/archive/2005/09/06/461743.aspx"&gt;signing&lt;/A&gt; copies of &lt;a href="http://blogs.msdn.com/ericlippert/archive/2005/06/06/425847.aspx"&gt;our book&lt;/A&gt;. We haven't even seen copies yet! The ink will probably still be wet at the PDC. &lt;/P&gt;
&lt;P&gt;And of course, Anders will be talking about the new C# 3.0 features coming up, which is good, because then I'll be able to blog about them while we're working on them. &lt;/P&gt;
&lt;P&gt;Excitement, adventure, really wild stuff. I'll see if I can get the PDC gig next time. This blogging stuff is nice, but it's even better to be able to meet real customers face-to-face. &lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=461962" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/VSTO/default.aspx">VSTO</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>I'm So Prolix</title><link>http://blogs.msdn.com/ericlippert/archive/2005/06/06/i-m-so-prolix.aspx</link><pubDate>Tue, 07 Jun 2005 02:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:425847</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/425847.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=425847</wfw:commentRss><description>&lt;FONT face="lucida sans unicode"&gt;&lt;FONT color=#800080 size=2&gt;
&lt;P&gt;I mentioned earlier today&amp;nbsp;that my latest book project has gone to copyediting. To forestall a few questions:&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#333399 size=2&gt;
&lt;P&gt;Are you the sole author?&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#800080 size=2&gt;
&lt;P&gt;Good heavens no. Most of the heavy lifting was done by my colleague &lt;/FONT&gt;&lt;a href="http://blogs.msdn.com/eric_carter"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;Eric Carter&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt;. I’m just along to make sure that his love affair with the comma doesn’t get totally out of control. And I wrote a chapter or two here and there.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#333399 size=2&gt;
&lt;P&gt;What’s the deal with writing a technical book? &lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#800080 size=2&gt;
&lt;P&gt;I was going to write a long article about that, but fortunately &lt;/FONT&gt;&lt;a href="http://blogs.msdn.com/ericgu/articles/396328.aspx"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;Eric Gunnerson did me a huge favour by writing it for me&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt;. I agree 100% with everything Eric says in his article.&lt;/P&gt;
&lt;P&gt;If you are in it for the money and not the fame, I recommend becoming an expert in some technology and becoming a technical reviewer/editor. Though it’s less money, its way more dollars per hour unless you’re planning on writing a best seller. O’Reilly, APress and McGraw-Hill have given me good tech editing gigs over the years. It’s nice to have a hobby that pays for all your other hobbies.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#333399 size=2&gt;
&lt;P&gt;What’s it about?&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#800080 size=2&gt;
&lt;P&gt;It’s a Tom Clancy-style page turner with lots of beautiful, deadly women, men who carry powerful handguns, and a plot to take over the world by improving knowledge worker productivity through adding managed customizations and add-ins behind Word, Excel, Outlook and Infopath. &lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#333399 size=2&gt;
&lt;P&gt;What’s the title?&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#800080 size=2&gt;
&lt;P&gt;Well, I wanted to call it "&lt;I&gt;Programming Customized Microsoft Word, Microsoft Excel, Microsoft Outlook and Microsoft InfoPath Customizations and Add-Ins With Microsoft Visual Studio .NET 2005 Tools For the Microsoft Office 2003 System In Microsoft Visual C# .NET&lt;/I&gt;" because haven’t you heard, &lt;/FONT&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/1590593898/qid=1118094733/sr=8-1/ref=pd_csp_1/002-9157463-6550420?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;long book titles are totally in this year&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt;. Sadly, my coauthor and our editors cut that down to "&lt;I&gt;Visual Studio Tools For Office Using C# with Word, Excel, Outlook and InfoPath&lt;/I&gt;". Not a single ".NET" or "Microsoft" in there!&lt;/P&gt;
&lt;P&gt;Check out this swanky cover design:&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;IMG src="http://ericca.members.winisp.net/vsto.jpg"&gt;&lt;/IMG&gt;&lt;/P&gt;&lt;FONT color=#800080 size=2&gt;&lt;/FONT&gt;&lt;FONT color=#333399 size=2&gt;
&lt;P&gt;Where can I get a copy?&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#800080 size=2&gt;
&lt;P&gt;If you happen to be at TechEd, Addison-Wesley is giving out free samples, or &lt;/FONT&gt;&lt;A href="http://www.awprofessional.com/content/images/0321334884/samplechapter/VSTO.pdf"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;you can download the sample in PDF form&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt;. (Note that, as it says in the PDF, this is a straight-from-the-devs drop of the text. The table of contents is in the wrong order, &lt;/FONT&gt;&lt;A href="http://itre.cis.upenn.edu/~myl/languagelog/archives/002189.html"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;we probably use "which" where we should use "that"&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt;, and so on.)&lt;/P&gt;
&lt;P&gt;The book should be available in stores and at the Los Angeles Pro Dev Con in early September.&lt;/P&gt;
&lt;P&gt;I’m just glad that most of the authors’ end of the work is done. That was a whole lot of weekends. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=425847" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>Books, Books, Books</title><link>http://blogs.msdn.com/ericlippert/archive/2005/05/26/books-books-books.aspx</link><pubDate>Fri, 27 May 2005 03:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:422331</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/422331.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=422331</wfw:commentRss><description>&lt;FONT face="lucida sans unicode"&gt;&lt;FONT color=#800080 size=2&gt;
&lt;P&gt;It looks like the intricacies of higher-dimensional geometry will have to wait another week; I am incredibly heads-down putting the finishing touches on VSTO and the book that &lt;/FONT&gt;&lt;a href="http://blogs.msdn.com/eric_carter/"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;Eric Carter&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt; and I are writing on VSTO. We're due to have it ready for copy-editing and indexing by the end of the month, so I know what I'm going to be doing this weekend, and its not barbecuing or sailing. &lt;/P&gt;
&lt;P&gt;Ah well, plenty of time for that later.&lt;/P&gt;
&lt;P&gt;Speaking of books, &lt;/FONT&gt;&lt;A href="http://www.joelonsoftware.com/"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;Joel&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt; was kind enough to do me the honour of choosing &lt;/FONT&gt;&lt;a href="http://blogs.msdn.com/ericlippert/archive/2003/10/28/53298.aspx"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;How Many Microsoft Employees Does It Take To Change A Light Bulb?&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt; as one of his selections for his new blogs-printed-out-on-dead-trees book &lt;/FONT&gt;&lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/1590595009/qid=1117148546/sr=8-3/ref=pd_csp_3/102-5349498-3080915?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;The Best Software Writing&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt;. TBSW will also feature articles by &lt;/FONT&gt;&lt;a href="http://blogs.msdn.com/oldnewthing/"&gt;&lt;U&gt;&lt;FONT color=#0000ff size=2&gt;Raymond&lt;/U&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#800080 size=2&gt; and many other smart, funny, controversial and thought-provoking technical bloggers and will be available to purchase on June 20th. &lt;/P&gt;
&lt;P&gt;It was hard to resist the temptation to read the galleys of everyone else's articles, but somehow I managed -- I'm totally looking forward to seeing what all Joel has chosen.&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=422331" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>How many Microsoft employees does it take to change a lightbulb?</title><link>http://blogs.msdn.com/ericlippert/archive/2003/10/28/how-many-microsoft-employees-does-it-take-to-change-a-lightbulb.aspx</link><pubDate>Tue, 28 Oct 2003 23:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:53298</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>50</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/53298.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=53298</wfw:commentRss><description>&lt;DIV class=mine&gt;
&lt;P&gt;UPDATE: This article was featured in &lt;A href="http://www.amazon.com/gp/product/1590595009/002-4836772-4674411?v=glance&amp;amp;n=283155" mce_href="http://www.amazon.com/gp/product/1590595009/002-4836772-4674411?v=glance&amp;amp;n=283155"&gt;The&amp;nbsp;Best Software Writing I&lt;/A&gt;.&amp;nbsp;Thanks Joel!&lt;/P&gt;
&lt;P&gt;Joe Bork has written a &lt;A href="http://headblender.com/joe/blog/archives/microsoft/001280.html" mce_href="http://headblender.com/joe/blog/archives/microsoft/001280.html"&gt;great article &lt;/A&gt;explaining some of the decisions that go into whether a bug is fixed or not. This means that I can cross that one off my list of potential future entries. Thanks Joe!&lt;/P&gt;
&lt;P&gt;But while I'm at it, I'd like to expand a little on what Joe said.His comments generalize to more than just bug fixes. &lt;B&gt;A bug fix is one kind of change to the behaviour of the product, and all changes have similar costs and go through a similar process.&lt;/B&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Back when I was actually adding features to the script engines on a regular basis, people would send me mail asking me to implement some new feature.Usually the feature was a "one-off" -- a feature that solved their particular problem. Like, "&lt;I&gt;I need to call ChangeLightBulbWindowHandleEx, but there is no ActiveX control that does so and you can't call Win32 APIs directly from script, can you add a ChangeLightBulbWindowHandleEx method to the VBScript built-in functions? It would only be like five lines of code!"&lt;/I&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;I'd always tell these people the same thing -- &lt;B&gt;if it is only five lines of code then go write your own ActiveX object! &lt;/B&gt;Because yes, you are absolutely right -- it would take me approximately five minutes to add that feature to the VBScript runtime library. But how many Microsoft employees does it actually take to change a lightbulb?&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;One dev to spend five minutes implementing &lt;I&gt;ChangeLightBulbWindowHandleEx. &lt;/I&gt;
&lt;LI&gt;One program manager to write the specification. 
&lt;LI&gt;One localization expert to review the specification for localizability issues. 
&lt;LI&gt;One usability expert to review the specification for accessibility and usability issues. 
&lt;LI&gt;At least one dev, tester and PM to brainstorm security vulnerabilities. 
&lt;LI&gt;One PM to add the security model to the specification. 
&lt;LI&gt;One tester to write the test plan. 
&lt;LI&gt;One test lead to update the test schedule. 
&lt;LI&gt;One tester to write the test cases and add them to the nightly automation. 
&lt;LI&gt;Three or four testers to participate in an ad hoc bug bash. 
&lt;LI&gt;One technical writer to write the documentation. 
&lt;LI&gt;One technical reviewer to proofread the documentation. 
&lt;LI&gt;One copy editor to proofread the documentation. 
&lt;LI&gt;One documentation manager to integrate the new documentation into the existing body of text, update tables of contents, indexes, etc. 
&lt;LI&gt;Twenty-five translators to translate the documentation and error messages into all the languages supported by Windows.The managers for the translators live in Ireland (European languages) and Japan (Asian languages), which are both severely time-shifted from Redmond, so dealing with them can be a fairly complex logistical problem. 
&lt;LI&gt;A team of senior managers to coordinate all these people, write the cheques, and justify the costs to their Vice President. &lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;None of these take very long individually, but they add up, and this is for a &lt;STRONG&gt;simple&lt;/STRONG&gt; feature.You'll note that I haven't added all the things that Joe talks about, like what if there is a bug in those five lines of code? &lt;B&gt;That initial five minutes of dev time translates into many person-weeks of work and enormous costs,&lt;/B&gt; all to save one person a few minutes of whipping up a one-off VB6 control that does what they want.Sorry, but that makes no business sense whatsoever. &lt;B&gt;At Microsoft we try very, very hard to not release half-baked software. &lt;/B&gt;Getting software right -- by, among other things, ensuring that a legally blind Catalan-speaking Spaniard can easily use the feature without worrying about introducing a new security vulnerability -- is rather expensive! But we have to get it right because when we ship a new version of the script engines, hundreds of millions of people will exercise that code, and tens of millions will program against it.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Any new feature which does not serve a large percentage of those users is essentially &lt;B&gt;stealing&lt;/B&gt; valuable resources that could be spent implementing features, fixing bugs or looking for security vulnerabilities that DO impact the lives of millions of people. &lt;/P&gt;
&lt;P mce_keep="true"&gt;UPDATE: &lt;A href="http://blogs.technet.com/kclemson/archive/2004/05/10/129544.aspx"&gt;KC Lemson&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/oldnewthing/archive/2004/05/13/131116.aspx"&gt;Raymond Chen&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/chris_pratley/archive/2004/01/31/65606.aspx"&gt;Chris Pratley&lt;/A&gt; have opinions on this as well.&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=53298" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Rants/default.aspx">Rants</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item><item><title>Dead Trees vs. Bits</title><link>http://blogs.msdn.com/ericlippert/archive/2003/10/16/dead-trees-vs-bits.aspx</link><pubDate>Thu, 16 Oct 2003 20:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:53221</guid><dc:creator>Eric Lippert</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/ericlippert/comments/53221.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ericlippert/commentrss.aspx?PostID=53221</wfw:commentRss><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;?xml:namespace prefix = o ns = 
"urn:schemas-microsoft-com:office:office" /&gt;Speaking
        of books, people keep telling me and Peter and Raymond that we should write books
        based on our blogs.&lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'; mso-bidi-font-family: 'Times New Roman'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'; mso-bidi-font-family: 'Times New Roman'"&gt;Well,
        I probably am going to write another book this winter, but it will have pretty much
        nothing to do with the stuff in this blog.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;The
        natures of a blog and a book are very different.&amp;#160; Let me list some differences:&lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;Creative
        control&lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;&lt;/b&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;I
        can blog what I want, when I want, at what length I want, and can say whatever I want.&amp;#160;
        In particular, I like to ramble on about the scripting technologies -- which, though
        they are widely used, are clearly a 20th century technology.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;.NET
        is the future.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;A book has to be on a
        specific topic, finished by a specific time, at a specific length. &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;A
        book has to be about a current technology topic and have a clear beginning-middle-end
        structure. Books both allow editing and require editing.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Blogs
        resist editing.&lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;Business
        model&lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;&lt;/b&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;Books
        work on the ink-on-dead-trees business model.&amp;#160; Weblogs work on the "bits are
        free" business model. If I went to a publisher and said "I want to write a short but
        rambling book about random, arcane, trivial details of the history and internals of
        a 1996 technology that is presently being made increasingly irrelevant and outmoded
        by .NET" then the publisher would say "thanks, but no thanks".&amp;#160; &amp;#160;People
        buy computer books &lt;b style="mso-bidi-font-weight: normal"&gt;because they have a problem
        that needs solving&lt;/b&gt;, not because they enjoy learning my opinions about proper Hungarian
        usage.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;
        &lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;Books
        MUST make money to exist.&amp;#160; My aim for this blog isn't to make money, it is to
        dump my vast collection of arcane into some googlable location. 
        &lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;Scope
        of readership&lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;&lt;/b&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;&lt;?xml:namespace prefix = st1 ns = 
"urn:schemas-microsoft-com:office:smarttags" /&gt;My
        blog is available to everyone in the world with a web browser, and given the subject
        matter, that's everyone I want to reach.&amp;#160; Books are available to only the very
        small number of people who actually buy the book.&amp;#160; If you like my book and you
        want your friend in 
        &lt;st1:place w:st="on"&gt;Europe&lt;/st1:place&gt;
        to read it, you can't just send them a link.&amp;#160; Again, books cost money and that
        limits the potential readership. 
        &lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;Permanence&lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;&lt;/b&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;My
        book is no longer available because of circumstances beyond my control.&amp;#160; Now,
        Microsoft isn't going to go out of business, but if they did, I could just move the
        blog file to another machine in about five minutes and be back up and running.&amp;#160;
        This blog will be archived and therefore part of the permanent searchable record of
        knowledge on the internet.&amp;#160;The copies of my book in the Library of Congress (and
        whatever the British equivalent is) aren't going to help a whole lot of devs.&lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;And
        finally, apropos of nothing in particular, this is hilarious:&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;&lt;a href="http://mama.indstate.edu/users/bones/WhyIHateWebLogs.html"&gt;http://mama.indstate.edu/users/bones/WhyIHateWebLogs.html&lt;/a&gt;,
        mostly because it is so self-referential.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;One
        wonders what category the author himself falls into.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;Thank
        goodness my blog falls under one of his acceptable uses of blogs!&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;I
        don' t know how I could continue to face myself in the mirror every day without this
        guy's approval.&lt;span style="mso-spacerun: yes"&gt;&amp;#160; &lt;/span&gt;
        &lt;o:p&gt;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
    &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;
        &lt;span style="FONT-SIZE: 10pt; COLOR: purple; FONT-FAMILY: 'Lucida Sans Unicode'"&gt;
        &lt;o:p&gt;&amp;#160;&lt;/o:p&gt;
        &lt;/span&gt;
    &lt;/p&gt;
&lt;/body&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=53221" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Rants/default.aspx">Rants</category><category domain="http://blogs.msdn.com/ericlippert/archive/tags/Books/default.aspx">Books</category></item></channel></rss>