<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">PaulWh's Tech Blog</title><subtitle type="html">Various thoughts and tips on the technology I work with</subtitle><id>http://blogs.msdn.com/paulwh/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/paulwh/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/paulwh/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2006-12-19T23:14:00Z</updated><entry><title>Writing a DHCP Server for Windows</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/paulwh/archive/2007/12/08/windows-dhcp-server.aspx" /><id>http://blogs.msdn.com/paulwh/archive/2007/12/08/windows-dhcp-server.aspx</id><published>2007-12-09T04:54:00Z</published><updated>2007-12-09T04:54:00Z</updated><content type="html">&lt;P&gt;I recently got fed up with an issue with the extremely lame Actiontec router that is build into every Qwest DSL modem. The issue basically has to do with how the NAT port forwarding was being performed. Packets sent to my external IP address from inside the local LAN were being dropped instead of forwarded. Since I host several services on a server inside my home network, and I have a laptop that is regularly connected inside and outside my home network this was a source of much frustration.&lt;/P&gt;
&lt;P&gt;My initial workaround was to set up an internal DNS server. Using the Internet Software Consortium's &lt;A class="" title="ISC BIND" href="http://www.isc.org/index.pl?/sw/bind/index.php" mce_href="http://www.isc.org/index.pl?/sw/bind/index.php"&gt;BIND&lt;/A&gt; dns server, I created hard coded dns entries for my external domain name, so that my connections would go straight to my server's LAN IP rather than the public IP. All I had to do was configure my router to use my DNS server as the primary when clients requested one via DHCP. Unfortunately, after making this change, rebooting the router, running ipconfig /release and ipconfig /renew; low and behold, my client doesn't get the right DNS server (curse you Actiontec, curse you all to hell).&lt;/P&gt;
&lt;P&gt;So then next step became setting up an alternate DHCP server that I could configure properly. Unfortunately my "server" runs Windows Vista Ultimate, and after doing some research online I concluded that unless you're running Linux/Unix/BSD, or Windows Server, your only choice is to use Internet Connection Sharing, which doesn't really meet my needs since it isn't very configurable, and it sets the box up as an internet gateway, which I don't want it to be. I considered using cygwin to build &lt;A class="" href="http://www.isc.org/index.pl?/sw/dhcp/index.php" mce_href="http://www.isc.org/index.pl?/sw/dhcp/index.php"&gt;ISC DHCP&lt;/A&gt;, but I didn't really want to go to the trouble of running cygwin just so I could have a DHCP server. Finaly I decided, what the hell, there are only four different messages making up the critical&amp;nbsp;piece of&amp;nbsp;the DHCP protocol, surely I can implement this in less time than it's taken me to get this far.&amp;nbsp;Five&amp;nbsp;long nights later, as a sit writing this post, my DHCP server is up and running on my home network.&lt;/P&gt;
&lt;P&gt;Writing it was an interesting experience. It was the first UDP socket application I'd written (I'd only written TCP apps before). The &lt;A class="" href="http://en.wikipedia.org/wiki/DHCP" mce_href="http://en.wikipedia.org/wiki/DHCP"&gt;Wikipedia article&lt;/A&gt; was a huge help, and I'm indebted to the contributors who took the time to digram the message structures and sequences in a much more readable way than the &lt;A class="" title="RFC 2131" href="http://tools.ietf.org/html/rfc2131" mce_href="http://tools.ietf.org/html/rfc2131"&gt;RFCs&lt;/A&gt;. The did he final debugging by sniffing the traffic between a PC and my router during a DHCP exchange, which led me to discover that "network byte order" is big endian, not little endian like windows PCs, and that the "magic number" used to indicate the start of the options section is listed incorrectly on wikipedia (something I hope to remedy).&lt;/P&gt;
&lt;P&gt;Anyway, I've created a community &lt;A class="" title="WinDhcp on Codeplex" href="http://www.codeplex.com/windhcp" mce_href="http://www.codeplex.com/windhcp"&gt;WinDhcp&lt;/A&gt; project on Codeplex, so if you want to see the source code, download the binaries, or contribute new code/bug fixes, please check it out.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6710473" width="1" height="1"&gt;</content><author><name>paulwh</name><uri>http://blogs.msdn.com/members/paulwh.aspx</uri></author><category term="Dynamic Host Configuration Protocol" scheme="http://blogs.msdn.com/paulwh/archive/tags/Dynamic+Host+Configuration+Protocol/default.aspx" /><category term="DHCP" scheme="http://blogs.msdn.com/paulwh/archive/tags/DHCP/default.aspx" /><category term="Server" scheme="http://blogs.msdn.com/paulwh/archive/tags/Server/default.aspx" /><category term="Windows" scheme="http://blogs.msdn.com/paulwh/archive/tags/Windows/default.aspx" /><category term="C#" scheme="http://blogs.msdn.com/paulwh/archive/tags/C_2300_/default.aspx" /><category term="Network" scheme="http://blogs.msdn.com/paulwh/archive/tags/Network/default.aspx" /></entry><entry><title>AddressAccessDeniedException: HTTP could not register URL http://+:8080/&lt;…&gt;.</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/paulwh/archive/2007/05/04/addressaccessdeniedexception-http-could-not-register-url-http-8080.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="601086" href="http://blogs.msdn.com/paulwh/attachment/2416236.ashx" /><id>http://blogs.msdn.com/paulwh/archive/2007/05/04/addressaccessdeniedexception-http-could-not-register-url-http-8080.aspx</id><published>2007-05-05T01:04:00Z</published><updated>2007-05-05T01:04:00Z</updated><content type="html">&lt;P&gt;A while back, when I was first doing WCF development I ran into the following exception:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;EM&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.addressaccessdeniedexception.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.servicemodel.addressaccessdeniedexception.aspx"&gt;AddressAccessDeniedException&lt;/A&gt;: HTTP could not register URL http://+:8080/&amp;lt;…&amp;gt;.&amp;nbsp; Your process does not have access rights to this namespace.&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The exception message included a link to an &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/ms733768.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms733768.aspx"&gt;MSDN article&lt;/A&gt; that explained the concept of HTTP Namespace Reservations. Unfortunately the page suggests using an outdated, and not very user friendly tool called HttpCfg.exe to set up the namespace reservations. Even more unfortunate is the fact that this tool requires the user to enter a &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/aa379567.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa379567.aspx"&gt;Security Descriptor Definition Language&lt;/A&gt; (SDDL) string by hand. Now, while I do enjoy the fact that I can now consider myself a member of the relatively small club of people that can read and write SDDL strings, this was not something I was especially excited about taking time away from the project at hand to do. Unfortunately search for help on the internet yielded more hurt than help.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;What Not To Do&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Upon performing my internet search, I ran straight into Mark Michaelis' post &lt;A class="" href="http://mark.michaelis.net/Blog/WindowsCommunicationFoundationWithWindowsVistaAndUAC.aspx" mce_href="http://mark.michaelis.net/Blog/WindowsCommunicationFoundationWithWindowsVistaAndUAC.aspx"&gt;Windows Communication Foundation with Windows Vista and UAC&lt;/A&gt;. Now, generally speaking, I like Mark a lot, and he post a lot of good stuff on his blog. However, I am ethically opposed to what he is suggesting in his blog. Adding a manifest to your app to force elevation in Windows Vista is absolutely not what you should do! If you have a web serivce that has to run as Administrator then you are doing something wrong. In fact I hope you aren't even running as an Administrator account when you're developing (although aparently the Visual Studio team &lt;A class="" href="http://msdn2.microsoft.com/en-us/vstudio/aa972193.aspx" mce_href="http://msdn2.microsoft.com/en-us/vstudio/aa972193.aspx"&gt;doesn't agree with me&lt;/A&gt;).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;What To Do&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;EM&gt;Option 1:&lt;/EM&gt; If you're on Windows Vista, you can use &lt;A class="" href="http://technet2.microsoft.com/WindowsServer/en/library/fd1e2fbe-15a6-413b-b712-28afb312c92f1033.mspx?mfr=true" mce_href="http://technet2.microsoft.com/WindowsServer/en/library/fd1e2fbe-15a6-413b-b712-28afb312c92f1033.mspx?mfr=true"&gt;netsh&lt;/A&gt;. Nicholas Allen has &lt;A class="" href="http://blogs.msdn.com/drnick/archive/2006/10/16/configuring-http-for-windows-vista.aspx" mce_href="http://blogs.msdn.com/drnick/archive/2006/10/16/configuring-http-for-windows-vista.aspx"&gt;details on his blog&lt;/A&gt;, as does &lt;A class="" href="http://kennyw.com/indigo/145" mce_href="http://kennyw.com/indigo/145"&gt;Kenny Wolf&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;EM&gt;Option 2:&lt;/EM&gt; If you're not on Vista, or you want to set permissions as part of the setup process, take a look at the source code Keith Brown has &lt;A class="" href="http://pluralsight.com/blogs/keith/archive/2005/10/17/15632.aspx" mce_href="http://pluralsight.com/blogs/keith/archive/2005/10/17/15632.aspx"&gt;posted on his blog&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;EM&gt;Option 3:&lt;/EM&gt; If you want a GUI based on C# code similar to that on Keith's blog, with a more flexible SDDL object model, then check out my tool,&amp;nbsp;HttpNamespaceManager. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;HttpNamespaceManager&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri size=3&gt;This is &lt;STRONG&gt;not&lt;/STRONG&gt; an official Microsoft tool, and should be considered sample code (see disclaimer below).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri size=3&gt;HttpNamespaceManager&amp;nbsp;is available&amp;nbsp; as either source code or an executable (both are in the &lt;A class="" href="http://blogs.msdn.com/paulwh/attachment/2416236.ashx" mce_href="http://blogs.msdn.com/paulwh/attachment/2416236.ashx"&gt;attached zip file&lt;/A&gt;). It is licensed under the creative commons attribution license and is free to use, modify, and redistribute for commercial or non-commercial purposes. The project is divided into an API for managing HTTP Namespaces, including an object model for ACLs and Security Descriptors, and a UI with automatic elevation in Windows Vista for operations that require administrative privledge.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Calibri size=3&gt;Requires &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en"&gt;.Net Framework&amp;nbsp;3.0&lt;/A&gt; to run. Visual Studio 2005 &amp;amp; .Net Framework 3.0&amp;nbsp;to build.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;IMG title="Http Namespace Manager" style="WIDTH: 332px; HEIGHT: 332px" height=332 alt="Http Namespace Manager" src="http://blogs.msdn.com/photos/paulwh/images/2416734/original.aspx" width=332 mce_src="http://blogs.msdn.com/photos/paulwh/images/2416734/original.aspx"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;This screen shot shows the start page of the Http Namespace Manager. All of the actions (Add/Edit/Remove) require elevation. Double clicking an item is the same as clicking the Edit button. The Remove button removes the entry permanently and without confirmation, so use caution.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;IMG title="Http Namespace Manager - Add" style="WIDTH: 413px; HEIGHT: 332px" height=332 alt="Http Namespace Manager - Add" src="http://blogs.msdn.com/photos/paulwh/images/2416754/original.aspx" width=413 mce_src="http://blogs.msdn.com/photos/paulwh/images/2416754/original.aspx"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;When the Add button is clicked an input box is displayed in which the HTTP Namespace URL should be entered.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;A class="" href="http://blogs.msdn.com/photos/paulwh/images/2416763/original.aspx" mce_href="http://blogs.msdn.com/photos/paulwh/images/2416763/original.aspx"&gt;&lt;IMG title="Http Namespace Manager - Edit" style="WIDTH: 425px; HEIGHT: 340px" height=340 alt="Http Namespace Manager - Edit" src="http://blogs.msdn.com/photos/paulwh/images/2416763/425x340.aspx" width=425 border=0 mce_src="http://blogs.msdn.com/photos/paulwh/images/2416763/425x340.aspx"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;When the Edit button is clicked the following dialog is displayed. You must select a user or group in the top half of the form in order to set the permissions for it.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;Disclaimer&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2416236" width="1" height="1"&gt;</content><author><name>paulwh</name><uri>http://blogs.msdn.com/members/paulwh.aspx</uri></author><category term="Windows Communication Foundation" scheme="http://blogs.msdn.com/paulwh/archive/tags/Windows+Communication+Foundation/default.aspx" /><category term="WCF" scheme="http://blogs.msdn.com/paulwh/archive/tags/WCF/default.aspx" /><category term="Http Namespace Reservation" scheme="http://blogs.msdn.com/paulwh/archive/tags/Http+Namespace+Reservation/default.aspx" /><category term="ACL" scheme="http://blogs.msdn.com/paulwh/archive/tags/ACL/default.aspx" /><category term="Security" scheme="http://blogs.msdn.com/paulwh/archive/tags/Security/default.aspx" /><category term="AddressAccessDeniedException" scheme="http://blogs.msdn.com/paulwh/archive/tags/AddressAccessDeniedException/default.aspx" /></entry><entry><title>Getting Started with Microformats</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/paulwh/archive/2007/04/30/getting-started-with-microformats.aspx" /><id>http://blogs.msdn.com/paulwh/archive/2007/04/30/getting-started-with-microformats.aspx</id><published>2007-05-01T03:21:00Z</published><updated>2007-05-01T03:21:00Z</updated><content type="html">&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;[&lt;EM&gt;Updated: Fixed&amp;nbsp;typo, "microformats are created on a whim" should have been "microformats are&amp;nbsp;&lt;STRONG&gt;not&lt;/STRONG&gt; created on a whim"&lt;/EM&gt;]&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Attended a really interesting talk about Microformats from &lt;A title=http://tantek.com/ href="http://tantek.com/" mce_href="http://tantek.com/"&gt;&lt;SPAN style="COLOR: blue; mso-bidi-font-size: 11.0pt"&gt;Tantek Çelik&lt;/SPAN&gt;&lt;/A&gt;&amp;nbsp;of &lt;A href="http://technorati.com/" mce_href="http://technorati.com/"&gt;&lt;SPAN style="COLOR: blue; mso-bidi-font-size: 11.0pt"&gt;technorati&lt;/SPAN&gt;&lt;/A&gt;.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;I knew a little bit about microformats going in, so before I go into his presentation, let me fill my readers in. Microformats are a way of adding semantic information about data contained in an existing format (XHTML). XHTML already contains a mechanism for separating semantic information from presentation information, that is, CSS. The issue is that the inherent semantics in XHTML are all around document structure (i.e. this is a paragraph, this is a list, this is a table). However, the same&amp;nbsp;mechanism used to create classes of tags that can be styled uniformly using CSS, can be used to attach a semantic meaning to a tag for data processing, a la, the "class" attribute. By using well defined HTML classes for tags that contain structured data, a page can contain data that is simultaneously human readable and machine readable. For a more thorough, and probably more accurate description of what microformats are check out the &lt;A href="http://microformats.org/wiki/what-are-microformats" mce_href="http://microformats.org/wiki/what-are-microformats"&gt;&lt;SPAN style="COLOR: blue; mso-bidi-font-size: 11.0pt"&gt;microformats.org wiki&lt;/SPAN&gt;&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 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Here are a couple of interesting take aways from Tantek's presentations (the slides are available &lt;A href="http://tantek.com/presentations/2007/04/microformats/" mce_href="http://tantek.com/presentations/2007/04/microformats/"&gt;&lt;SPAN style="COLOR: blue; mso-bidi-font-size: 11.0pt"&gt;here&lt;/SPAN&gt;&lt;/A&gt;):&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Microformats can't solve all your data format problems, but when data is already being represented in similar, human readable, semantically weak ways across the internet, microformats can be applied to make the data consistent, reusable, and searchable.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;"Microformats value the 80-20 solution. It is better to solve 80% of the problem with a simple solution that people can implement quickly, than to solve 100% of the problem with a complex solution." Paraphrased, check the video for the verbatim quote.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;The fact that the machine readable data &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;is&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt; the human readable data ensures that the data gets human checked, so it is more likely to be accurate and up to date. For example, if I put vcard file on my blog, I might forget to update it when I change my profile, but if my profile &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-size: 11.0pt"&gt;is&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt; my vcard (using the &lt;A href="http://microformats.org/wiki/hcard" mce_href="http://microformats.org/wiki/hcard"&gt;&lt;SPAN style="COLOR: blue; mso-bidi-font-size: 11.0pt"&gt;hcard microformat&lt;/SPAN&gt;&lt;/A&gt;) then it will be in sync by definition.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Microformats are all about the community, the community collaborates and iterates on them. This ensures that microformats meet the community’s needs and no more. There isn't some standards body going off the tracks trying to create something monolithic.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;New microformats are &lt;STRONG&gt;not&lt;/STRONG&gt;&amp;nbsp;created on a whim, reuse is better, and when they are created, they are based closely on the specific problem space.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;One of the microformats that interests me a lot right now is the &lt;A href="http://microformats.org/wiki/htodo" mce_href="http://microformats.org/wiki/htodo"&gt;&lt;SPAN style="COLOR: blue; mso-bidi-font-size: 11.0pt"&gt;hTodo&lt;/SPAN&gt;&lt;/A&gt; format which is similar to the hCalendar format in that it is derived from the iCalendar spec, but it is for todo list items or tasks. This one is still in development, so it will be interesting to see where it goes, and possibly participate in the process.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2347042" width="1" height="1"&gt;</content><author><name>paulwh</name><uri>http://blogs.msdn.com/members/paulwh.aspx</uri></author><category term="MIX07" scheme="http://blogs.msdn.com/paulwh/archive/tags/MIX07/default.aspx" /><category term="microformats" scheme="http://blogs.msdn.com/paulwh/archive/tags/microformats/default.aspx" /></entry><entry><title>MIX 07 Keynote Highlights</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/paulwh/archive/2007/04/30/mix-07-keynote-highlights.aspx" /><id>http://blogs.msdn.com/paulwh/archive/2007/04/30/mix-07-keynote-highlights.aspx</id><published>2007-04-30T22:51:00Z</published><updated>2007-04-30T22:51:00Z</updated><content type="html">&lt;P&gt;&lt;A class="" href="http://visitmix.com/Blogs/Joshua/ray-ozzie-and-scott-guthrie-keynote/" mce_href="http://visitmix.com/Blogs/Joshua/ray-ozzie-and-scott-guthrie-keynote/"&gt;Keynote video is up&lt;/A&gt;!&amp;nbsp;(it says its a live stream, but its working as a non-live stream for me now)&lt;/P&gt;
&lt;P&gt;Just got out of the MIX 07 Keynote w/ Ray Ozzie and &lt;A class="" href="http://weblogs.asp.net/scottgu" mce_href="http://weblogs.asp.net/scottgu"&gt;Scott Guthrie&lt;/A&gt;. The big announcement was the cross platform .Net framework that will ship with &lt;A class="" href="http://www.microsoft.com/silverlight" mce_href="http://www.microsoft.com/silverlight"&gt;silverlight&lt;/A&gt;. Keith Smith has a good write up over on &lt;A class="" href="http://blogs.msdn.com/keiths/archive/2007/04/30/silverlight-meets-net-at-mix.aspx" mce_href="http://blogs.msdn.com/keiths/archive/2007/04/30/silverlight-meets-net-at-mix.aspx"&gt;his blog&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;However, the biggest news for me in the announcements was what Wayne Smith let slip about the next versions of Expression Design and Expression Blend (his segment starts at time code: 00:44:00). The next versions of these products, which will have prerelease versions available soon (or &lt;STRONG&gt;now&lt;/STRONG&gt; in the case of &lt;A class="" href="http://www.microsoft.com/expression/products/download.aspx?key=blend2maypreview" mce_href="http://www.microsoft.com/expression/products/download.aspx?key=blend2maypreview"&gt;Blend&lt;/A&gt;). After Wayne demoes the &lt;A class="" href="http://www.microsoft.com/expression/products/overview.aspx?key=encoder" mce_href="http://www.microsoft.com/expression/products/overview.aspx?key=encoder"&gt;Expressions Media Encoder&lt;/A&gt;, a tool for preparing video for web distribution, impressive in its own rite, he shows off the new versions of Design and Blend which feature built in support for Silverlight. This is pretty cool stuff, check it out.&lt;/P&gt;
&lt;P&gt;For an overview of the release schedule for all this stuff, check out time code 2:06:00. But I'll give you a hint, there is a ton of stuff available &lt;STRONG&gt;today&lt;/STRONG&gt;: Expresions Studio 1.0, Silverlight 1.0 Beta w/ GoLive license, and previews of v.Next Expressions stuff.&lt;/P&gt;
&lt;P&gt;At the end of the keynote Michael Arrington&amp;nbsp;of &lt;A class="" href="http://www.techcrunch.com/" mce_href="http://www.techcrunch.com/"&gt;TechCrunch&lt;/A&gt; grilled Ray &amp;amp; Scott&amp;nbsp;pretty hard on Microsofts move into the Web design space, a space currently squarely controlled by&amp;nbsp;Adobe. I think Ray skirted the question about Adobe competition, but he and Scott made two things clear 1) choice is good for the marketplace, and Silverlight gives developers a new choice in developing rich browser applications, and 2) Microsofts believes in "software plus services" meaning, harness the hardware to create a great user experience one the form factors you target, and enable useful customer scenarios by hooking that client software into services. Check the interview out at time code&amp;nbsp; 2:08:00.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2343810" width="1" height="1"&gt;</content><author><name>paulwh</name><uri>http://blogs.msdn.com/members/paulwh.aspx</uri></author></entry><entry><title>I'm at MIX</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/paulwh/archive/2007/04/30/i-m-at-mix.aspx" /><id>http://blogs.msdn.com/paulwh/archive/2007/04/30/i-m-at-mix.aspx</id><published>2007-04-30T18:05:00Z</published><updated>2007-04-30T18:05:00Z</updated><content type="html">&lt;P&gt;&lt;A class="" style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" href="http://visitmix.com/" mce_href="http://visitmix.com/"&gt;&lt;IMG title=MIX style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; WIDTH: 130px; HEIGHT: 150px; BORDER-RIGHT-WIDTH: 0px" height=150 alt=MIX hspace=5 src="http://visitmix.com/downloads/bling/fun_cards.jpg" width=130 align=middle vspace=5 mce_src="http://visitmix.com/downloads/bling/fun_cards.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm at the MIX 07 conference this week. I'll be attending sessions, meeting customers, and talking to people about Microsoft's services platform (not on stage). And I'll be blogging about all of it here! So stay tuned.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2340498" width="1" height="1"&gt;</content><author><name>paulwh</name><uri>http://blogs.msdn.com/members/paulwh.aspx</uri></author><category term="Conference" scheme="http://blogs.msdn.com/paulwh/archive/tags/Conference/default.aspx" /><category term="MIX" scheme="http://blogs.msdn.com/paulwh/archive/tags/MIX/default.aspx" /><category term="MIX07" scheme="http://blogs.msdn.com/paulwh/archive/tags/MIX07/default.aspx" /><category term="Web" scheme="http://blogs.msdn.com/paulwh/archive/tags/Web/default.aspx" /><category term="Vegas" scheme="http://blogs.msdn.com/paulwh/archive/tags/Vegas/default.aspx" /></entry><entry><title>Installing XNA Game Studio on Windows Vista</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/paulwh/archive/2006/12/19/installing-xna-game-studio-on-windows-vista.aspx" /><id>http://blogs.msdn.com/paulwh/archive/2006/12/19/installing-xna-game-studio-on-windows-vista.aspx</id><published>2006-12-20T10:14:00Z</published><updated>2006-12-20T10:14:00Z</updated><content type="html">&lt;P&gt;[&lt;EM&gt;Update: The issues describe here have been fixed in SP1 ov Visual Studio. Please install SP1 before installing XNA Game Studio&lt;/EM&gt;]&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Disclaimer:&lt;/STRONG&gt; At the time of the writing of this post Microsoft does not support running XNA Game Studio on Windows Vista. There are plans to support Vista when it is publicly available early next year. For more information on support check out the &lt;A class="" title="XNA Team Blog" href="http://blogs.msdn.com/xna/archive/2006/11/20/xna-game-studio-express-and-windows-vista.aspx" target=_blank mce_href="http://blogs.msdn.com/xna/archive/2006/11/20/xna-game-studio-express-and-windows-vista.aspx"&gt;XNA Team Blog&lt;/A&gt;. This post is by no means a gauranty that XNA Game Studio will work on Windows Vista, and this posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified &lt;A href="http://www.microsoft.com/info/cpyright.htm"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; My experience was on WIndows Vista RTM. If you are on a pre-release version of Vista your mileage may vary.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I recently decided to give XNA Game Studios a whirl, and despite the fact that it is not supported, decided to install it on Vista. Visual Studio C# Express installed along side of my Visual Studio for Team System installation without problems. However, when I went to install XNA Game Studio, the installer failed and rolled back because "Visual Studio C# Express had stopped working." The log file was unhelpful and contained only the following details:&lt;/P&gt;
&lt;P&gt;Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action RegisterWithCSExpress, location: C:\, command: "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\VCSExpress.exe" /installvstemplates&lt;/P&gt;
&lt;P&gt;So, I said to my self: "Self, I can probably install those templates manually later, there's no need for the installer to fail because VCSExpress is crashing." Perhaps not the best judgement since this crash demonstrates the inherent instability in my environment, but I decided to proceed anyway.&lt;/P&gt;
&lt;P&gt;Having already installed the &lt;A class="" title="Windows SDK" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&amp;amp;DisplayLang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&amp;amp;DisplayLang=en"&gt;Windows SDK&lt;/A&gt;, I installed the Orca.msi located in the SDKs bin directory (Orca is a tool for analyzing and modifying MSI files). I was then able to open up the XNA msi in Orca. I quickly noticed the "RegisterWithCSExpress" action in the ActionText and CustomAction sections. After dropping both these rows from the msi I was able to run the installer successfully. I ran the VCSExpress.exe /installvstemplates command line manually to see if I could get any output regarding the crash, but I didn't get any and it crashed as expected. However, upon running VCSExpress normally I found that the templates had been installed successfully. Considering I've already had another crash when closing VCExpress, my guess is that the crash is happening as its shutting down and not really having any adverse effects.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;I haven't actually created anything with it, although I did verify that the a default XBox Game project builds successfully, so no promises about it actually working, but at least it installs.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;-Paul&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1327573" width="1" height="1"&gt;</content><author><name>paulwh</name><uri>http://blogs.msdn.com/members/paulwh.aspx</uri></author><category term="XNA" scheme="http://blogs.msdn.com/paulwh/archive/tags/XNA/default.aspx" /><category term="Express" scheme="http://blogs.msdn.com/paulwh/archive/tags/Express/default.aspx" /><category term="Windows Vista" scheme="http://blogs.msdn.com/paulwh/archive/tags/Windows+Vista/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/paulwh/archive/tags/Visual+Studio/default.aspx" /></entry></feed>