<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>Technical notes (site implementation) blog</title>
		<link>http://www.gocek.org/blog/default.aspx?source=tek</link>
		<description>Tech notes</description>
		<copyright>Copyright 2011 Gary Gocek</copyright>
		<language>en-us</language>
		<image>
			<url>http://www.gocek.net/images/usaribbon.gif</url>
			<title>Technical notes (site implementation) blog</title>
			<link>http://www.gocek.org/blog/default.aspx?source=tek</link>
		</image>
		<pubDate>Tue, 27 Sep 2011 12:00:00 GMT</pubDate>
		<ttl>3600</ttl>
<!-- -->
		<item>
			<title>Contents</title>
			<description>
<![CDATA[Topics in this blog include:&lt;br&gt;
SEO notes&nbsp;...&nbsp;Local news&nbsp;...&nbsp;Hosting service and statistics&nbsp;...&nbsp;Tools and languages&nbsp;...&nbsp;Anti-spam&nbsp;...&nbsp;Flash updates&lt;br&gt;
Blogs&nbsp;...&nbsp;Reader comments&lt;br&gt;
Christian symbols&nbsp;...&nbsp;Bibles and translations&lt;br&gt;
Webcam&nbsp;...&nbsp;897th (WWII)&lt;br&gt;
Bugs - MSIE6 and replacing innerHtml with images&lt;br&gt;
Bugs - National Weather Service web service&lt;br&gt;
Bugs - Firefox and synchronous AJAX&lt;br&gt;
Bugs - ASP.NET checkbox controls&lt;br&gt;]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200904181201</link>
			<pubDate>Sat, 18 Apr 2009 12:00:01 GMT</pubDate>
			<guid>200904181201|tek|orig|0|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>SEO notes</title>
			<description>
				<![CDATA[My home page bounces all over the place with respect to search engine rankings,
				especially from Google. First, I found
				&lt;a href=&quot;http://vik.podbean.com/about-vikram-rajan/how-to-wikipedia-your-personal-brand-ethically/&quot; title=&quot;SEO post&quot; target=&quot;_blank&quot;&gt;a good post about optimization&lt;/a&gt;.&lt;br /&gt;
				My own tips, in no particular order, are:
				(0) Content, content, content.
				(1) Remove HTML errors, include a good title and meta tags, target some keywords and use them appropriately, but all serious sites do this.
				(2) Optimize for Google. If Google ranks your site well, so will the other engines, and most users use Google.
				(3) Get links to your site listed on other reputable sites, to generate hits and improve automated reputation calculations. Don&rsquo;t bother with disreputable link farms.
				(4) Drop your URL everywhere, such as in web forums. You&rsquo;ll get spam; deal with it.
				(5) Individuals who meet Wikipedia notability standards will get an unbiased biography. Don&rsquo;t create a bio for yourself because it hurt your reputation. Carefully edit Wikipedia articles.
				(6) The DMOZ.org policies baffle me. Many categories are populated but never updated and they&rsquo;re picky about editors. Still, DMOZ is well respected.
				(7) I am an editor on syndic8.com. I reject most of the waiting feeds that I review, but there is some good stuff there.
				(8) Make sure your target page loads quickly (within a few seconds).
				(9) Reduce your link-to-content ratio and ad-to-content ratio. Links and ads are fine, but the search robots can pick out link farms and ad farms.
				(10) Renew your domain registration for multiple years so that you don&rsquo;t look like a temporary ad farm.
				]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#201106181200</link>
			<pubDate>Sat, 18 Jun 2011 12:00:00 GMT</pubDate>
			<guid>201106181200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Local news on the web</title>
			<description>
				<![CDATA[Print editions of newspapers across the country are shutting down these days.
				I still subscribe to the print editions of two newspapers in the Rochester, NY area,
				but I&rsquo;m looking for news sources to carry me when the inevitable finally happens.
				The print editions support an investigative activity that bloggers and web editions just
				can&rsquo;t match (oh well...). In particular, I&rsquo;m looking for a deep sources of local news. Lots of web
				sites regurgitate the top stories from the print editions, but that won&rsquo;t help when there
				are no print editions. I'm looking for a sites that can tell me about
				businesses that are opening, school sports results, youth group and charity activities, etc.,
				as well as the bigger stories and weather. Commment here on how you find your
				&lt;i&gt;local&lt;/i&gt; news on the web.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200904181200</link>
			<pubDate>Sat, 18 Apr 2009 12:00:00 GMT</pubDate>
			<guid>afc|468|60||FFFFFF|0000FF|FFFFFF|000000|008000|200904181200|tek|orig|5|0|0</guid>
		</item>
		<!-- -->
		<item>
			<title>Hosting service and statistics</title>
			<description>
<![CDATA[This site is hosted on a shared server by
&lt;a href=&quot;http://www.hostek.com/&quot;&gt;HosTek&lt;/a&gt;
of Oklahoma, USA. Great service at a reasonable price. See their special rates for non-profits.
Site statistics are provided by Hostek&rsquo;s
&lt;a href=&quot;http://www.smarterstats.com/&quot;&gt;statistics package&lt;/a&gt;.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200712011200</link>
			<pubDate>Sat, 01 Dec 2007 12:00:00 GMT</pubDate>
			<guid>200712011200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Tools and languages 2</title>
			<description>
				<![CDATA[I bought a new Samsung notebook PC. Overall, it works well.
				It came with Windows 8 64-bit, not Windows 8 Pro, but it was one of those Christmas day deals and I have the
				Windows media anyway. I found out that computers arrive these days without OS media, and with a restoration
				partition so that Windows can be re-installed if necessary. However, with separate installation media, I had
				the option of reformatting the whole drive and wiping out the space taken by the restoration data, which
				includes a bunch of manufacturer applications which I'll probably never use. Note that before I did this,
				I downloaded the manufacturer drivers from their support site.&lt;br /&gt;
				The installation of Windows 8 is slightly different than previous versions, so my process was to boot from
				the DVD, which required a BIOS change to allow this, so check your manufacturer documentation.
				I did indeed choose the advanced options to delete and recreate a single installtion partition.
				No license key was requested because on a PC that originally has Windows pre-installed, a key is built into
				the BIOS. After installing the manufacturer drivers, Control Panel can be used to Add Features to Windows,
				where the Pro key is requested. Including a few environment tweaks, this all took a few hours, but I
				encountered no errors and the hardware works as expected.
				]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#201301051200</link>
			<pubDate>Sat, 05 Jan 2013 12:00:00 GMT</pubDate>
			<guid>201301051200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Tools and languages</title>
			<description>
				<![CDATA[The primary development tool for this web site is Microsoft Visual Studio 2008 (.NET 3.5).
				Pages are written in HTML, JavaScript, C#, XML, and a smattering of other scripting
				languages as needed. No databases are currently in use (just XML files).
				The limited AJAX features on the webcam page were hand-coded.&lt;br&gt;
				&lt;b&gt;I had a heck of a time with the Visual Studio 2003 debugger&lt;/b&gt; showing,
				&quot;Error while trying to run project: Unable to start debugging on the web server. 
				The project is not configured to be debugged.&quot;
				Each project in the solution must have a web.config file with the debug setting set to true, and depending
				on how the debugger is started, the app should be rebuilt using the Debug configuration.
				Remember also that Visual Studio is interacting with IIS, so IIS must be configured for the same version
				of .NET Framework supported by the version of Visual Studio. Each version of Visual Studio supports one
				and only one version of .NET Framework, and that cannot be changed. The original Visual Studio .NET
				supports v1.0.3705. VS .NET 2003 supports v1.1.4322. VS .NET 2005 supports v2.0.50727. VS .NET 2008 suppports
				v3.0+. In a DOS prompt, within the proper folder under window\microsoft.net\framework,
				run &quot;aspnet_regiis -i&quot;. Then start the IIS management console. For each project virtual
				directory, there should be an active application under the Directory tab. In some cases, the name
				can be blank, but next to the application name, if you see a Create button, click it. Then for each
				project virtual directiory, go to the ASP.NET tab and pull down the proper ASP.NET version. The error messages
				you see when starting the debugger are very generic and useless. When deploying your app, remember to
				set the web.config files so that debug is false, and deploy the Release configuration, for the best performance.&lt;br&gt;
				&lt;b&gt;The XmlTypeAttribute class&lt;/b&gt; is used to specify the namespace for a custom class when instances are serialized
				by the XmlSerializer. For example, before your class, enter:&lt;br&gt;
				[System.Xml.Serialization.XmlTypeAttribute(Namespace=&quot;http://kbarticles.com/&quot;)]&lt;br&gt;
				For example, you create a custom class that is returned by a web service. When using Visual Studio to
				add a web reference to a client application, a web proxy class (Reference.cs) is automatically created. Within this class,
				you can see the namespace. If you do &lt;i&gt;not&lt;/i&gt; specify the namespace as shown above, Visual Studio will make one up,
				depending on the parent of the reference to the custom class. However, if your web service refers to the custom class from multiple places,
				the proxy class can get multiple references to the custom class in different namespaces. When this happens, VS renames conflicts,
				so that the first reference will be named, say, Custom, and the second reference will be named Custom1. Of course, this causes a
				compilation error, usually something like &quot;cannot implicitly convert type&quot;, because your client does not know about Custom1.
				The solution is to be explicit about the namespace so that only one proxy reference is generated. You could also edit the Reference.cs
				class to fix the problem, but every time you change the web service and update the web reference, you would lose your fix.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200804091200</link>
			<pubDate>Wed, 09 Apr 2008 12:00:00 GMT</pubDate>
			<guid>200804091200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Blogs</title>
			<description>
				<![CDATA[After experimenting for a couple years with a true forum (open-source from
				&lt;a href=&quot;http://www.aspbb.org&quot;&gt;ASPBB&lt;/a&gt;),
				I found that it required ongoing attention and maintenance even though the traffic was very low.
				For a mid-level site like gocek.org, users don&rsquo;t want to be bothered with yet another registration.
				This site provides a mish-mosh of content, so the forum consisted of several unrelated categories.
				The blog and its registration database have been deleted. The current presentation uses many
				blog-like pages that allow comments from unregistered users. I regularly look at a static web page
				and wonder if it should be converted to a blog, as I did with this techie blog.
				The blogs are all in standard RSS 2.0 format, so feel free to subscribe with your favorite feed
				reader. However, the site pages that display the blogs provide for reader comments and other features.
				This is accomplished with custom feed reading software.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200710011200</link>
			<pubDate>Mon, 01 Oct 2007 12:00:00 GMT</pubDate>
			<guid>200710011200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Reader comments</title>
			<description>
				<![CDATA[The blog comment page has been a challeging project involving user interaction,
				persistent storage, anti-hacking techniques and more. The goal was to replace the forum with
				something that readers would actually use. In fact, that seems to be happening, especially
				in the ticket-scam blog. I found a cool site called
				&lt;a href=&quot;http://www.gravatar.com&quot;&gt;Gravatar&lt;/a&gt;
				that provides a centralized database for avatars associated with email addresses. But I didn&rsquo;t
				want users impersonating others, so I have been looking into support for
				&lt;a href=&quot;http://openid.net&quot;&gt;OpenID&lt;/a&gt;,
				Any site can provide an OpenID server, and once registered with that server, a user has a single account
				for all OpenID-enabled sites. The implementation of an OpenID &quot;consumer&quot; that accepts credentials
				from OpenID servers has proven to be nothing short of onerous. The consumer must safely handle user keyboard input,
				transfer to other sites and wait for the user&rsquo;s return, parse HTTP headers and HTML markup from remote sites
				for links to other sites, load XML documents and determine how OpenID is supported by any OpenID server,
				and parse voluminous data from the servers. After all that, no central authority guarantees the trustworthiness
				of any OpenID server, so a rogue OpenID server could validate any user with any identity with no warning
				to the consumer. And, the active OpenID community, while passionate, cannot agree that this lack of
				trustworthiness is an issue, even thought the whole point of asking a user to &quot;log in&quot; implies a lack
				of trust. Yeesh.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200709011200</link>
			<pubDate>Sat, 01 Sep 2007 12:00:00 GMT</pubDate>
			<guid>200709011200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Christian symbols</title>
			<description>
				<![CDATA[The symbol database consists of typical ASP.NET resource files. There was a time when I was pretty proud of this
				page and underlying implementation, but it&rsquo;s actually pretty typical. The symbols page gets, by far, the
				most traffic of any gocek.org page. On that note, I would be happy to hear about your experiences in using the site.
				Search terms are compared against keywords in the database, not against the full symbol description.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200708011200</link>
			<pubDate>Wed, 01 Aug 2007 12:00:00 GMT</pubDate>
			<guid>200708011200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Bibles and translations</title>
			<description>
				<![CDATA[Rudimentary translations from the original English are provided for French and
				Spanish, and full translations are provided for the random Bible verses. To see
				French or Spanish, change your browser&rsquo;s language preferences. Only some of the
				labels on the symbols page are translated. In most cases, translations come
				from &lt;a href=&quot;http://babelfish.altavista.com/&quot;&gt;babelfish.altavista.com&lt;/a&gt; or
				basic web searches. Numbers and dates are not localized. If you&rsquo;d like to 
				volunteer to provide more translations, let me know.&lt;br&gt;
				The random Bible verses are retrieved in the preferred language by custom
				software using text from &lt;a href=&quot;http://www.bibledatabase.org/&quot;&gt;BibleDatabase.org&lt;/a&gt;.
				That site offers many translations. For now, the English version is King James,
				but I will use a more modern version if one becomes available for free. Each
				translations stored on my site uses about 5 megabytes.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200707011200</link>
			<pubDate>Sun, 01 Jul 2007 12:00:00 GMT</pubDate>
			<guid>200707011200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Webcam</title>
			<description>
				<![CDATA[The webcam project has been great fun and is
				described in more detail on the webcam page. Contrast this with my ongoing efforts to support OpenID,
				which has been a ton of work and not nearly as flashy as my front yard. The successful display of a
				near-real-time image on the home and webcam pages requires the coordination of
				a number of hardware and software components, including some custom hardware
				and software. It&rsquo;s not rocket science, but it&rsquo;s not a novice project given my choice of
				equipment (there are camera packages that are made to connect easily to an internet connection). Bad
				images can occur for a number of reasons, including the fact that the microwave
				oven interferes with the wireless camera signal. Including weather data with an
				outdoor camera image was not my idea, but it&rsquo;s a nice touch. Current and
				forecast data are acquired from the US Government&rsquo;s
				&lt;a href=&quot;http://www.weather.gov/&quot;&gt;National Weather Service&lt;/a&gt;.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200706011200</link>
			<pubDate>Fri, 01 Jun 2007 12:00:00 GMT</pubDate>
			<guid>200706011200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>897th (WWII)</title>
			<description>
				<![CDATA[If you have &lt;i&gt;any&lt;/i&gt; information about the 897th or 3562nd,
				please contact me. The diary entry on the 897th main page is coded
				into an XML file and parsed according to the current date. There is a four year
				cycle beginning in late 1942, with the 1944-45 period repeated (because there
				simply aren&rsquo;t four full years of diary entries). The cycle&rsquo;s beginning is timed 
				to match a current leap year with 1944, so that February 29 doesn&rsquo;t have to be 
				fudged. Not all days have unique diary entries. The cycle started fresh in
				2006. The diary entries are available as a web service, because I wanted to
				write a web service. This is essentially a code library that is invoked over
				the internet. If you&rsquo;d like to use the service on your own pages (the only
				thing the service does is return an 897th log entry), I&rsquo;ll be happy to provide
				more information.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200705011200</link>
			<pubDate>Tue, 01 May 2007 12:00:00 GMT</pubDate>
			<guid>200705011200|tek|orig|5|0|0</guid>
		</item>
		<!-- -->
		<item>
			<title>Anti-spam</title>
			<description>
				<![CDATA[Links to big files are &lt;A href=&quot;/portal/obfuscated.htm&quot;&gt;obfuscated&lt;/a&gt; to hide
				from search indexes because I&rsquo;m worried about a rush on my bandwidth if
				everyone in the world can suddenly find the Tiki Room song. The
				&lt;a href=&quot;http://www.captcha.net/&quot;&gt;CAPTCHA&lt;/a&gt;
				implementation on the blog comment page, i.e., the simple arithmetic problem, is intended to be easier
				to use that the usual wavy-letter implementations, although my algorithm is easier to break.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200704011200</link>
			<pubDate>Sun, 01 Apr 2007 12:00:00 GMT</pubDate>
			<guid>200704011200|tek|orig|5|0|0</guid>
		</item>
		<!-- -->
		<item>
			<title>Flash updates</title>
			<description>
				<![CDATA[I wondered how Flash knew to install updates after a login. After all, it is a browser plugin.
				The plugin checks for updates if allowed, and that is a user settable option. When visiting a Flash-enabled
				site, and when the update check finds that Flash is out of date, the plugin installs a RunOnce registry
				key. This is done silently, and most of us do not check for such a key every few minutes.
				The next time the user logs in, possibly days later, and even though the browser plugin is not yet running,
				the registry key starts the update process. The user might then wonder what started the update, but by that time,
				the RunOnce key has alredy deleted itself. Sneaky, but safe.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200811171200</link>
			<pubDate>Mon, 17 Nov 2008 12:00:00 GMT</pubDate>
			<guid>200811171200|tek|orig|5|0|0</guid>
		</item>
		<!-- -->
		<item>
			<title>Bugs I have seen - MSIE6 and replacing innerHtml with images</title>
			<description>
<![CDATA[A table cell with an ID can have its innerHtml replaced by Javascript, without a
page refresh. But if the content is img HTML markup, IE6 does not automatically
download the image. If the image is already cached, it works sometimes. The
general solution was to switch to an AJAX technique, which really does download the image.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200702011200</link>
			<pubDate>Thu, 01 Feb 2007 12:00:00 GMT</pubDate>
			<guid>200702011200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Bugs I have seen - National Weather Service web service</title>
			<description>
				<![CDATA[The National Weather Service web service returns XML data that does not conform
				to the latest security standards (first reported in 2005), so clients using
				.NET Framework 1.1 and later report an error (&quot;The server committed an HTTP
				protocol violation...&quot;). The solution is to edit the proxy class generated by
				Visual Studio to process the returned data according to an older version of the protocol. See
				&lt;a href=&quot;http://weblogs.asp.net/jan/archive/2004/01/28/63771.aspx&quot;&gt;this page&lt;/a&gt;.
				The web service intermittently throws, &quot;Unable to read data from
				the transport connection.&quot; This appears to be a timeout error which I work
				around by requesting less data at a time, multiple times.&lt;br /&gt;
				I noticed errors on 2011-09-26; the web service URL changed from
				http://www.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl to
				http://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php?wsdl, and there were breaking
				changes to NDFDgen(). I struggled with Visual Studio, so I deleted the old web reference,
				closed and reopened VS, added the new web reference, modified NDFDgen(), and then it worked (without
				editing the proxy class to adjust the protocol version, at least there&rsquo;s that).]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200701011200</link>
			<pubDate>Tue, 27 Sep 2011 12:00:00 GMT</pubDate>
			<guid>200701011200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Bugs I have seen - Firefox and synchronous AJAX</title>
			<description>
				<![CDATA[There is a problem with the way FireFox (in 2006) handles the Javascript XMLHttpRequest
				object. This object is used to implement AJAX techniques that allow access to
				remote information via HTTP without refreshing the whole web page. If the &lt;i&gt;open&lt;/i&gt;
				method is called synchronously, the readyState property never gets set to 4
				(completed). Some blogs suggest declaring the onreadystatechange function after
				the call to &lt;i&gt;open&lt;/i&gt;, but this didn&rsquo;t work for me (I had to use an
				asynchronous call). My page behaves better with the asynchronous call, but from
				what I&rsquo;ve seen in the blogs, FireFox is either the only browser that does it
				right, or the only browser that does it wrong.&lt;br&gt;
				&lt;b&gt;Also:&lt;/b&gt; I had a few issue when loading an XML document with Javascript. My XML document was
				being cached by the browser, and this caching apparently cannot be avoided with an HTML no-cache header.
				A simple but hack-ish solution is to do,&lt;br&gt;
				xmlDok.load(&quot;file.xml?rnd=&quot; + Math.random(1000).toString());&lt;br&gt;
				so that the browser thinks a different URL is loaded each time.&lt;br&gt;
				Also, one would expect to be able to select nodes with XPath, via selectSingleNode and
				selectNodes. This works as expected in MSIE, but Firefox implements a different DOM which throws exceptions
				(&quot;selectNodes is not a function&quot; or &quot;selectSingleNode is not a function&quot;). Try these:&lt;br&gt;
				function XSelectNodes(xmldok, elementPath)&lt;br&gt;
				{&lt;br&gt;
				if (window.ActiveXObject)&lt;br&gt;
				{&lt;br&gt;
				return xmldok.selectNodes(elementPath);&lt;br&gt;
				}&lt;br&gt;
				else&lt;br&gt;
				{&lt;br&gt;
				var xpe = new XPathEvaluator();&lt;br&gt;
				var nsResolver = xpe.createNSResolver((xmldok.ownerDocument == null) ? xmldok.documentElement : xmldok.ownerDocument.documentElement);&lt;br&gt;
				var results = xpe.evaluate(elementPath, xmldok, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);&lt;br&gt;
				var i, nodes = [];&lt;br&gt;
				for (i=0; i &lt; results.snapshotLength; i++)&lt;br&gt;
				{&lt;br&gt;
				nodes[i] = results.snapshotItem(i);&lt;br&gt;
				nodes[i].text = nodes[i].firstChild ? nodes[i].firstChild.nodeValue : &quot;&quot;;&lt;br&gt;
				}&lt;br&gt;
				return nodes;&lt;br&gt;
				}&lt;br&gt;
				}&lt;br&gt;
				function XSelectSingleNode(xmldok, elementPath)&lt;br&gt;
				{&lt;br&gt;
				if (window.ActiveXObject)&lt;br&gt;
				{&lt;br&gt;
				return xmldok.selectSingleNode(elementPath);&lt;br&gt;
				}&lt;br&gt;
				else&lt;br&gt;
				{&lt;br&gt;
				var xpe = new XPathEvaluator();&lt;br&gt;
				var nsResolver = xpe.createNSResolver((xmldok.ownerDocument == null) ? xmldok.documentElement : xmldok.ownerDocument.documentElement);&lt;br&gt;
				var results = xpe.evaluate(elementPath, xmldok, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null);&lt;br&gt;
				return results.singleNodeValue;&lt;br&gt;
				}&lt;br&gt;
				}]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200612011200</link>
			<pubDate>Fri, 01 Dec 2006 12:00:00 GMT</pubDate>
			<guid>200612011200|tek|orig|5|0|0</guid>
		</item>
<!-- -->
		<item>
			<title>Bugs I have seen - ASP.NET checkbox controls</title>
			<description>
				<![CDATA[I have run into a couple of issues with ASP.NET CheckBox server controls. When a 
				CheckBox is nested inside an ItemTemplate inside a Repeater control, the
				CheckedChanged event doesn&rsquo;t fire for me. But let&rsquo;s say the Text of each
				CheckBox is set like this:&lt;br&gt;
				&nbsp;&nbsp;&nbsp;Text=&rsquo;&lt; % #&nbsp;DataBinder.Eval(Container,&nbsp;&quot;DataItem.columnX&quot;)%&gt;&rsquo;&nbsp;CssClass=&quot;hideme&quot;&lt;br&gt;
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;small&gt;sorry, I had to insert a couple blanks to get the RSS to display the markup&lt;/small&gt;&lt;br&gt;
				where the hideme CSS class looks like:&lt;br&gt;
				 &lt; style &gt; .hideme LABEL { DISPLAY: none }&lt; /style &gt;&lt;br&gt;
				The result is that each checkbox can have a unique Text property, and the CSS
				class makes it invisible, so it&rsquo;s essentially a custom control property. Then
				do:&lt;br&gt;
				foreach (RepeaterItem dataItem in RepeaterDataTable.Items)&lt;br&gt;
				{&lt;br&gt;
				&nbsp;&nbsp;&nbsp;CheckBox itemCb = (CheckBox) dataItem.FindControl(&quot;CheckBox1&quot;);&lt;br&gt;
				&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...&lt;br&gt;
				The loop gets at each CheckBox and you can then see the Text property.&lt;br&gt;
				Also, an &lt;i&gt;onclick&lt;/i&gt; property can be
				specified for a CheckBox, but the CheckBox server control has no such
				documented property. Microsoft documents that arbitrary attributes can be
				applied to the rendered HTML control. For example, a CheckBox is rendered as an
				HTML input control of type checkbox. A CheckBox can be created to call a
				JavaScript function, client-side, by adding the following line to a code-behind method:&lt;br&gt;
				&nbsp;&nbsp;&nbsp;cb1.Attributes.Add(&quot;onclick&quot;, &quot;jsFunc();&quot;);&lt;br&gt;
				The CheckBox will also invoke server-side methods as usual.]]>
			</description>
			<link>http://www.gocek.org/blog/default.aspx?source=tek#200611011200</link>
			<pubDate>Wed, 01 Nov 2006 12:00:00 GMT</pubDate>
			<guid>200611011200|tek|orig|5|0|0</guid>
		</item>
	</channel>
</rss>
