<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>XML/XSLT</title>
        <link>http://geekswithblogs.net/yowhann/category/5673.aspx</link>
        <description>XML/XSLT</description>
        <language>en-US</language>
        <copyright>Yow-Hann Lee</copyright>
        <managingEditor>yowhann@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>A Rant on XSD Schemas</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/03/25/109772.aspx</link>
            <description>&lt;P&gt;Have you ever been frustrated by some of the brittleness in XSD schemas?&amp;nbsp;Granted, this may sound like an oxymoron since XSDs were enforced in the first place to provide strict xml structure.&lt;/P&gt;
&lt;P&gt;But let's think about XML based technologies for a moment...&lt;/P&gt;
&lt;P&gt;The claim to fame for XML was the flexibility of having variable number of attributes, etc for your business objects. And with your XML, you could perform XPath queries to your heart's content. What was great about XPath was that it is was order independent (unless of course you explicitly called for one return node, SelectNode,&amp;nbsp;in the BCL API and the xml blob consisted of multiple nodes that could be returned with the expression, SelectNodes).&lt;/P&gt;
&lt;P&gt;So where did XSD fit in?&lt;/P&gt;
&lt;P&gt;Well, in the wild wild west of XML, you could think of it as the cheriff in town.&lt;/P&gt;
&lt;P&gt;Unfortunately, there are just some things in XSD that are a little too strict. Thus, making life difficult on the developer.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SCENARIO:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Let's take for instance you want your XSD to govern the following structure:&lt;/P&gt;
&lt;P&gt;&amp;lt;Drink name="mikes"&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;AlcoholPercentage&amp;gt;5&amp;lt;/AlcoholPercentage&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/Drink&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;Food name="calzone" calories="700"&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;-- Some other elements in here --&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/Food&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;Food name="chicken" calories="350"&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;-- Some other elements in here --&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/Food&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So the rule is that you can only have 1 Drink node but can have multiple Food nodes. It must be flexible enough to be order independent.&lt;/P&gt;
&lt;P&gt;&amp;lt;Food name="calzone" calories="700"&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;-- Some other elements in here --&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/Food&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;Food name="chicken" calories="350"&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;-- Some other elements in here --&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/Food&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;Drink name="mikes"&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;AlcoholPercentage&amp;gt;5&amp;lt;/AlcoholPercentage&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/Drink&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;RULES:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;But the rules are as follows:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Drink must occur once 
&lt;LI&gt;Food can occur a minOccurs="0" and maxOccurs="unbounded" 
&lt;LI&gt;The two are order independent as shown above&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;However, because you are performing XPath queries on this data, you do not care what order they come in. The&amp;nbsp;xml structure should be flexible enough so that a developer on another project playing with your data can simply RemoveChild and AppendChild on any nodes without affecting the expected behavior.&lt;/P&gt;
&lt;P&gt;So right away, if you were thinking of specifying &lt;STRONG&gt;"&amp;lt;xs:sequence&amp;gt;..." &lt;/STRONG&gt;with your complexType and&amp;nbsp;element names underneath, it is ruled out.&lt;/P&gt;
&lt;P&gt;Then, perhaps an idea pops up in using an &lt;STRONG&gt;"&amp;lt;xs:any.." &lt;/STRONG&gt;tag at the end of the sequence. But that also gets ruled out right away because it will introduce the&amp;nbsp;violation of drink occuring only&amp;nbsp;once. &lt;/P&gt;
&lt;P&gt;So then the idea for using a &lt;STRONG&gt;"&amp;lt;xs:choice&amp;gt;" &lt;/STRONG&gt;seems appropriate. For the purposes of this simplified version, that would seem like the likely answer. All you have to do is specify two sequences under choice and pick one or the other right?&lt;/P&gt;
&lt;P&gt;Well, not exactly. As I mentioned, &lt;STRONG&gt;this example is an oversimplification of the actual scenario&lt;/STRONG&gt;. Thus, in the real world, with your complexTypes nested under one another, you would end up with something along the lines of:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://yowhann.googlepages.com/XSDError.JPG"&gt;&lt;IMG src="http://yowhann.googlepages.com/XSDError.JPG"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;So now you're thinking, the xml structure is flawed. You want to do anything ranging from revamping the entire xml blob to minor changes. (i.e. If you really wanted this, why not place Food under a Foods parent node? But let's go back to the original requirement. It must follow this exact xml structure. Sometimes, you don't have the luxury to decide on this.)&lt;/P&gt;
&lt;P&gt;And hence the rant on XSD flexibility! Well, perhaps there is some way of circumventing all of the hassles here and still satisfying the requirements. But for&amp;nbsp;simple requirements such as this, the xsd definition should not&amp;nbsp;be so verbose. Also, wasn't the XML vision to have all its technologies play nicely together: xpath, xml, xslt, xsd? XPath is order independent and therefore, there should be a quick and easy way to do it. (yes, there's choice and any, but those don't work as well - see above).&lt;/P&gt;
&lt;P&gt;If you do have a simple solution, please do share. =)&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109772"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109772" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/109772.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/03/25/109772.aspx</guid>
            <pubDate>Sun, 25 Mar 2007 23:24:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/109772.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/03/25/109772.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/109772.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/109772.aspx</trackback:ping>
        </item>
        <item>
            <title>A Brief Look at Online IDEs</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/03/18/109153.aspx</link>
            <description>&lt;P&gt;A couple years back, I remember thinking about IDEs as an SaaS.&amp;nbsp;It definitely seemed ridiculous at the time, especially given that online spreadsheets were merely ideas in the works.&amp;nbsp;(NOTE: I'm not saying it's a good idea even today).&amp;nbsp;Also, the thought of having a Visual Studio clone within your browser was a bit much. &amp;lt;insert reference here to classic rule of thumb for creating a desktop driven app vs a client/server app - sorry, I came across an article, amongst a few, way back but I cannot find it now. If anyone knows what I'm referring to, please provide the link.&amp;gt;&lt;/P&gt;
