<?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>MikeZintel's WebLog</title><link>http://blogs.msdn.com/mikezintel/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Why Sync?</title><link>http://blogs.msdn.com/mikezintel/archive/2008/05/05/why-sync.aspx</link><pubDate>Tue, 06 May 2008 06:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8462065</guid><dc:creator>MikeZintel</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/8462065.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=8462065</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;FONT size=3&gt;For several decades after the invention of the computer, the dominant constraint was processor cost. While mainframes had, in relative terms, impressive storage and local I/O capacity, they were primarily designed to do useful work on &lt;I&gt;every&lt;/I&gt; clock cycle. Indeed the humans who were running around mounting and unmounting tapes according to instructions in a job control stream were trying to keep the processor from ever executing a single very expensive NOP. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;It was very Tron.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;With the advent of minicomputers, computers became much more useful to &lt;I&gt;people&lt;/I&gt;. The economics of cheaper processors and storage meant that a department level manager could buy a computer rather than waiting for access to corporate iron. Multi-tasking operating systems, in conjunction with terminals – the precursors to networks, began to move from a technology designed to keep the machine busy to a technology that was enabling interactivity in the human computing experience. The economics still required people to share a processor and storage (and experts).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;Workstations were an early version of what would eventually become the personal computer. The workstation was designed exclusively to make the individuals using them as &lt;I&gt;personally&lt;/I&gt; productive as possible, by supplying them with processing, graphics, local storage and then network storage. The magic of the workstation was that the era of optimizing for the machine was coming to an end. I believe that is was the productivity of the workstation that enabled developers to experiment and refine networking and its associated metaphors and practices (virtualized peripherals, remote shells, RPC, collaborative / distributed development, etc.) that paved the way for the Internet itself.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;The personal computer again fundamentally changed the economics of computing. While the first PCs were a step backwards in functionality relative to the workstation, the price was right and getting more right with each passing year. The first 10 years of the personal computer were driven by the novelty of rapidly cheaper computing and the search for uses for it. Later the PC would combine workstation class operating system sophistication with a TCP/IP stack and affordability and give birth to the modern Internet. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;It’s interesting to consider that it was roughly 15 years ago that we were debating the merits of adding, or not adding, TCP/IP and Winsock to Windows 95.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;The next opportunity that affordable personal computing created was access to information. The industry got a few years out of enabling people to type their recipes in WYSIWYG and then print them on newly affordable “graphics” printers. But we wanted more. We wanted to know things. We didn’t know it at the time, but there was a pent up demand to publish. Encyclopedias, universities, newspapers and television were still in control of knowledge and its distribution.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;The next economic constraint was the cost of storage. I remember when we were &lt;I&gt;generally happy&lt;/I&gt; when a new operating system install took less than one quarter of the hard drive, and data loss due to drive failure was an ordinary part of the personal computing experience. Thankfully the term &lt;I&gt;head crash&lt;/I&gt; has disappeared from our jargon completely.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;CD-ROMs started to show the promise of cheap storage. Usenet was showing us that people really wanted to be heard. And email, the power of communication and collaboration within an intimate group controlled by individuals.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;For 10 years between 1990 and 2000, the capacity and reliability of everything associated with the PC increased at an amazing and increasing rate, even as it got cheaper at an increasing rate. By 1998 I had so much affordable, fast local storage and dirt cheap processor cycles that I could &lt;I&gt;render digital video in real time&lt;/I&gt;. At the time it wasn’t obvious, exactly, why this was better than an analog tape but damn it was way cool. PVRs came later and showed us one reason it was cool.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;“Overnight”, the default directions of everything in the industry started to change.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;By 2002, we were beginning to take high capacity, small and mechanically robust laptop hard drives for granted. Affordable desktop PCs had storage capacity and reliability undreamed of by workstations in their prime. Video games could assume large amounts of space. Solid state storage was enabling portable devices to store music, photos and video. Indeed the storage wave just kept going even as the clock speed wave crested and began to roll back. This was not conventional wisdom 10 years ago.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;Of course the biggest trend of the last 10 years has been the browser. The web march has been stunning: from simple access to a huge, barely “administrated” and human friendly namespace&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:PersonName w:st="on"&gt;;&lt;/st1:PersonName&gt; to forms, catalogs and ecommerce&lt;st1:PersonName w:st="on"&gt;;&lt;/st1:PersonName&gt; simple publishing via hosted services and rich client authoring&lt;st1:PersonName w:st="on"&gt;;&lt;/st1:PersonName&gt; even more simple (if less rich) publishing via blogs and wikis&lt;st1:PersonName w:st="on"&gt;;&lt;/st1:PersonName&gt; to highly interactive (but still not very rich) sites that are the anchor point of sharing, collaboration, publishing and discussion.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;The web has received a lot of well deserved focus on ease of use enabled by a simple and clever networking layer and presentation layer. Indeed the browser sets a new standard for &lt;I&gt;it just works&lt;/I&gt; experiences, and technology that doesn’t meet that bar will not be adopted. As is often the case, the reality is that considerable effort on the part of developers goes into making the experience work and feel great on top of a platform that has, as we say, evolved over time.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;The evolution of (cheap) storage has had an equally important impact on the web. The combination of the natural partitioning flexibility of the URL space, racks of (cheap) PCs and simple software redundancy have enabled the creation of immense &lt;I&gt;reliable enough&lt;/I&gt; stores. Because these stores are “centralized” it is feasible to do data mining, indexing and transformations on them. This is the engine behind search engines. As this technology becomes more approachable to more developers, it is powering more experiences on the web.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;It’s tempting to assume that web client server wins everything. But I don’t think so.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;I love the web. I’m using it now. But I still spend more time using Windows applications. At the moment I’m listening to very high quality glitch free music being streamed from my hard drive, through an iTunes client and into my headphones. I have a few folders open where I did some photo editing with Photoshop earlier today. I’m using Office to author this blog and enjoying best in class spelling and grammar checking. Messenger is open. I routinely use Premier, Lightroom, Dreamweaver, Nero, and various scanning programs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;The industry’s newest, coolest, ease of use standard setting, &lt;I&gt;cleverest mobile browser ever&lt;/I&gt; powered device, the iPhone, has a local application for text messaging, calendar, photo album, camera, YouTube, stocks, maps, weather, clock, calculator, notes, mail, music, the phone itself and of course, the shell. The reason for this is that local applications can have experiences that are highly tuned to the device capabilities and the preferences of the customers using them.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;Of course what is really happening it that the industry is moving toward the best of both worlds. Many of the local applications I describe above are invisibility connected to the web. This is nature of what we’ve been calling this Software + Services.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;What doesn’t seem to have happened yet is much coherency when I want an experience that spans mobile, web and PC. Mobile and (typically one) PC work together over USB sync, and &lt;st1:PersonName w:st="on"&gt;Facebook&lt;/st1:PersonName&gt; has done a decent job with their iPhone targeted (browser) client but for the most part, I have to “pick” an app or a site or an operator, &amp;nbsp;use it and accept another silo of (my) information. But since lots of them are truly unique and useful, I use lots of them. And I learn to context switch. A lot. I am forced to maintain a complex mental map of where my data is, how I get to it and how to move it around. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;Even the web, “the alternative to complexity”, is becoming complex. Sites are competing to store your information and as a side effect they aren’t motivated to allow you to store it across sites. &amp;nbsp;I don’t think I could find all of the photos I have uploaded to the web if I wanted to.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;I think that the Live Desktop and Windows Mesh client experience (and more, coming …) are a visceral demonstration of the power of having a coherent (&lt;EM&gt;synchronized&lt;/EM&gt;) view of all of your information from every endpoint. Of course, these are just the initial experiences we have built on &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/livemesh/archive/2008/04/21/live-mesh-as-a-platform.aspx" mce_href="http://blogs.msdn.com/livemesh/archive/2008/04/21/live-mesh-as-a-platform.aspx"&gt;&lt;FONT color=#800080 size=3&gt;Live Mesh Platform&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;. I can imagine many more.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;The success of Live Mesh depends in large part on the core platform and the developers being successful, in the real world, to build “it just works” experiences.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;Live Mesh was my first deep exposure to REST. I have to admit that the power of simple operations against an URL space has impressed me. We have tackled very complex problems using the model and it has held up very well. I’m happy to tell you that this elegance will extend to the developer model (soon).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;FONT size=3&gt;I’m looking forward to it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&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-FAMILY: Arial"&gt;&lt;A href="http://www.zintel.net/" mce_href="http://www.zintel.net/"&gt;&lt;FONT color=#800080 size=3&gt;Mike&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt; Zintel&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;FONT size=3&gt;Product Unit Manager, Mesh and Storage Platform&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;FONT size=3&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;I want to thank a few people: Dave and Amit for creating the opportunity to work on this. Ray, Jack, George and Colleen for their deep insight. Abhay and his team for making it cool and showing me what is possible. &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-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;Abolade, Alex, Dave, David, Mike, Tom, Tony, Vlad and &lt;U&gt;many&lt;/U&gt; other people on my team for designing and building the right stuff long before I knew what it was. Todd and his team for making it work on the Internet.&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-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;We’re not done yet and we’re hiring. &lt;A href="mailto:mikezin@microsoft.com"&gt;mikezin@microsoft.com&lt;/A&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;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN lang=EN style="FONT-FAMILY: Arial; mso-ansi-language: EN"&gt;&lt;FONT size=3&gt;Technorati Tags: &lt;/FONT&gt;&lt;A title=http://technorati.com/tags/LiveMesh href="http://technorati.com/tags/LiveMesh" mce_href="http://technorati.com/tags/LiveMesh"&gt;&lt;FONT color=#800080 size=3&gt;LiveMesh&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8462065" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mikezintel/archive/tags/LiveMesh/default.aspx">LiveMesh</category></item><item><title>Microsoft XNA Framework Referenced Here, Etc.</title><link>http://blogs.msdn.com/mikezintel/archive/2006/04/06/569945.aspx</link><pubDate>Thu, 06 Apr 2006 08:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:569945</guid><dc:creator>MikeZintel</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/569945.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=569945</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;A HREF="/scottholden"&gt;Scott Holden&lt;/A&gt; mentioned that I didn't reference the Microsoft® XNA Framework® in my &lt;A HREF="/mikezintel/archive/2006/03/23/559511.aspx"&gt;previous posts&lt;/A&gt; &lt;A HREF="/mikezintel/archive/2006/03/14/550958.aspx"&gt;crawl this one too&lt;/A&gt;, thus missing out on the search engine action. Actually it was a secret test to gauge the degree to which search algorithms can infer based on semantics.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Still pretty bad.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;So, let me fix this by sharing a photo of Chris Muench, at GDC, showing off his game, written using the Microsoft® XNA Framework®.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=450 src="http://www.zintel.net/Blog/ChrisMGDC.jpg" width=600 align=center border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;We're going to give an internal demo of these games at an upcoming "all hands" Developer Division meeting. It's cool.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;We're getting ready to release NET CF V2 SP1 to beta. We're finally close to making good on our commitments to support for Windows CE 4.2, &lt;A HREF="/mikezintel/archive/2004/12/27/333002.aspx"&gt;performance tools&lt;/A&gt; and &lt;A HREF="/mikezintel/archive/2005/02/11/371397.aspx"&gt;headless support&lt;/A&gt;. Thanks for your patience.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;In other news, the SQL folks are going to announce today a product called Microsoft® SQL Everywhere®. This is a compact local database for use on PCs and Windows Mobile devices. It will enable developers to use the same database and APIs to develop occasionally-connected applications that sync with SQL Server 2005 across all Microsoft client platforms.&amp;nbsp;The database will have similar install footprint as SQL-Mobile does today. Very similar. Very familiar. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Some folks have been asking about this for a long time.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The NET CF team is working on WCF support for the next release, with some interesting support for transiently connected networks.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I got an interesting answer to an interview question a few weeks ago. "Why do you want to work at Microsoft?" The candidate described the anti-Microsoft buzz on campus. He then said he listened to a presentation that a Microsoft employee gave at campus, and&amp;nbsp;decided to "put some independent thought into this". I have to admit a certain guilty pleasure to reading mini-microsoft; it’s like an accident scene. But I hope people can see through this stuff. There are a lot of great folks who care here. I've been here 11 years and I think it's a better company now then during the "good old days&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=569945" width="1" height="1"&gt;</description></item><item><title>It's Cool.</title><link>http://blogs.msdn.com/mikezintel/archive/2006/03/23/559511.aspx</link><pubDate>Fri, 24 Mar 2006 04:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:559511</guid><dc:creator>MikeZintel</dc:creator><slash:comments>25</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/559511.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=559511</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I have a theory that everyone gets into software to write video games or build robots. Many discover that it's hard, they don't "got it",&amp;nbsp; most of the paying jobs are for accounts payable systems and that rent costs money. I have another theory that photographers are just creative people with &lt;A href="http://www.zintel.net/"&gt;no drawing talent&lt;/A&gt;. I'll admit to having no real data on this, other than it being true for me personally.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;One good solution to the art problem is Photoshop, and for the game problem to build tools and entice the folks who "got it" to use them. Frankly seeing people with different/better skills than you build very cool stuff on your tools in the best part about working on developer tools.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;About 2 years ago I challenged my team to make sure that as D3DM (DX for Windows Mobile) got rolled out on devices, NET CF was the best choice for writing a game app on the platform. Success would be measured by adoption and great customer feedback. At last year's &lt;A HREF="/mikezintel/archive/2005/05/24/421290.aspx"&gt;MEDC&lt;/A&gt;, D3DM was highlighted in a keynote with the game, &lt;A href="http://www.pocket-jongg.com/default.aspx"&gt;Pocket-Jongg&lt;/A&gt;, written by Chris Muench. Chris also gave a talk at that event on the details of writing D3DM games in managed code.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;That was fun to watch.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Now the challenge is to make sure that once hard core C++ game developers try .NET, that they leave delighted. This will be a learning experience for all of us.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I've been working on operating system level stuff for &lt;A href="http://www.zintel.net/Bio.htm"&gt;long enough&lt;/A&gt; that I can get excited by seeing the right text on a screen (although, never by a single light, even if it blinks; can't do hardware). So I thought I was really excited when I &lt;A HREF="/mikezintel/archive/2006/03/14/550958.aspx"&gt;saw&lt;/A&gt; a NET CF team home brew game, "Racer", running on Windows Mobile, Xbox and a Windows PC.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;But then I saw Chris's game, with some help from artists in the Xbox team, on Xbox. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;IMG src="http://www.zintel.net/blog/XNA_GDC06_Pocket-Jongg_logo.jpg" border=0&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;It was cool.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;IMG src="http://www.zintel.net/blog/XNA_GDC06_Pocket-Jongg07.jpg" border=0&gt; &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;And then I saw this.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;IMG src="http://www.zintel.net/blog/XNA_GDC06_Culture07.jpg" border=0&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;And it was cool.&lt;/FONT&gt;&lt;/P&gt;&lt;IMG src="http://www.zintel.net/blog/XNA_GDC06_Culture06.jpg" border=0&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Accounts payable never looked this good. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Check out the news from our &lt;A HREF="/robunoki/default.aspx"&gt;embedded reporter&lt;/A&gt;, Rob.&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=559511" width="1" height="1"&gt;</description></item><item><title>A Market Within A Market (was .NET in HD)</title><link>http://blogs.msdn.com/mikezintel/archive/2006/03/14/550958.aspx</link><pubDate>Tue, 14 Mar 2006 07:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:550958</guid><dc:creator>MikeZintel</dc:creator><slash:comments>29</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/550958.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=550958</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;In the late 90s, I worked on the &lt;A href="http://www.irda.org/associations/2494/files/Publications/WindowsNonWindowsIrda.PDF"&gt;IrDA&lt;/A&gt; infrared connectivity technology. My team built the protocol stacks that shipped with Windows CE and Windows 2000 and descendents, and I was an advocate of the technology within Microsoft.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;IrDA is a success. It continues to be useful as simple way to transfer files and contacts between devices and PCs, and to use phones as modems.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;That said, the thing I was most passionate about failed. I wanted to create the most seamless experience for moving photos between digital cameras and PCs. Keep in mind that 8 years ago, it was trivial to draw a crowd by taking a digital camera to the zoo. And my internal demo of a pre-production digital camera beaming images to Windows NT5 was very cool indeed.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;There was a “competing” internal technology called Windows Image Acquisition (WIA) architecture. WIA abstracted various lower level buses, normalized the command and data transfer, and exposed the camera photos through a standard API that can be used by many different programs. In theory, WIA and IrDA would coexist, but I disliked it. A WIA camera was installed via the PnP system as a new device, and controlled via APIs and control panel.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I argued that we had created an essentially new model of connectivity, completely free of state and configuration and completely ad-hoc. No drivers to install, no settings to get wrong, and wrapping this in PnP was ugly from an engineering perspective and bad for ease of use.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I was quite passionate about this, and the company empowered me to ship it in Windows 2000. I even lined up some camera vendors to support it. And I was sure I would win in the marketplace because of the fundamental beauty of what we had built.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;It was beautiful.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I don’t know for sure, but I suspect that, today, if my one unit of the one camera model that I know actually shipped with this feature wasn’t broken, I could point it at my XP laptop, hit send, and all of my photos would be transferred to a folder. The folder would then automatically open to an Explorer photo preview model. This might even still work in Vista.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Slick as can be.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;But it failed. Worse, partners who bet on me failed. I didn’t make life easier for consumers. I left Windows with legacy (but good quality) code to support. And I now am a regular and happy user of WIA to import images from one of my two scanners into any number of image editing tools that I use on a &lt;A href="http://www.zintel.net"&gt;regular basis&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Why am I telling you this story?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The software platform business is fundamentally different from an innovation and marketplace perspective than, say, the 3M model of product incubation, entrance, success or failure and withdrawal (at least as it’s taught to me by B-School types; I’ve never worked at 3M and one thing I’ve learned is that you never quite get it from looking outside in).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;First, you can’t really withdraw things. At the scale of Windows, even if a small percentage of folks take a dependency on a technology, then you want to continue to support them. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;For a long time. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;DOS apps I wrote in 1980 continue to run on XP today. I’m sure if the folks writing DOS knew this at the time, they would have made this task a bit easier.&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;.MODEL LARGE ; large model&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;.CODE&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;PUBLIC _TestForKey ; BOOLEAN TestForKey(void)&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;_TestForKey PROC&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;mov ah, 1 ; Key waiting check&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;int 16h ; Keyboard BIOS service&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;mov ax, 0 ; Assume no key waiting&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;jz Return ; correct, return(FALSE)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;mov ax, 1 ; Key waiting, return(TRUE)&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Return:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;ret&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;_TestForKey ENDP&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;It's important to get things right for the long term.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Second, the net value to people of a feature is not measured in isolation. Frankly I don’t want to choose between 10 different ways to do the same task and decide which one I like best. I want one way to discover and start programs, one way to cut and paste, one way to organize things, one way to add and manage devices and administrate my machine, etc. Once I’ve learned how to do things, I want to do them the same way in as many places as possible. Perhaps most importantly, I want programs and hardware I buy anywhere to work anywhere.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;You might think we could have done a better job on some of these things, and I’d agree, but it’s not for lack of trying. Our software is used, literally, by hundreds of millions of people, in every country in the world, to do an incomprehensibly large number of different things. An interesting consequence of listening and acting on a huge number of feature requests, each that make sense in a scenario, is that you can accidentally end up doing a bunch of overlapping things. Frankly the search for the fully normalized horizontal, discoverable and easy to learn and live with solution to problems is not an easy task.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Some of use who have been around for a while remember a simple happy time when you wrote some code, put in on floppy, took out an ad in Byte, and made a fortune. Personally, I’m going to ignore the fact that this wasn’t at all my experience trying to bootstrap a software company, and remember it this way.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Why am I telling you this story?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I’ve been spending the last few months doing “cross group” work, to get something new lined up and right for the long term. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;We spend a lot of energy and time at Microsoft these days doing cross group work. On a great day, this can be an enlightening and enjoyable process, as we have an amazingly diverse, talented, curious and interesting group of folks here. I can’t imagine a faster way to gain rich insights into technology, customers and the marketplace. On a grumpy day, cross group work feels like a game of whack-a-mole that has gone on too long, as the shear number of opinions and innate complexity can be overwhelming.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;And this work has been “secret”. Not so much because we want to save the surprise, but because we want to make sure that we don’t announce things until we have very high confidence that we will be able to build, ship and support them, that they are the right solutions and that we understand how they sit relative to other potentially overlapping efforts.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I once wrote about &lt;A href="/mikezintel/archive/2005/02/03/366662.aspx"&gt;what we knew&lt;/A&gt; Vs what we didn’t know when we designed the .NET Compact Framework.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I’d like to tell you now what I know about the game space. I know that very high end games are written in C++ , with a significant art component, and are getting more expensive to build. I know that C# improves programmer productivity substantially and has very solid adoption and customer loyalty. I know that at the low end, various technologies are making “casual” game authoring much easier, and that devices are a high volume target for these games. I know that the set of technologies used to write games varies significantly across platforms, and that it’s hard to migrate code and skills between consoles, PC and devices.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I also know that working with the Xbox team has been among the most enjoyable and productive cross group work that I’ve done. I know that my team and the XNA team within Xbox, have been burning the midnight oil to allow us to demonstrate the feasibility of games written in managed code running on a .NET CLR on a final 360 dev kit. And I know that we’ve demonstrated the same game binary (almost the same; oh so close) running on the 360 kit, Windows and on Windows Mobile.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;In HD.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Fast.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Stay tuned.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;For the record, the right solution to the photo exchange problem proved to be tiny solid state drives that are PnP’d as a local filesystem.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=550958" width="1" height="1"&gt;</description></item><item><title>It's a Completely Cool, Multi-Purpose Blog </title><link>http://blogs.msdn.com/mikezintel/archive/2005/11/03/488564.aspx</link><pubDate>Thu, 03 Nov 2005 08:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:488564</guid><dc:creator>MikeZintel</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/488564.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=488564</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I recently watched, for about the 10th time, the movie &lt;A href="http://www.imdb.com/title/tt0092117"&gt;True Stories&lt;/A&gt;. And, for about the 10th time, I started telling anyone around me who would listen about this great movie. &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I find it fascinating that different folks see different themes in the same movie. Indeed, depending on my mood, I can see different movies. &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;True Stories is about small towns, suburbia, religion, the technology business, metal buildings, community, shopping malls, love and marriage, progress, music, other stuff. The movie cuts between David Byrne's monolog narration, as he drives through a town in Texas, lots of lip-syncing to music by the Talking Heads, and various snippets of&amp;nbsp;small town life.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Most of the characters in the movie are eccentric. This includes a man who advertises for a wife on television (played by John Goodman), an executive who uses food as a metaphor to explain the changes that technology will have on society, a paranoid preacher hooked on conspiracy theories and a pathological liar.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;It's pretty clear during the clip of "Love for Sale ", that Byrne is being condescending to advertisers&amp;nbsp;and people gullible enough to fall for advertising. Yet despite the fact that the story is basically about the boring lives of bunch of oddballs, I find a more subtle and optimistic message intertwined.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The movie's viewpoint on impact of technology on society is particularly forward looking. The almost unbelievable global change driven by the wide availability of PC computing escaped Bryne, who was commenting on the impact that a semiconductor company was having transforming the local community. Yet the exaggeration, intended to be a comical spoof, has proven to be shy of reality.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Small town life really is boring. And folks who choose to live in small towns are generally isolated enough from urban trends so as to appear unsophisticated and even intolerant. But my small town friends are not lacking in intelligence, creativity or ambition. The need to self-entertain leads to a lot of eccentric hobbies and a sensitivity and openness to simple pleasures. Most folks get that talking about the weather isn't intellectually groundbreaking, but value having a collectively low barrier to entry to basic human interaction. As far as open mindedness goes, my experience has been that in a big town, you advertise your tolerance with a parade, and in small town, parades are not a political events and privacy is valued and respected.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The fundamental gag in True Stories is that Texas is flat, ugly&amp;nbsp;and boring. Indeed the closing scene is a girl amusing herself with a sequence of different walks as she travels down a straight, seemingly endless road through the prairie. And the strange characters are a result of life in a boring, isolated Texas town. But they all seem sincere, decent, complex and genuinely entertaining.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I liked them.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=488564" width="1" height="1"&gt;</description></item><item><title>The Proper Division of Labor in an Engineering Org</title><link>http://blogs.msdn.com/mikezintel/archive/2005/10/20/482936.aspx</link><pubDate>Thu, 20 Oct 2005 08:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:482936</guid><dc:creator>MikeZintel</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/482936.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=482936</wfw:commentRss><description>&lt;FONT size=3&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;a href="http://blogs.msdn.com/mikezintel/archive/2004/12/08/278138.aspx"&gt;My job: &lt;/A&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;blogging.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;A href="http://www.zintel.net/blog/netcfteam1.jpg"&gt;These folks:&lt;/A&gt; &lt;/FONT&gt;&lt;FONT size=3&gt;real work (ie setup, versioning, JIT, GC, loader, reflection, debugging, type system, interop, BCL, globalization, Windows Forms,&amp;nbsp;DirectX, networking,&amp;nbsp;crypto, ADO.NET, XML, etc).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=482936" width="1" height="1"&gt;</description></item><item><title>QA Has Signed Off on .NET Compact Framework V2</title><link>http://blogs.msdn.com/mikezintel/archive/2005/09/29/475506.aspx</link><pubDate>Fri, 30 Sep 2005 02:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:475506</guid><dc:creator>MikeZintel</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/475506.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=475506</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The .NET Compact Framework Quality Assurance Team signed off on V2 yesterday. We've been working on this for a long time and I'm excited to get this thing shipped. Soon.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I'd like to share some insight into what we've been doing for the last 3 years, and why.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The first half of the project cycle is divided into milestones, each about 3 months long, split between a coding and a stabilization phase. Like most of the techniques used to manage multi-person software projects, the goal of milestones is to find and fix bugs early and keep the code in good health.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;If I check in a code change that introduces a subtle bug (pretend that the team would actually let me check in code these days) on Monday, and on Wednesday I get a bug report on an apparently different bug, there's a decent chance I'll be able to remember what I did, and make the mental connection, and correctly fix the root cause. The probability of a correct diagnosis is far lower two months later. And if other folks have "fixed" the side effects in the interim, possibly by unknowingly taking a dependency on the incorrect behavior caused by my bug, fixing the root cause then creates a bug ripple through the system. When you work on systems with 10s, 100s or even 1000s of developers, you have to pay attention to this.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Small projects tend to behave like clay models. Changes are predictable and visible. Large systems behave more like a building or even a living organism. Each step of building construction establishes a quality baseline for the next one. A crooked foundation ripples through the process until the kitchen cabinets can't be installed without a gap on one side or the other. The cost of moving water pipes during a remodel vastly exceeds the cost to run them initially, it's often to impossible to move things like chimneys and drains and you can add only so many new plugs to a circuit.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I think about the code of a complex software project in terms of&amp;nbsp;its&amp;nbsp;"health" at any given point in time. It's much cheaper to keep it healthy than is it is to cure it, and after recovery from a major illness, accident or surgery, it often doesn't come back to optimal health.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;There's also a team efficiency and morale reason to keep the system healthy. If you are trying to debug complex behavior in your code, and the components that you are running on and with are also unstable, the amount of complexity soon becomes overwhelming. If this continues for very long, folks tend to give up on the really hard bugs, since they can't find them and there's a good chance they might just "go away" in some future build anyway. This phenomena extends to external customer satisfaction too. It only takes a handful of memory leaks, unexplained crashes and hangs, incorrect program execution or data corruption before folks assume that all of their bugs are really system bugs. We hold ourselves to high standard around these kinds of things.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;So milestones are a simple tool to make sure if the code goes on a bad drinking binge, we can send it to rehab.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Sometime around the middle of the cycle, the system becomes stable and complete enough that you can start to collect feedback. If you do this too early, the feedback tends to be obsolete and customers get frustrated because the system is still churning. If you wait too long, you can't act on it. We collect feedback through our early adopter programs, beta tests, MVPs, newsgroups, internal app building exercises, MSDN forums and bug reporting, industry events, web searches and formal industry research.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;During the second half of the multi-year cycle we start to pay a great deal more attention to our automation harnesses and associated dashboards. In terms of automation, we run a continuous build, with a "nag auto-mailer" that catches build breaks and sends email, ideally in time to fix them before the nightly automated build. Every day, a new build is created and minimal set of automated tests, called build verification tests, are run against a matrix of hardware and operating systems. The failures are logged, analyzed by engineers that day, and bugs filed. The entire test suite and automation needs the same kind of health program as the code under test. If the suite generates too many false positives it will be ignored, yet the coverage needs to be as good as possible to find bugs early.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;We also have suites, automation and dashboards around stress and performance. The coverage on these needs to be broad, to prevent ongoing performance tuning (and the occasional foundation wall move) from "training" to a small set of benchmarks that don't translate to real world gains, and to squash nasty&amp;nbsp;stress bugs early.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;We have ship criteria around these dashboards and we watch these and bug trends to help figure out when we're ready to ship.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;At the end of every milestone, and prior to final builds, we run what's called a full test pass. That is a process that runs all the tests on as many combinations of hardware and operating systems as we can muster. This is a multi-week process.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The thing we have been working hard on for the last few months is compatibility. We want customers to deploy the next version widely, and key here is to provide both enough new value and to make sure they have a pleasant upgrade experience. I think our performance gains alone will be reason to upgrade, in addition to the new APIs we expose. We have an automation harness that uses reflection against our assemblies to validate that we are in sync with the .NET Framework on Windows. We also run a compatibility test suite to validate that our behavior is compatible. Both of these are necessary starting points, but the only way to really succeed is to test real world applications.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;To that end, we have assembled, with your help, a catalog of about 600 application. We've manually tested about half of them, covering a wide range of application types and complexity, and have fixed all but a handful of really tough problems. This has been the last dashboard that we've been watching closely and I'm happy that it says we're ready.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;And you've been telling us that we're ready too. Thanks.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;A few V2 stats:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Bugs opened, reviewed and fixed or closed : 11,831&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Test executables run in final test pass: 546,940&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Test cases run in final test pass: 3,548,056&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Devices used in final test pass: 94&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Global versions tested: CHS, CHT, ESP, FRA, ITA, JPN, KOR, PTB, USA&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Apps tested for app compat: 326&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Performance scenarous tested: 230&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;This is what we've been &lt;/FONT&gt;&lt;FONT size=3&gt;doing, with your help, for the last 3 years. I hope it delights you.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT size=+0&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&amp;nbsp;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=475506" width="1" height="1"&gt;</description></item><item><title>WPF/e and the .NET Compact Framework</title><link>http://blogs.msdn.com/mikezintel/archive/2005/09/23/473137.aspx</link><pubDate>Fri, 23 Sep 2005 07:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:473137</guid><dc:creator>MikeZintel</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/473137.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=473137</wfw:commentRss><description>&lt;FONT size=3&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I'd like to share some thoughts on integrating WPF/e, announced at the PDC, and the .NET Compact Framework.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;WPF/e is a C++, cross platform implementation of a subset of WPF (Avalon). It will be able to execute XAML, in addition to exposing dual mode COM interfaces that make it programmable from COM and script languages.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;This makes perfect sense for deployment in browsers, but less so for .NET developers on devices.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I've been struggling for a while trying to understand how to add a great, easy to author, graphics animation infrastructure to the .NET Compact Framework. We made good progress on enabling games with the DX object model in V2 (Whidbey), but there's still considerable investment needed with this approach to build a game. I'm equally concerned about the "disjoint silos" between Windows Forms apps and full screen only DX apps.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The implementation of WPF on the PC was too large to port to devices.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I'm optimistic that WPF/e is the solution to this. The next step for the team is to investigate the feasibility of integrating this technology deeply into the .NET Compact Framework. Ideally, this would enable the hosting of a control built in WPF/e in a Windows Forms application, in addition to enabling full screen WPF/e applications. In both cases, the programming experience would be .NET.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=473137" width="1" height="1"&gt;</description></item><item><title>Ignition System Envy</title><link>http://blogs.msdn.com/mikezintel/archive/2005/09/08/462299.aspx</link><pubDate>Thu, 08 Sep 2005 08:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:462299</guid><dc:creator>MikeZintel</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/462299.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=462299</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I'm pretty excited to try out my new toy, the &lt;EM&gt;Zintel-O-Tron 6 Channel Combination Model Rocket and &lt;/EM&gt;&lt;a href="http://blogs.msdn.com/mikezintel/archive/2005/08/26/456889.aspx"&gt;&lt;EM&gt;Fireworks&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; Ignition System&lt;/EM&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I built this thing on the weekend from parts I bought at the local Radio Shack.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;At least I was excited, until Mark Prentice, who works with me on the .NET Compact Framework, basically told me that my design point was lame ...&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;P class=MsoNormal&gt;&lt;B&gt;&lt;FONT face=Tahoma size=2&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt;From:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;FONT face=Tahoma size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"&gt; Mark Prentice &lt;BR&gt;&lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;Sent:&lt;/SPAN&gt;&lt;/B&gt; Friday, September 02, 2005 1:28 PM&lt;BR&gt;&lt;B&gt;&lt;SPAN style="FONT-WEIGHT: bold"&gt;To:&lt;/SPAN&gt;&lt;/B&gt; Mike Zintel&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Times New Roman"&gt;I bet using &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=navy&gt;&lt;SPAN style="COLOR: navy; FONT-FAMILY: Times New Roman"&gt;&lt;A style="COLOR: blue; TEXT-DECORATION: underline" href="http://www.seetron.com/ssc.htm"&gt;http://www.seetron.com/ssc.htm&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;FONT face="Times New Roman"&gt; and a couple of hobby servos at &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: navy"&gt;&lt;FONT face="Times New Roman" color=navy&gt;&lt;A style="COLOR: blue; TEXT-DECORATION: underline" href="http://www.hobby-lobby.com/servos.htm"&gt;http://www.hobby-lobby.com/servos.htm&lt;/A&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Times New Roman"&gt;, &amp;nbsp;a bit of wood and nails for a simple peg board switch, a PPC with serial out, one could use NETCF to write the fireworks scheduling app…&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT face=Arial&gt;&lt;SPAN style="FONT-FAMILY: Times New Roman"&gt;Mark&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=673 src="http://www.zintel.net/Blog/Zintel-O-Tron.jpg" width=450 border=2&gt;&lt;/P&gt;&lt;FONT size=+0&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=462299" width="1" height="1"&gt;</description></item><item><title>This is Not a Technical Post on the .NET Compact Framework </title><link>http://blogs.msdn.com/mikezintel/archive/2005/08/26/456889.aspx</link><pubDate>Fri, 26 Aug 2005 23:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:456889</guid><dc:creator>MikeZintel</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/456889.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=456889</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I've been on vacation.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;If you're very lucky, you know a place that feels like it's the calm in the center of the universe. For me, &lt;A href="http://www.zintel.net/Public/Photos/NovaScotia/JPG_4inch_150dpi/LittleRiverLake1.jpg"&gt;Little River Lake&lt;/A&gt;, in &lt;A href="http://www.zintel.net/Public/Photos/NovaScotia/JPG_4inch_150dpi/NSDeanChapterLake2.jpg"&gt;White Rock&lt;/A&gt;, Nova Scotia is just such a place. We've spent time there every summer for about 20 years.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The highlight this year, beyond seeing friends and family again, was fireworks. The key to this was the discovery of&amp;nbsp; &lt;A href="http://www.fireworksfx.com/"&gt;Fireworks F/X&lt;/A&gt;, a few &lt;STRIKE&gt;miles&lt;/STRIKE&gt; km down the road. Every summer I search for fireworks. And I've usually been able to find small, single shot units at the local hardware store. And for quite a few years, the locals have told me that I need to go to Grand Pre for the good stuff. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I stole this description of Grand Pre from a &lt;A href="http://www.valleyweb.com/grandpre"&gt;tourist site&lt;/A&gt;: &lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;FONT size=3&gt;Adjacent to the town of &lt;A href="http://www.town.wolfville.ns.ca/"&gt;Wolfville&lt;/A&gt; is Grand Pre, or "Great Meadow", stretches east from the Acadian dykes which excluded the tides of the Minas Basin. Grand Pre National Historic Park marks the site of the expulsion of the &lt;A href="http://www.valleyweb.com/acadians/"&gt;Acadians&lt;/A&gt; in 1755, and it has become a symbol of the preservation of the Acadian People. &lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;FONT size=3&gt;For over three hundred years, the village of Grand Pre has provided a home for immigrant farmers and artisans. The first Acadian settlers traveled east from Champlain's original settlement in &lt;A href="http://www.annapolisroyal.com/"&gt;Annapolis Royal&lt;/A&gt; in 1680. This group of industrious farmers engineered the complex system of dykes along the shores of the Minas Basin and nurtured what would become the agricultural heartlands of Nova Scotia. &lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;I&gt;&lt;FONT size=3&gt;Today, Grand Pre is the home of a growing number of artisans as well as a National Park and a variety of tourist facilities. &lt;/FONT&gt;&lt;/I&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Not the first place I expected to find a great selection of the "good stuff". Besides, I could never get more information than "it's in Grand Pre".&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;But this year Bob gave me a web site and a phone number. Soon, I had directions: "Turn right at the intersection and look for the sign." The place looks like a farm. And the folks there seem like typically friendly and helpful Nova Scotians, but their sentences are peppered with words like aerials, shock tubes, batteries, bomblettes, fountains, cones, strobes, firing system and cakes. And they have the good stuff.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;And the more good stuff you buy, the cheaper it gets, so you can load up.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Cool.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=450 src="http://www.zintel.net/blog/Fireworks3.jpg" width=674 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;So here was the plan. First, find a suitable rock in the center of the lake. In the daytime, take a big tub full of dirt and leave it there. Shuttle a&amp;nbsp; cardboard box full of explosives, a "BernzOMatic ignition system", a fire extinguisher, a few flashlights and a camera and tripod to the rock.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;.&lt;IMG height=450 src="http://www.zintel.net/blog/Fireworks4.jpg" width=673 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;At dusk, head back out ...&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;.&lt;IMG height=450 src="http://www.zintel.net/blog/Fireworks2.jpg" width=673 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;and wait for darkness.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=450 src="http://www.zintel.net/blog/MarkMills.jpg" width=675 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;Doug1 was in charge of ignition.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=450 src="http://www.zintel.net/blog/DougFire1.jpg" width=674 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;Doug2 was in charge of fire safety. In particular, he was responsible for ensuring that any burning pieces of space junk didn't fall into our rubber boat or cardboard box of fireworks.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;Here he is, keeping a close watch on the boat and box of fireworks.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=675 src="http://www.zintel.net/blog/Fireworks10.jpg" width=450 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;It took us a couple of tries to really get the logistics right. On the first night, we didn't even start until dark. That was the first mistake we corrected. Then we changed rocks from a small round one to a medium sized flat one. We also figured out a way to secure the boat line to a medium sized flat rock. Finally, after firing the first set of fireworks, we debated the need to soak the spent carcasses in water prior to loading them into the gasoline powered rubber boat. We debated this over a beer, on the far side of rock. When we turned around to leave, the pile of junk had spontaneously burst into a nice, but slightly smelly campfire. Clearly this was just another example of a scenario with watercraft, the darkness of night and explosives, made safer by beer.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;The view up close is different, but very good.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=450 src="http://www.zintel.net/blog/Fireworks5.jpg" width=673 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;In most of these photos, it looks reasonably bright on the rock. That's a result of the fact that I was using a combination of time exposures and a flash in the same image. It was pitch dark. In the photo below, the camera self timer tripped the flash just as Doug was putting some distance between himself and the fuse he had just lit. A second later we heard Doug hit the rock and mumble something about a blinding light (paraphrasing from Doug's exact words). Fortunately, Doug, the Maglight and the torch were not damaged. &lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;I'm still struggling to understand how we could have made that scenario safer with beer.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=618 src="http://www.zintel.net/blog/Fireworks9.jpg" width=412 border=0&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=left&gt;&lt;FONT size=3&gt;We did pull off a few synchronized ignitions (a cake and a roman candle) with no injuries.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=450 src="http://www.zintel.net/blog/Fireworks8.jpg" width=675 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;It was a blast.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;As always, the hard part is saying goodbye. Thanks again folks for making us welcome.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=450 src="http://www.zintel.net/blog/Friends.jpg" width=675 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I'm back to work now, and we're wrapping up V2 of the .NET Compact Framework and planning some cool new stuff for V3. Our backwards compatibility, stability and performance are all&amp;nbsp;looking very good. I think you'll like it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;There is still great opportunity on the team for experienced and passionate systems levels people, with expertise in operating systems, compilers, graphics and/or networking.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Check out the video:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;A href="http://www.finalizer.net/"&gt;http://www.finalizer.net&lt;/A&gt;&lt;/P&gt;&lt;FONT size=+0&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;You can be fairly sure Microsoft is not advocating that you take any safety guidance from me.&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=456889" width="1" height="1"&gt;</description></item><item><title>Just Don't Do It</title><link>http://blogs.msdn.com/mikezintel/archive/2005/06/29/433691.aspx</link><pubDate>Wed, 29 Jun 2005 08:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:433691</guid><dc:creator>MikeZintel</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/433691.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=433691</wfw:commentRss><description>&lt;FONT size=3&gt;&lt;/FONT&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I recently had the unenviable task of giving a presentation to the toughest of all audiences, Microsoft developers.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;These are folks who, during the agenda slide, generally ask questions about why the framework is so slow, big, ugly, etc etc. I typically refer them to read some geeky &lt;a href="http://blogs.msdn.com/mikezintel/archive/2005/03/30/403941.aspx"&gt;blog&lt;/A&gt; &lt;a href="http://blogs.msdn.com/mikezintel/archive/2004/12/08/278153.aspx"&gt;posts&lt;/A&gt; and say things like "it's really just fine for the vast majority of applications".&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;This time I decided to use a bit of reverse psychology.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I opened with a story about how, in grade 5, the local fireman gave our class a fire safety talk. They explained that aerosol cans were dangerous. They showed us how to find out which aerosol cans were flammable by reading the warnings on the cans. Then, to drive the point home, they demonstrated that you can light the spray from one of these cans with a lighter and create a &lt;STRIKE&gt;stunning&lt;/STRIKE&gt; dangerous flamethrower.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Then they told us not to do this.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;In grade 5. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=450 src="http://www.zintel.net/Blog/Fire2.jpg" width=600 align=center border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT size=+0&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=433691" width="1" height="1"&gt;</description></item><item><title>From The Dept of Battlebots Built on .NET</title><link>http://blogs.msdn.com/mikezintel/archive/2005/06/07/426285.aspx</link><pubDate>Tue, 07 Jun 2005 16:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:426285</guid><dc:creator>MikeZintel</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/426285.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=426285</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;A href="http://www.finalizer.net"&gt;www.finalizer.net&lt;/A&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=426285" width="1" height="1"&gt;</description></item><item><title>MEDC 2005</title><link>http://blogs.msdn.com/mikezintel/archive/2005/05/24/421290.aspx</link><pubDate>Tue, 24 May 2005 06:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:421290</guid><dc:creator>MikeZintel</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/421290.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=421290</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I'm a bit slower on my MEDC blog than my peers. I'm still using my trusty Nikon F3 while my peers have moved on to some newfangled thing called the "digital camera". I had to wait for a week for the film to come back before I could spend 3 evenings scanning it. For the life of me, I can't understand what's so great about digital cameras.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;One of the Las Vegas A/V crew spotted the Nikon, probably after hearing the signature &lt;I&gt;clang phwaap &lt;/I&gt;of the mirror and shutter during otherwise quiet talks, and after exchanging the secret "film guys with old cameras" handshake, we talked for 20 minutes about our favorite old gear. It was great. I gave him a card with &lt;A href="http://www.zintel.net/"&gt;www.zintel.net&lt;/A&gt; scribbled on the back of it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I've been to Vegas 3 times. The first was during my trip to &lt;a href="http://blogs.msdn.com/mikezintel/archive/2004/12/08/278138.aspx"&gt;California&lt;/A&gt; to visit my dad. I was about 14 and living in rural Nova Scotia. I remember walking up and down the Strip all night, jaw and eyes wide open, gazing at everything. I didn't know it at the time, but that was probably the point where I was committed to leaving Nova Scotia in search of bright flashing lights. Ironic that I ended up in cloudy Washington State, and the Strip, for all its grandeur, has pretty much been flattened and replaced with stuff with way more flashing bright lights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;My next trip was about 10 years later. I was pretty offended by the whole experience that time. I found Vegas to be a spiritually hollow, shallow, uncaring and impersonal place. And all that money, which really should have been collected in taxes to help the poor, was just being wasted. The place was a crude attack on my &lt;A href="http://www.imdb.com/title/tt0066921/"&gt;socially enlightened Canadian sensibility&lt;/A&gt;. In retrospect, I think the real problem was that I was nearly broke, and broke people just shouldn't go to Las Vegas. The real currency of Vegas is, well, real currency. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;This was a great trip. A few of my Canadian friends would explain my new found admiration for Las Vegas in terms of the corrupting influence that America on me. But &lt;A href="http://www.zintel.net/blog/nra.jpg"&gt;I can't believe it&lt;/A&gt; myself.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Everything is Vegas is grand.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Mandalay1.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I like to make sport with my friend and colleague Larry Morris, who runs the Windows CE group, that this was The .NET Compact Framework show. I don't work on operating systems anymore, so I can abstract literally thousands of person-years of work into a single box called "Operating System" and make fun of folks who don't think all day and night about language runtimes.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;To put this in perspective, consider that my team has been working on NET CF for over five years now. It took us a little over three years to release Version 1. This was much longer than we had hoped (and estimated, and committed to our management), and was a long time to go without any customer feedback. Ironically, we're building a tool (an "app", in Larry's mind) to build apps, yet we had very little time and energy left to actually build non-trivial apps. So we guessed what would be important to apps writers, and we did "OK". But nothing works as well as real customer feedback. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Immediately after you release a version 1 product, where your success depends on the successful adoption of an ecosystem of partners (and some competitors), there is an initial burst of activity from early adopters. These are brave folks who just love new stuff, or folks who want to get ahead of the pack. Early adopters always suffer a bit of pain and the send the product team into short term crisis trying to help. The initial burst of feedback and the challenge of fixing problems and making partners successful is pretty exciting, and the product team and customers learn a lot quickly. The product usually evolves quickly. Early adopters kept us busy for about 8 months after we released. Many of these folks were at MEDC, and we are grateful. You can't get started if you can't get started.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;After that wave, there is a disturbing relatively quiet time where each new win requires convincing more conservative decision makers to take a risk. Without a critical mass of already successful cases to point to, this is a lot of work and proceeds slowly. You pretty much sell yourself, your team and your product seemingly without effect for what feels like forever. We are also grateful for every win during this phase, and frankly, things go a little easier for them than the early adopters.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Finally, assuming you on track to win, adoption seems to spike with no apparent catalyst. Previously conservative decision makers become concerned that they will be left behind and see enough wins that they can manage risk appropriately. For us, this phase started around fall of last year and continues to this day. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Concurrent with great adoption, we are preparing to complete, and were talking about Version 2, our "customer feedback release". We pretty much know we got this one right since we basically did built (most of) what customers using the product asked us to build. People were eager to hear about it, because they asked for it. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;While in Vegas, I read &lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/042520135X/qid=1116393883/sr=8-1/ref=pd_csp_1/104-9988156-7783967?v=glance&amp;amp;s=books&amp;amp;n=507846"&gt;Hotel Babylon&lt;/A&gt;. This is the perfect Vegas read, in no small way to let yourself feel morally superior to the ultra rich and famous and in part to excuse any of your own bad behavior. But it also gave me some insight into the logistical complexity of the luxury hotel industry. It made me appreciate the bowl of fresh blueberries, strawberries, raspberries and pineapple that I enjoyed in the middle of the desert quite a bit more and gave me some appreciation for the effort that people put into making the stay comfortable.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I would like to share two moments that I experienced there. I worked on the original Windows CE product in 1994. We dreamed of all the cool mobile scenarios and cool devices we would be enabling. But we developed on big, slow prototype boards with small dim screens.&amp;nbsp; When I finally saw the first real device, it was big and slow and had a small dim screen. I decided I didn't have the patience to wait any Moore and moved to work on the PC. But the iMate JAM was pretty close to the device I was dreaming about, and I was holding a real one in Las Vegas. I was in awe of Microsoft's stamina to see things to success. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Second, I asked one of our MVPs, Alex Feinman, who gave a great talk on COM interop, if he was happy with our quality. His response, "it's nice to use stuff that works", made me very happy. We don't talk about quality in public too much because frankly, you should just expect it. But we do work very hard to make sure that the platform is solid, correct, compatible and as bug free as possible. This process starts early in the cycle with good written design and peer review, ongoing automated correctness , stress, performance and application compatibility testing for all features, beta and early adopter feedback and a post-mortem after each release and after a serious bug slips through the process. It's a lot of work, and it makes us happy to hear that you can trust the product. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Alex.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;COM interop frightened me from the beginning. COM is an evolutionary technology, which means that there is no definitive specification to code and test against. The team really wanted to provide advanced features such as ActiveX hosting, but I dragged my feet. I wanted us to take smaller steps and be sure the technology was solid before expanding the scope. Well, things don't always go as planned ...&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/AxHost.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Alex demonstrated hosting a Macromedia Flash player as a Windows Forms control. I have to admit, it was cool. Damn cool.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Bill was there.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Bill.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;But I think that Bill was overshadowed by the .NET Compact Framework demos.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Seth1.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Seth2.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=396 src="http://www.zintel.net/blog/Neil.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;My team missed the Blue Man group. I heard that it was very good. We went to Penn and Teller instead, which was also good.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/TheCrew.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike M got us tickets. Mike seemed to know his way around Vegas pretty good, and was a great host. Mike is on one of the folks who you don't see much, but plays a critical role in making your experience productive by writing the code that makes the remote debugger work. Tricky stuff too. Mike got the good room.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=600 src="http://www.zintel.net/blog/Mandalay2.jpg" width=400 border=2&gt; &lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;After Pen and Teller, we decided to walk from the Rio back to the Mandalay Bay. We could see the Mandalay in the distance so we just started walking toward it. After about a half hour of walking, we could still see the Mandalay Bay, but it wasn't getting any bigger, or closer. We got fooled by the fact that everything in Vegas is grand. It turned out that the walk was long but great. There's lots of bright flashing lights to look at on the Strip.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/TheStrip.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;An unexpected bonus for me was the fountain outside of the Bellagio. This thing was just mesmerizing. We went back the next night, playing a cool game we invented called drink a beer, watch the fountain, go in for a beer, back out to watch the fountain. At least I think we invented it. The fountain cycles at 10 minute intervals. It's a fun game.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Bellagio.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Chris Muench, another MVP, showed how to write a D3D Mobile game in managed code. I gave the team a goal to make sure that C# was as good a choice as C++ for writing DX games on devices. Since Chris has the coolest game around, I'm assuming they have have been successful.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/ChrisM.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Chris Tacke shared his experience getting OpenNETCF bootstrapped. Chris refused to even step into the photo enabling &lt;I&gt;light&lt;/I&gt; for even a moment. It took me half an hour on Photoshop just to get it this good.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Chris.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Scott gave a talk on NET CF memory management. Scott explained all the work we do on your behalf so you don't have to worry about memory.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Scott1.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=600 src="http://www.zintel.net/blog/Scott2.jpg" width=400 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Roman gave a great talk on .NET Compact Framework performance engineering. He explained that if you aren't worrying about memory, you just aren't doing it. Roman got the best score for a new speaker. We knew Roman was a great engineer but we were pleasantly surprised to learn that he is a great motivational speaker too.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Roman1.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Roman2.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I love this one. We just get faster, and faster, and faster. And we're not done yet.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/PerfWayUp.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Last but far from least, Mark and David gave a great talking on debugging applications. This was the last talk of the show, and they packed the room.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/MarkAndDavid2.jpg" width=600 border=0&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/MarkAndDavid3.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/MarkAndDavid1.jpg" width=600 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Thanks for helping us make NET CF great.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=400 src="http://www.zintel.net/blog/Friend.jpg" width=600 border=2&gt;&lt;/P&gt;&lt;FONT size=+0&gt;
&lt;P class=MsoNormal&gt;Mike.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=421290" width="1" height="1"&gt;</description></item><item><title>Blogging Because I'm Not Speaking at MEDC</title><link>http://blogs.msdn.com/mikezintel/archive/2005/05/04/414732.aspx</link><pubDate>Wed, 04 May 2005 22:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:414732</guid><dc:creator>MikeZintel</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/414732.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=414732</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Daniel Moth sent me a note telling me that he would be at MEDC (great news), and that he was looking forward to my "talk". I want to set expectations here. I'm on a panel. I'm taking my cue from Jonny Moseley on&lt;A href="http://easyreader.hermosawave.net/news1999/1202/warren%20miller.html"&gt; Warren Miller's Fifty&lt;/A&gt;, when he introduces a freestyle event: "This is how we get it done these days. It's much too dangerous for me to actually be out there".&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;A panel is what you sign up for when you are too tired [ frightened | unprepared ] to do a talk, but you want to get a cool shirt.&amp;nbsp;I'm actually honored to be on a panel. It seems only yesterday I was skipping school and firing home made potato(e) guns from inside an abandoned railway car, and now I'm on a panel. Cool.&lt;FONT size=+0&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The only reason I have time to write this is because folks I work with are sweating it out right now, reviewing their slides, practicing in front of mirrors, taking conflicting advice from lots of people on the manner of their speech, posture, dress, font size, etc etc. My job is to wander into their offices, and give them advice on the manner of their speech, posture, dress and font size. It's a good job.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Be sure and check out the talks by Richard Greenberg, &lt;a href="http://blogs.msdn.com/romanbat"&gt;Roman Batoukov&lt;/A&gt;, &lt;a href="http://blogs.msdn.com/scottholden"&gt;Scott Holden&lt;/A&gt;, &lt;a href="http://blogs.msdn.com/davidklinems"&gt;David Kline&lt;/A&gt; and Mark Ihimoyan from my team.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I'm excited about MEDC. You have made the .NET Compact Framework a pretty hot topic. Seth Demsey and Neil Enns will be on stage with Bill at the keynote and they're going to show off some cool stuff.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I've been involved in some preparation for the panel. The general theme is around helping explain what tool is best for what job. Frankly, I'd prefer if the panel format was such that I just asked you questions on this topic. We've effectively built a toolkit with the .NET Compact Framework, with an almost dizzying numbers of choices. I'll defend this, given that there are lots of different programming problems, solutions, and even skills sets, conceptual models and biases about the best way to solve a given problem.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;That said, I'm struggling to think about how I would position the following technologies, all of which we support today:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;FONT size=3&gt;Relational tables, transactions and networked replication at the SQL-Mobile level; including data-binding to GUI elements&lt;/FONT&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;FONT size=3&gt;Relational tables, as ADO.NET DataSets, serialized and transmitted over network via web services&lt;/FONT&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;FONT size=3&gt;Hierarchical data, stored and manipulated as XML and the XML class libraries&lt;/FONT&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;FONT size=3&gt;Programming language objects, serialized to the file system, moved across the network via web services and data bound to GUI elements&lt;/FONT&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;FONT size=3&gt;Simple remote method calls over web services&lt;/FONT&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;FONT size=3&gt;“Push replication” via an ActiveSync file copy between a Windows PC and device&lt;/FONT&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;FONT size=3&gt;Low level network access&lt;/FONT&gt;&lt;/DIV&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal&gt;&lt;FONT size=3&gt;Store and forward messaging via System.Messaging/MSMQ&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I look forward to talking to folks at MEDC to learn what works in the real world (i.e. outside Redmond - I've seen it on several vacation trips).&lt;/P&gt;
&lt;P class=MsoNormal&gt;It never hurts to get noticed by &lt;a href="http://blogs.msdn.com/somasegar/archive/2005/05/03/414485.aspx"&gt;the boss&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I had mentioned in a &lt;a href="http://blogs.msdn.com/mikezintel/archive/2005/02/03/366662.aspx"&gt;previous post&lt;/A&gt; that we were thinking about the problem of transiently connected networks for our next release. We're still thinking about it, most recently about the importance of addresses.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;People focused on networking technology (like me) tend to under-appreciate the importance of addresses to customer adoption of a solution. Addresses are the proxies that people use to identify other people or organizations. Key qualities of great address, for a large network, are discoverability, lifespan and administration. Phone numbers are examples of addresses that are highly discoverable, stable for a long length of time and formally administered by an organization. Instant messaging addresses are slightly less discoverable, stable enough and created ad-hoc with formalized collision detection. URLs and email addresses are the two other very successful addresses, both with distributed administration and collision avoidance schemes.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The other critical quality of an address is the number of addressable endpoints. Phone numbers are excellent in this regard. Any one of over 1 billion landline and 1 billion wireless phones can address any other phone, simply by knowing a phone number. Those of us from the PC networking and Internet world often marvel at the continued success of SMS text messages, given their very high cost, limited bandwidth and boring user experience. Yet no other technology offers a set of addresses, and associated underlying protocols, with the qualities that customers value.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;It sometimes comes as surprise that phone numbers could be superior to any one of several addresses used on the Internet. Despite the technical elegance of the basic TCP/IP machine address / application address, IP addresses are nearly useless to customers. While the shortage of V4 addresses has received considerable attention, the impact that the various techniques to work around this problem (DHCP, PPP, NAT) have had on the inherent peer to peer nature of the TCP/IP is underappreciated. The modern internet consists of a &lt;I&gt;relatively&lt;/I&gt; small number of machines that have fixed addresses and a much larger number of machines that have very short lived addresses that are reused from a pool. The IP address of the latter group of machines is effectively useless as an endpoint address, doing little more than satisfying the technical need for a legal local address in a purely “connect out” environment.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Various dynamic name server technologies, like DNS and WINS can hide transient addresses behind a name with a longer lifespan. This is not likely to ever be practical on an Internet scale, but works fine for isolated networks within organizations. The effect of this is to create many new address spaces, with similar looking addresses but no interoperation among them.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;URLs, since they build of DNS names, suffer from the same disadvantages. The URL space is extremely large and flexible, but it is difficult or impossible for me to offer you a URL that you can reliably address on my corporate machine, home or PocketPC.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;IPV6 may eventually solve this, by assigning everyone an address with the qualities of a phone number. Dynamic DNS servers and/or distributed name resolution algorithms will make these addresses friendlier to humans. Unfortunately, the rollout of IPV6 to internet or phone system scale is a many year exercise, and even when the IP address space is suitability discoverable and long lived corporate security concerns almost guarantee that true peer-to-peer connectivity between any two machines in the world will never happen.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;There is set of business and technical issues around mobile devices and operators that also impede true TCP/IP level peer connectivity. It is reasonable to plan for the vast majority of devices to be connect out only at the lower layers. A peer to peer user experience will almost certainly have to be created by using “relay servers”, like mail and instant messaging do today.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Anyway, the main thing this thought exercise has reinforced for me is that I have to hire some people, smarter, and harder working than me, so I can slack off and shoot potato guns. If you're interested, contact me at &lt;A href="mailto:mikezin@microsoft.com"&gt;mikezin@microsoft.com&lt;/A&gt;. We're also look for hotshot graphics engineers too. If no one applies, you'll just have to use whatever stuff I can think up.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Finally, &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I was late for work this morning. After my family left in the morning, and then my immediate neighbors left, I cranked the volume up to 11 and watched Mike Oldfield's Art in Heaven DVD. If you like Mike Oldfield, or progressive rock, this is a great disk. The concert was New Year's Eve in Berlin, and it makes me sad that I was huddled in the basement retesting the generator and checking the fresh water supply. But before you take musical advice from me, consider that I can lay down Pink Floyd, Pet Shop Boys, Al Stewart, B-52s, Neil Diamond and The Irish Rovers on the same tape (electro-mechanical playlist like thing) and think it sounds &lt;I&gt;pretty good&lt;/I&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;See you in Las Vegas.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;Mike.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=414732" width="1" height="1"&gt;</description></item><item><title>From the Dept of Information Retrieval on .NET Compact Framework Network Performance</title><link>http://blogs.msdn.com/mikezintel/archive/2005/03/30/403941.aspx</link><pubDate>Thu, 31 Mar 2005 02:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:403941</guid><dc:creator>MikeZintel</dc:creator><slash:comments>19</slash:comments><comments>http://blogs.msdn.com/mikezintel/comments/403941.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mikezintel/commentrss.aspx?PostID=403941</wfw:commentRss><description>&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;"How fast is the .NET Compact Framework?"&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I have only recently organized enough thoughts and words to be able to answer this question with something more useful than "it depends".&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The .NET Compact Framework, in the vast majority of cases, is fast enough. I know this because I've seen lots of complex applications running on the platform that are scalable and snappy. I've also seen apps that are dog slow. I used to claim that RPC's downfall was that it isolated the developer from the network but did not isolate the customer from the network. In a similar way, I fear we've isolated, or perhaps just delayed, developers from the pain of running on transiently connected, resource constrained hardware with lots of data and other apps running. Developing for devices, using any tool, is still a specialty. It's clear to me that we need to get faster (and we are), but we also need to do a better job at providing tools that give better visibility into the dynamic behavior of the system. Equally important, we need to provide some architectural guidance around best and worst practices ("don't read from a local table, convert to XML, serialize and send to another process via IPC, read into the DOM, modify it, pass it back, ..."). And finally I'm counting on the wider community to help us, and the community, to understand what works and what doesn't in practice and what we need to fix.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;We presented the following information at a recent internal project review. I hope you'll be happy with the gains we've made to date and the work continues.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=599 src="http://www.zintel.net/Blog/NETCFPerfProgress.jpg" width=800 align=center border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;But this post isn't about the performance of the .NET Compact Framework, exactly. Lately, people, sensing that I'm feeling somewhat confident about general performance, have started asking me "How fast is networking with the .NET Compact Framework?"&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;"It depends."&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I've like to be able to write an entry about networking performance with lots of &lt;a href="http://blogs.msdn.com/mikezintel/archive/2004/12/08/278153.aspx"&gt;tables of numbers and details and stuff&lt;/A&gt;. But I don't have the numbers. But I think I can do better than this &lt;a href="http://blogs.msdn.com/mikezintel/archive/2004/12/14/284238.aspx"&gt;post about nothing&lt;/A&gt;. I'm still trying to think up a way to plug my web site. I haven't thought of anything clever yet.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;But I am prepared to ramble on for a while about a few things I've learned about the general problem of network performance. We will get better at specific measurements in the future. If you have better data, please share it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Let's start with simple model of two boxes connected via a serial bus with hardware flow control. The bus has a fixed maximum throughput, measured in bits per second. The bus will deliver data to the destination as fast, but no faster, than the target can receive it. The sender can just push bits out the bus as fast as they will be accepted by both the bus and the target computer. The test app has a loop that generates blocks of data that repeat the sequence &lt;A href="http://www.zintel.net/"&gt;www.zintel.net&lt;/A&gt; and sends them to the bus. The receiver consumes and discards the messages as they are received.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The first thing we would likely measure on this setup is the overall throughput; how many bytes / second can we move between the machines? Let's say we're not happy with the result and we want to start optimizing. Where should we start? The first step is to isolate the bottleneck. In this case, either the pipe is at capacity, the sender can't fill the pipe, or the receiver can't empty it. Working on the wrong thing will have no effect at all on the performance. The first easy check is CPU utilization at each end. If it's low, then the pipe is likely the bottleneck, or &lt;U&gt;there's a timer somewhere&lt;/U&gt; in the code path that is not allowing the CPU to fill the pipe. If it's close to 100% at either end, then that is the place to start optimizing.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;It's quite helpful to do some "order of magnitude" math to see if the measured results are in any way reasonable. Let's say we assume both machines above have a clock rate of 1 billion instructions per second (1 GHz) and the serial bus has a rate of 100Mbit/s. The serial bus throughput in bytes / sec is roughly bits/s / 10, or 10 Mbyte/s.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0&gt;




&lt;TR&gt;
&lt;TD&gt;Bus Rate Bits/s&lt;/TD&gt;
&lt;TD align=right&gt;100,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Bus Rate Bytes/s (/10)&lt;/TD&gt;
&lt;TD align=right&gt;10,000,000&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Let's assume that the sending machine requires 10 machine instructions, per byte,&amp;nbsp;to generate the formatted &lt;A href="http://www.zintel.net/"&gt;www.zintel.net&lt;/A&gt; data buffers, and that the cost to send through the driver stack is 5 instructions / byte. With this information we can calculate the number of machine instructions that will be consumed by all net processing on the send side per second.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0&gt;




&lt;TR&gt;
&lt;TD&gt;Instructions / Byte - Data Manipulation&lt;/TD&gt;
&lt;TD align=right&gt;10&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Instructions / Bytes - Send/Recv Path&lt;/TD&gt;
&lt;TD align=right&gt;5&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Total Instructions / Second&lt;/TD&gt;
&lt;TD align=right&gt;150,000,000&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Since we know the clock rate of the machines, we can calculate the amount of processor load on the sending machine devoted to networking. In this case, it's 15%.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0&gt;




&lt;TR&gt;
&lt;TD&gt;CPU Clock Rate / Second&lt;/TD&gt;
&lt;TD align=right&gt;1,000,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CPU Utilization&lt;/TD&gt;
&lt;TD align=right&gt;15%&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Clearly the bus is easily going to be saturated. The receiver is even more lightly loaded, as it is simply discarding the incoming bytes.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0&gt;




&lt;TR&gt;
&lt;TD&gt;Bus Rate Bits/s&lt;/TD&gt;
&lt;TD align=right&gt;100,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Bus Rate Bytes/s (/10)&lt;/TD&gt;
&lt;TD align=right&gt;10,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Instructions / Byte - Data Manipulation&lt;/TD&gt;
&lt;TD align=right&gt;0&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Instructions / Bytes - Send/Recv Path&lt;/TD&gt;
&lt;TD align=right&gt;5&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Total Instructions / Second&lt;/TD&gt;
&lt;TD align=right&gt;50,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CPU Clock Rate / Second&lt;/TD&gt;
&lt;TD align=right&gt;1,000,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CPU Utilization&lt;/TD&gt;
&lt;TD align=right&gt;5%&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Data compression would be a great optimization in the case. Assume that we count compression as an additional 25 instructions / byte on each side, and we achieve a 25% compression rate. For the sending side (the bottleneck), the math looks like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0&gt;




&lt;TR&gt;
&lt;TD&gt;Bus Rate Bits/s&lt;/TD&gt;
&lt;TD align=right&gt;100,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Bus Rate Bytes/s (/10)&lt;/TD&gt;
&lt;TD align=right&gt;10,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Instructions / Byte - Data Manipulation&lt;/TD&gt;
&lt;TD align=right&gt;35&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Instructions / Bytes - Send/Recv Path&lt;/TD&gt;
&lt;TD align=right&gt;5&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Total Instructions / Second&lt;/TD&gt;
&lt;TD align=right&gt;400,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CPU Clock Rate / Second&lt;/TD&gt;
&lt;TD align=right&gt;1,000,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CPU Utilization&lt;/TD&gt;
&lt;TD align=right&gt;40%&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The sender processor utilization is still only 40%, but the effective throughout of the system has increased by 25%, or 25Mbytes/s.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;It's interesting to do this math on a 56KBits/s link and a 200 MHz processor, not unlike what you might see on a PocketPC on a (most excellent) GPRS network.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0&gt;




&lt;TR&gt;
&lt;TD&gt;Bus Rate Bits/s&lt;/TD&gt;
&lt;TD align=right&gt;56,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Bus Rate Bytes/s (/10)&lt;/TD&gt;
&lt;TD align=right&gt;5,600&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Instructions / Byte - Data Manipulation&lt;/TD&gt;
&lt;TD align=right&gt;250&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Instructions / Bytes - Send/Recv Path&lt;/TD&gt;
&lt;TD align=right&gt;10&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Total Instructions / Second&lt;/TD&gt;
&lt;TD align=right&gt;1,456,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CPU Clock Rate / Second&lt;/TD&gt;
&lt;TD align=right&gt;200,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CPU Utilization&lt;/TD&gt;
&lt;TD align=right&gt;1%&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I had to crank up the instruction / byte count to about 250 before I could get a 1% processor load. Clearly, compression is going to help, and CPU utilization is not a&amp;nbsp;major concern.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;If I substitute a 10Mhz LAN in the same system and don't change anything else, the processor can't even keep the pipe full. Focusing on the overall code path length / byte is the right optimization in this case. It's conceivable that expansion, say, by always sending the same block size, might even help (and be a disaster in the previous case).&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0&gt;




&lt;TR&gt;
&lt;TD&gt;Bus Rate Bits/s&lt;/TD&gt;
&lt;TD align=right&gt;10,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Bus Rate Bytes/s (/10)&lt;/TD&gt;
&lt;TD align=right&gt;1,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Instructions / Byte - Data Manipulation&lt;/TD&gt;
&lt;TD align=right&gt;250&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Instructions / Bytes - Send/Recv Path&lt;/TD&gt;
&lt;TD align=right&gt;10&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Total Instructions / Second&lt;/TD&gt;
&lt;TD align=right&gt;260,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CPU Clock Rate / Second&lt;/TD&gt;
&lt;TD align=right&gt;200,000,000&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;CPU Utilization&lt;/TD&gt;
&lt;TD align=right&gt;130%&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The next thing to consider is the size of transfers, as effective throughput x transfer size generally equals customer foot tapping delay, with a threshold of between 10-30 seconds generating a customer support call.&lt;/FONT&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=0&gt;






&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;4800&lt;/TD&gt;
&lt;TD&gt;56K&lt;/TD&gt;
&lt;TD&gt;10M&lt;/TD&gt;
&lt;TD&gt;1G&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1K&lt;/TD&gt;
&lt;TD align=right&gt;2s&lt;/TD&gt;
&lt;TD align=right&gt;0.18s&lt;/TD&gt;
&lt;TD align=right&gt;0.001s&lt;/TD&gt;
&lt;TD align=right&gt;0.00001s&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;100K&lt;/TD&gt;
&lt;TD align=right&gt;208s&lt;/TD&gt;
&lt;TD align=right&gt;18s&lt;/TD&gt;
&lt;TD align=right&gt;0.1s&lt;/TD&gt;
&lt;TD align=right&gt;0.001s&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;100M&lt;/TD&gt;
&lt;TD align=right&gt;208333s&lt;/TD&gt;
&lt;TD align=right&gt;17857s&lt;/TD&gt;
&lt;TD align=right&gt;100s&lt;/TD&gt;
&lt;TD align=right&gt;1s&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The key thing to note here is that at the bottom end (like on, say,&amp;nbsp;GPRS networks), data size has a huge effect on responsiveness.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Finally, it's worth considering latency separately from throughput. You might expect the time it would take (in seconds) to send a single byte would be equal to 1 / effective bandwidth. In practice, multiple different protocol layers add extra bytes as envelope, and the entire package needs to be delivered before the single byte can be processed.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;I'm going to break one of my strongly held principals, "measure twice and cut once", and speculate about where I think the .NET Compact Framework is going to "net out" on networking performance today.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;IMG height=450 src="http://www.zintel.net/blog/MikeCuttingDrywall.jpg" width=300 border=2&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;At the managed sockets level, the .NET Compact Framework doesn't add much processor overhead to the code path. If you replicated the simple two box and water pipe test above, even in&amp;nbsp;the CPU bound case, I would &lt;I&gt;expect&lt;/I&gt; we would be reasonably close to a native C++ solution. In the real world, of course, developers like do interesting and useful things with data, and that takes processor time. As the amount of C# processing increases, the delta between managed code performance and C++ will increase. I can imagine a worst case scenario (say, a fully loaded database engine written entirely in .NET Compact Framework - something I wouldn't recommend doing) where we're 50% slower. Fortunately we are not generally CPU bound in most real world networking scenarios today.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;In the more typical slow network / fast CPU case, at the managed sockets level, I expect there is also little cost of choosing C#. You would have to do a great deal of data processing to create a situation where the processor couldn't keep up with the network.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;From both a throughput and latency perspective, web services changes the equation. The thing that makes web services great for real world interop, text readable messages, also adds considerable envelope size to the data. Swapping out managed sockets for web services, in the fully loaded, CPU bound case, would likely drop your performance considerably.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The best way to decide what technology to use is to try a simple test prior to writing lots of code. The key is to make sure the test scenario is representative of the ultimate configuration. If you develop a client / server app that, for example, requires a server round trip to validate every field, then latency is going to be a key issue. Be sure and try this on a slow network. But if you are downloading, say high scores, or small maps, then the convenience of web services might outweigh then envelope cost, even on the slow network,&amp;nbsp; and will be in the noise on a fast network.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;As compared to the bus scenario above, TCP/IP adds another level of complexity. Where a bus can be conceptualized as a water pipe, a TCP/IP connection looks more like a water pipe, feeding a pressure tank, with dozens of different size pipes coming off on it, some of which feed an outdoor fountain, which drains into a sump, which elevates the water to a dozen gravity feed storage tanks, each with dozens of different size pipes coming off on it ... Frankly, I'm amazed the thing works at all. The "backpressure" on a TCP sender is essentially a heuristic on the send side about how fast the network, end to end, can deliver packets. If the network delivers IP packets in roughly constant time, and damages or drops few of them, then TCP will stabilize at a relatively efficient transfer rate. If the packet delay is changing widely, the error rate high or constantly changing, then TCP will become confused, thinking that it is overwhelming the network, and will throttle back the send rate. The bad news is that there is nothing you can do about this. The good news is that the TCP vendors, us included, are always working to optimize this.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The reason I bring this up is that it can bite you on GPRS, and result in 50% decreases in throughput and corresponding increases in latency. At some point, you need to switch your application to a store and forward model / database replication model, where the UI is essentially a view on the local data, and an asynchronous replication engine periodically tries its best to keep the local and remote databases in sync.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;The speed of your "first hop" TCP/IP network connection usually doesn't have much to do with the effective bandwidth, unless it is the slowest link (like, say, GPRS, for example).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;If you are using TCP, learn about NAGLE. If you introduce any stop and wait behavior in your system, be wary of the huge effect on throughput (but not latency) that that can have.&lt;/P&gt;
&lt;P class=MsoNormal&gt;I'm getting ready to go to MEDC in Las Vegas. I cut myself a pretty good deal this year. I'm on a panel discussion, which gets me one of those cool "speaker shirts", but I'm not giving a talk, which takes lots of preparation and frankly scares me silly. Both my team and some our MVPs are working on new material for the show. I look forward to seeing you there.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;"We're all in this together".&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;FONT size=3&gt;Mike.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&lt;FONT size=3&gt;This posting is provided "AS IS" with no warranties, and confers no rights.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=403941" width="1" height="1"&gt;</description></item></channel></rss>