&lt;P&gt;Now in 2007, with a few online IDEs on the market, I decided to blog about a couple. I alluded to Yahoo Pipes and their designer in an earlier entry at:&amp;nbsp;&lt;A href="http://geekswithblogs.net/yowhann/archive/2007/02/13/106252.aspx"&gt;http://geekswithblogs.net/yowhann/archive/2007/02/13/106252.aspx&lt;/A&gt;. Also, just to add a disclaimer, this analysis excludes websites such as &lt;A href="http://tryruby.hobix.com/"&gt;Try Ruby&lt;/A&gt;&amp;nbsp;or &lt;A href="http://runbasic.com/"&gt;Run BASIC&lt;/A&gt;&amp;nbsp;which provides a quick install free environment and is aimed at getting people to try the language.&lt;/P&gt;
&lt;P&gt;There is &lt;A href="http://www.sednaspace.com/"&gt;SednaSpace&lt;/A&gt;,&amp;nbsp;an online IDE offered as SaaS. The online IDE was actually built in ASP.NET and the IDE is specialized to produce web apps. And surprise, surprise...the web apps that are generated are in ASP.NET =). While this is a visual programming service, there is an option to download the generated source. After examining the generated code,&amp;nbsp;you quickly realize that it was not structured in a manner that&amp;nbsp;can be&amp;nbsp;easily maintained by developers. But then again, generated code is usually less than ideal. So most of the value in this service comes from the codeless programming aspect.&lt;/P&gt;
&lt;P&gt;The SednaSpace designer is very much like the visual designer in VS. Unfortunately, because their aim is to completely abstract code away from the user and keep it primarily visual programming driven, there were some usability issues. Being in&amp;nbsp;a less mature niches, online IDE and visual programming,&amp;nbsp;does not help.&amp;nbsp;And while they do have sparse online documentation at their &lt;A href="http://www.sednaspace.com/docs/"&gt;site&lt;/A&gt;, their built-in help within the IDE is non-existent and&amp;nbsp;under construction. (See Below). I imagine there is potential for a following once the service matures and they provide users with adequate quickstart guides and documentation.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://yowhann.googlepages.com/SednaSpaceHelp.JPG"&gt;&lt;/P&gt;
&lt;P&gt;The forms are based off of adding eventlisteners and actions to hook up to, much like ASP.NET. Logical expressions can be built using an expression builder that pops up in a separate window. Shown below is a simple graph, button and textbox with a validator (the expression being a value being &amp;lt;= 10).&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://yowhann.googlepages.com/SednaCreateSampleForm.JPG"&gt;&lt;/P&gt;
&lt;P&gt;Then there is CodeIDE (&lt;A title=http://www.codeide.co href="http://www.codeide.com/"&gt;http://www.codeide.com/&lt;/A&gt;), which is actually an IDE for multiple languages (Perl, LISP, JavaScript, BASIC, etc). This one is more lightweight than SednaSpace but is&amp;nbsp;limited in IDE features. Shown below is a simple program and its output on the right.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://yowhann.googlepages.com/CodeIDE.JPG"&gt;&lt;/P&gt;
&lt;P&gt;(NOTE: resizing your window while in CodeIDE is not preferred).&lt;/P&gt;
&lt;P&gt;Last but not least, there is &lt;A href="http://try.flex.org/index.cfm"&gt;The Flex Online Compiler&lt;/A&gt;, which I have yet to dig into.&lt;/P&gt;
&lt;P&gt;I am not going to rank these online IDEs; the purpose of this entry is moreso to bring awareness to a few online IDEs. While it may be possible to monetize this, I am not sure what kind of following it would have. Currently, CodeIDE and SednaSpace are free and I did some some ads within the IDE. So perhaps they intend on monetizing this in a similar fashion as other SaaS. &lt;/P&gt;
&lt;P&gt;If the intent is to make this a paid service, it will be a long road ahead in convincing development shops let alone the enterprise of adopting this. While building even something trivial in SednaSpace, there were latency issues. Nevertheless, kudos to these guys for getting this out there. It is not something I would use right now, but it is something that seems like it was loads of fun to build as an SaaS.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109153"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=109153" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/109153.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/03/18/109153.aspx</guid>
            <pubDate>Mon, 19 Mar 2007 09:14:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/109153.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/03/18/109153.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/109153.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/109153.aspx</trackback:ping>
        </item>
        <item>
            <title>Safeguarding Your Website/App Code From User Input: Cross Site Scripting Issues and Anti-XSS Approaches</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/02/04/105400.aspx</link>
            <description>&lt;P&gt;In a previous &lt;A href="http://geekswithblogs.net/yowhann/archive/2007/01/17/103793.aspx"&gt;blog entry&lt;/A&gt;, I highlighted a key &lt;A href="http://geekswithblogs.net/yowhann/archive/2007/01/17/103793.aspx"&gt;web development security issue: XSS or Cross Site Scripting&lt;/A&gt;. I spoke mainly of case studies from Google websites/services (&lt;A href="http://geekswithblogs.net/yowhann/archive/2007/01/17/103793.aspx"&gt;Security in Software As A Service (GOOGLE) - How Secure is the data and where is the Offline switch?&lt;/A&gt;) and the challenges with software as a service. Just so&amp;nbsp;Google is not singled out&amp;nbsp;for case studies on security issues,&amp;nbsp;here is a link for &lt;A href="http://news.com.com/Hackers+claim+zero-day+flaw+in+Firefox/2100-1002_3-6121608.html"&gt;issues in Firefox&lt;/A&gt;&amp;nbsp;and the &lt;A href="http://news.com.com/Hacker+backpedals+on+Firefox+zero-day+claim/2100-7349_3-6122317.html"&gt;controversy stirred by this last year&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In any case, as a continuation of that and narrowing the focus on XSS this time around, I thought I'd write up a simplified entry on securing your ASP.NET site from XSS.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SCENARIO:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;At some point in your ASP.NET code behind, you directly manipulated the user's input (whether it was textbox input, url, or even client cookies). For this example, we'll use a simplified and trivial case below:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;string script = Request.QueryString["test"] as string; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;But what you may end up with your application's response to the client is the following: 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;script type="text/javascript"&amp;gt;alert('42');&amp;lt;/script&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;/html&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;where alert('42'); was the malicious script. So how does this apply to the real-world? Think of web forms..or better yet, think of blogs. Think of the post comments in the blog comments? (Ok, so maybe the first thing that comes to you mind is SQL injection when it comes to persistence of the comments. But XSS will also cross your mind). 
&lt;P&gt;Basically, anything in your site that involves outputting user input in some shape or form may be vulnerable. For ASP.NET developers, there is no need to hyperventilate just yet. ValidateRequest method in &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.configuration.pagessection.validaterequest(VS.80).aspx"&gt;ASP.NET (PagesSection.ValidateRequest)&lt;/A&gt; is the method that handles the validation of your browser's request for dangerous values. As is called out as well on MSDN, this is not a complete blanket approach and you definitely will need to handle for your own specific security issues on top of this as well. Also, turning this feature(whether at the page level &amp;lt;@ page.., at the app level in web.config or worse yet, at the server level with machine.config) is &lt;STRONG&gt;NOT recommended. &lt;/STRONG&gt;ASP.NET raises a HttpRequestValidationException if it encounters dangerous input. In these cases, you can refer to &lt;A href="http://geekswithblogs.net/yowhann/archive/2006/10/25/95116.aspx"&gt;my blog entry on IIS custom errors&lt;/A&gt; to handle this and display the appropriate error page. 
&lt;P&gt;The nice thing about ASP.NET's built in security is that it covers simple cases such as the following: 
&lt;P&gt;- Providing script tags in your QueryString (i.e. &amp;lt;script type="text/javascript"&amp;gt;alert('42')&amp;lt;/script&amp;gt;) 
&lt;P&gt;- Providing script tags with URL encode for empty char (i.e. &amp;lt;%8fscript%20type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;) 
&lt;P&gt;&lt;STRONG&gt;RECOMMENDED RESOURCES AND LIBRARIES/FRAMEWORKS&lt;/STRONG&gt; 
&lt;P&gt;Obviously, you still need to handle&amp;nbsp;security issues specific to your&amp;nbsp;website or application. So this is where a decent scripting library comes into play.&amp;nbsp;Microsoft provides you with a free &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EFB9C819-53FF-4F82-BFAF-E11625130C25&amp;amp;displaylang=en"&gt;&lt;STRONG&gt;Anti-Cross Site Scripting Library in .NET&lt;/STRONG&gt;&lt;/A&gt;. You can download it &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EFB9C819-53FF-4F82-BFAF-E11625130C25&amp;amp;displaylang=en"&gt;here&lt;/A&gt;&amp;nbsp;(They also have an archived V1.0 in the MS downloads page. This link is for V1.5 which was published externally on 11/20/2006). This download comes with a decent help document and with accompanying samples as well. Obviously, as with any third party/outside libraries that you adopt into your own projects, you need to evaluate the impact properly. This may not suit the needs of your particular project and it will require a small investment in terms of research/investigation time. Ideally, you will want to become intimately familiar with libraries you use to help abstract your work. (HINT: Here comes another endorsement for Lutz Roeder's .NET Reflector). 
&lt;P&gt;The AntiXSS library provides the following functionality: 
&lt;UL&gt;
&lt;LI&gt;HtmlAttributeEncode 
&lt;LI&gt;HtmlEncode 
&lt;LI&gt;JavaScriptEncode 
&lt;LI&gt;UrlEncode (&lt;STRONG&gt;NOTE: THIS IS NOT THE SAME AS THE ONE BUILT IN ASP.NET'S Server.UrlEncode)&lt;/STRONG&gt; 
&lt;LI&gt;VisualBasicScriptEncode 
&lt;LI&gt;XmlAttributeEncode 
&lt;LI&gt;XmlEncode&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A good resource for &lt;STRONG&gt;Script Exploits&lt;/STRONG&gt; is: &lt;A href="http://msdn2.microsoft.com/en-us/library/w1sw53ds(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/w1sw53ds(VS.80).aspx&lt;/A&gt;. Happy Securing your ASP.NET applications or web services. Another &lt;STRONG&gt;great paper on XSS&lt;/STRONG&gt; can be found at: &lt;A href="http://www.technicalinfo.net/papers/CSS.html"&gt;http://www.technicalinfo.net/papers/CSS.html&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;While on the topic of securing your application (and more specifically, the security of your web service), you may want to dive into &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=018a09fd-3a74-43c5-8ec1-8d789091255d&amp;amp;displaylang=en"&gt;Microsoft's WSE 3.0&lt;/A&gt;. It is a free add-on to VS2005 and adds options to setting the security policies to your web service.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=105400"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=105400" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/105400.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/02/04/105400.aspx</guid>
            <pubDate>Sun, 04 Feb 2007 13:26:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/105400.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/02/04/105400.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/105400.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/105400.aspx</trackback:ping>
        </item>
        <item>
            <title>Windows Live Search Mashup Day V3 Summary: Live Search Web Service API &amp;amp; Exposure to MS Knowledge Network</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/01/30/105011.aspx</link>
            <description>&lt;P&gt;I took part in the first ever Search Mashup event last year in&amp;nbsp;Q4 and enjoyed it. The event is an internal event&amp;nbsp;open to everyone who works for/at Microsoft. In the first ever Mashup event,&amp;nbsp;I was fortunate enough to catch the tail end of Tina Wood's (on10 host)&amp;nbsp;appearance. You can catch snippets of the &lt;A href="http://on10.net/Blogs/tina/mashup-day-a-meeting-of-the-minds-at-microsoft/"&gt;first ever Mashup event on10.net&lt;/A&gt;. So the traditional&amp;nbsp;rule of thumb in software&amp;nbsp;is that it generally takes a few releases (3?) before a product has matured and stabilized. Does it apply to events? Well, the V3 has definitely evolved and was "feature rich".&lt;/P&gt;
&lt;P&gt;Since I never blogged about the first Windows Live Search Mashup Night, I am going to take this opportunity to showcase some of the Live Developer offerings. In the first Search Mashup, all the buzz was about the&amp;nbsp;released Windows Live Macros (I finally blogged about it earlier this month with a comparison of Google Co-op, entry found &lt;A href="http://geekswithblogs.net/yowhann/archive/2007/01/04/102829.aspx"&gt;here&lt;/A&gt;). So I played around with that one. However, for this entry and what most most devs focused on, I will highlight &lt;A href="http://msdn2.microsoft.com/en-us/library/bb251794.aspx"&gt;Windows Live Search Web Service API&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Windows Live Search Web Service API&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The API is very simple to use and follows&amp;nbsp;a thin layer&amp;nbsp;web service model. You can find the API reference at: &lt;A href="http://msdn2.Microsoft.com/en-us/library/bb266180.aspx"&gt;http://msdn2.Microsoft.com/en-us/library/bb266180.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Your request and response is broken down into the following:&lt;/P&gt;
&lt;P&gt;1.&amp;nbsp;SearchRequest object and &lt;/P&gt;
&lt;P&gt;2. SearchResponse object.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can think of them as HttpWebRequest and HttpWebResponse.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The generated proxy has a MSNSearchService with one public method called Search taking in a SearchRequest object as a parameter.&lt;/P&gt;
&lt;P&gt;The SearchRequest contains a Query property which allows you to specify your query exactly as a user would via the Live Search textbox. So while there are no properties to set where you can maintain a site specific search (or even a list of sites to search on as is available in customized search), you can essentially achieve similar behavior by providing it directly in your Query string. For example, in the scenario of a site specific search, you would just specify something like: "site:www.cs.ubc.ca robotics".&lt;/P&gt;
&lt;P&gt;If you&amp;nbsp;have also played around with&amp;nbsp;an &lt;A href="http://msdn2.microsoft.com/en-us/library/ms813951.aspx"&gt;older version&lt;/A&gt;&amp;nbsp;(&lt;A href="http://msdn2.microsoft.com/en-us/library/ms813951.aspx"&gt;MSN Search Web Service 0.60 Beta&lt;/A&gt;), your experience should be fairly consistent. The ease of use (although some people may want more features/granular control as mentioned above) is part of what makes it so suitable for building during a Mashup event. Generally, people will spend a couple hours at these events.&amp;nbsp;Add to the time allocated for the consumption of food/desserts, and yet you are still able to create functional and creative apps.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Knowledge Network&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;At tonight's Mashup, there was a table setup with an LCD Screen showcasing Microsoft Knowledge Network (Their team blog can be found &lt;A href="http://blogs.msdn.com/kn/"&gt;here&lt;/A&gt;).&amp;nbsp;If you haven't seen the KN tie in with Sharepoints, Outlook, Communicator, etc (other Office products).. then you should definitely check it out. It's really sexy stuff for the enterprise! I think only the Unified Communications effort edges&amp;nbsp;this out&amp;nbsp;in terms of what's hot in the Office Division. So yesterday, on the big screen in the cafeteria in Redmond and with Bill Gates in NYC showcasing the Vista Launch, he referenced back to Windows 95 and pointed out all the technological advances made over that time. Just go back a decade and think of the tools used in the Enterprise. What a change?&lt;/P&gt;
&lt;P&gt;Lighting, Prizes, Aura, Music (they played one of my favorite tunes circa 2002/2003 - Motorcycle - As The Rush Comes) and Great Food/Desserts (Chocolate Fondue!).&amp;nbsp;All in all, a well done event. And the main thing to get out of these events? Fun!&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=105011"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=105011" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/105011.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/01/30/105011.aspx</guid>
            <pubDate>Wed, 31 Jan 2007 11:19:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/105011.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/01/30/105011.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/105011.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/105011.aspx</trackback:ping>
        </item>
        <item>
            <title>XSD.EXE And Using Reflector For Your Documentation Needs</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/01/28/104797.aspx</link>
            <description>&lt;P&gt;I enjoy coming across and reading &lt;A href="http://west-wind.com/weblog/posts/10402.aspx"&gt;Rick Strahl's blog&lt;/A&gt; every now and then. He has posted&amp;nbsp;free tools up on his site and his indepth articles are also invaluable (one of my favorites was one he wrote back in 2005 on &lt;A href="http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp"&gt;ASP.NET Architecture&lt;/A&gt;. He is also very capable of creating blog entries that generate an immense amount of discussion.&lt;/P&gt;
&lt;P&gt;I came across his latest blog entry on &lt;A href="http://west-wind.com/weblog/posts/10402.aspx"&gt;"XSD.EXE and included schemas"&lt;/A&gt;. In&amp;nbsp;his post, there was mention that "Looking at XSD.EXE&amp;nbsp;I don't see anyway to specify the whole lot of files to import and apparently XSD.EXE doesn't look at the includes&amp;nbsp;which look something like this:".&lt;/P&gt;
&lt;P&gt;Sure enough, based on the documentation (see command prompt below), it can be difficult to determine what is/is not supported. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://yowhann.googlepages.com/xsd.JPG"&gt;&lt;/P&gt;
&lt;P&gt;While reading about his troubles, I thought this would be another great opportunity to&amp;nbsp;make use of Lutz Roeder's .NET Reflector&amp;nbsp;(the individual that Carl and Richard on the DNR podcast show have referred to as God). I blogged about the &lt;A href="http://geekswithblogs.net/yowhann/archive/2007/01/03/102605.aspx"&gt;different motivation factors of using Reflector&lt;/A&gt; in a &lt;A href="http://geekswithblogs.net/yowhann/archive/2007/01/03/102605.aspx"&gt;previous entry&lt;/A&gt;.&amp;nbsp;&amp;nbsp;After loading up XSD.EXE in Reflector and taking a peek at the internals, in the Run method of XsdTool.Xsd, it appeared to support the import of several xsd files as generated classes. &lt;/P&gt;
&lt;P&gt;To confirm this, I performed the following steps:&lt;/P&gt;
&lt;P&gt;1. Create [XmlSchema1].xsd and [XmlSchema2].xsd&lt;/P&gt;
&lt;P&gt;2. Opened up command prompt and executed the following command: xsd XmlSchema1.xsd XmlSchema2.xsd -c&lt;/P&gt;
&lt;P&gt;The output file is generated. In this case, it contained two classes.&lt;/P&gt;
&lt;P&gt;This may still not fit Rick's requirement and ideally, it would have been great if his first scenario of having one schema with specifying includes had&amp;nbsp;behaved intelligently. However, hopefully, this clarifies some of the question marks with XSD's help. One of the comments in the blog entry mentioned of an alternate tool called CodeXS. I'll have to take a look at it and check out the similarities/differences in code base and functionality.&lt;/P&gt;
&lt;P&gt;While on the topic of Reflector, it may be of interest to see which exe and dlls in .NET are managed code with CLI headers and which are not. Not surprisingly, &lt;STRONG&gt;aspnet_regiis, setreg&lt;/STRONG&gt; and &lt;STRONG&gt;sn&lt;/STRONG&gt; do not contain CLI headers. Meanwhile, it's interesting to note that &lt;STRONG&gt;InstallUtil&lt;/STRONG&gt; and &lt;STRONG&gt;WebDev.WebServer&lt;/STRONG&gt; are both managed code (WebDev, the ASP.NET 2.0 host, NOT to be confused with WebDAV, IETF approved and original vision for WWW beyond GET and POST methods). See below for a subset of components of interest:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://yowhann.googlepages.com/ReflectorInDotNet.JPG"&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=104797"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=104797" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/104797.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/01/28/104797.aspx</guid>
            <pubDate>Mon, 29 Jan 2007 01:19:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/104797.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/01/28/104797.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/104797.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/104797.aspx</trackback:ping>
        </item>
        <item>
            <title>W3C Recommendations Released for XSLT 2.0, XPath 2.0 &amp;amp; XQuery 1.0</title>
            <link>http://geekswithblogs.net/yowhann/archive/2007/01/24/104480.aspx</link>
            <description>&lt;P&gt;In the second part of this two part news update series and having to work with XML and XPath these days, I wanted to point out that the World Wide Consortium has released recommendations for XSLT 2.0, XPath 2.0 &amp;amp; XQuery 1.0. The announcement came on two days ago (Monday Jan 22) and you can find it &lt;A href="http://www.w3.org/News/2007#item8"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;NOTE: Originally, I was thinking about doing a bit on W3C Recommendations and discussing its compliance. I decided to save that can of worms for a future post.&lt;/P&gt;
&lt;P&gt;You can find Microsoft XML Team's comments on this release &lt;A href="http://blogs.msdn.com/xmlteam/archive/2007/01/29/xslt-2-0.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=104480"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=104480" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/104480.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2007/01/24/104480.aspx</guid>
            <pubDate>Thu, 25 Jan 2007 09:48:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/104480.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2007/01/24/104480.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/104480.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/104480.aspx</trackback:ping>
        </item>
        <item>
            <title>Two Scotts &amp; Formatting</title>
            <link>http://geekswithblogs.net/yowhann/archive/2006/10/19/94604.aspx</link>
            <description>&lt;P&gt;&lt;STRONG&gt;Lessons relearned today.&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As I learned from work, encoding can be a nightmare.&amp;nbsp; And back in the summer Scott Hanselman did an entire show on internationalization found here at: (&lt;A href="http://www.hanselminutes.com/default.aspx?showID=36"&gt;http://www.hanselminutes.com/default.aspx?showID=36&lt;/A&gt;).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;On another note, when creating files such as XML files via code, be mindful of your audience.&amp;nbsp; Doing things such as saving in a specific encoding (i.e UTF-8)&amp;nbsp;or ensuring that your code is well formatted for readers is essential.&amp;nbsp; If you can guarantee that these files will not be viewed by an organic set of eyes, then go ahead and compress the document with a smaller file size.&amp;nbsp; Or else, one day, you may end up eating your own dogfood.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;One thing from work that I can talk about since it is public knowledge at Scott Guthrie's site is Product Studio: &lt;A href="http://weblogs.asp.net/scottgu/archive/2004/11/03/251930.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2004/11/03/251930.aspx&lt;/A&gt;.&amp;nbsp; Kind of cool to be using an internal product that made it to the big leagues.&amp;nbsp;&amp;nbsp;It becomes a&amp;nbsp;privilege to say, "I used them way back when they were just an internal product" =P.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I haven't been listening to HanselMinutes lately and just noticed a new podcast from Oct 18.&amp;nbsp; Scott interviews Scott Guthrie.&amp;nbsp; How cool is that? Ub3r T1ght&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=94604"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=94604" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/yowhann/aggbug/94604.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Yow-Hann Lee</dc:creator>
            <guid>http://geekswithblogs.net/yowhann/archive/2006/10/19/94604.aspx</guid>
            <pubDate>Fri, 20 Oct 2006 10:28:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/yowhann/comments/94604.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/yowhann/archive/2006/10/19/94604.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/yowhann/comments/commentRss/94604.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/yowhann/services/trackbacks/94604.aspx</trackback:ping>
        </item>
    </channel>
</rss>