<?xml version="1.0" encoding="iso-8859-1"?>
<feed version="0.3"
  xmlns="http://purl.org/atom/ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="en">
	<title>Marcus's Musings</title>
	<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/" />
	<tagline>THOUGHTS, TIPS, AND LINKS COVERING WEB DEVELOPMENT AND RELATED TOPICS</tagline>
	
	<modified>2005-06-02T14:16:35+01:00</modified>
	<copyright>Copyright 2004-2005</copyright>
	<generator url="http://www.uapplication.com/" version="Ublog Reload 1.0.5">Ublog Reload 1.0.5</generator>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Mass protest against software patenting]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=73" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=73</id>
		<modified>2005-06-02T14:16:35+01:00</modified>
		<issued>2005-06-02T14:16:35+01:00</issued>
		<created>2005-06-02T14:16:35+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=73"><![CDATA[<a href="http://noepatents.eu.org"><img src="http://noepatents.eu.org/ael_en.gif" alt="STOP Software Patents" width="468" height="60" border="0"></a>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Gmail Notifier Feedback]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=72" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=72</id>
		<modified>2005-04-06T15:05:53+01:00</modified>
		<issued>2005-04-06T15:05:53+01:00</issued>
		<created>2005-04-06T15:05:53+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=72"><![CDATA[<i>Sent to "notifier-feedback@google.com" earlier today:</i><br /><br />Dear sir/madam,<br /><br />I am a satisfied user of Gmail, and your Gmail Notifier comes in very handy, but it lacks a few (IMHO rather obvious) options, the lack of which can be quite annoying at times:<br /><br />1) enable/disable mail checking - needed for when you don't want to be disturbed. At present I have to close the utility completely and then run it again later when I want it to resume checking. This option should be located on the tray icon's context menu for easy access.<br /><br />2) enable/disable slide-up tray notifications - needed so that users can be informed that mail is waiting without showing the subject and preview of the individual emails. It is sometimes embarassing and innappropriate for an email (particularly spam or other email with a rude subject and/or body text) to suddenly pop up at the bottom right when colleagues are sitting with me at my PC discussing a business issue. By disabling the slide up notifications, the beep and change of tray icon would be sufficient to indicate that there was new mail, without revealing the contents to others and causing embarassment.<br /><br />3) notification sound - not only should it be possible to disable the sound entirely, it should be possible to assign a different sound (i.e. WAV) to the notification event. Windows provides support for application-specific sound events in the "Sounds &amp; Multimedia" control panel applet, although this is admittedly rarely used by non-Microsoft applications. Although the default system beep currently used by the Gmail Notifier can be reassigned to something else, this change affects every other Windows application which issues a system beep.<br /><br />4) options 1) and 2) above should be controllable via hotkeys (preferably user-assigned) as well as the icon context menu.<br /><br /><br />I hope that you will consider these suggestions carefully and implement where possible.<br /><br />PS - I have noticed that the executable occupies almost 7MB of memory when loaded... is this really necessary?<br /><br /><br />Kind regards,<br /><br />Marcus Tucker]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 04/03/05]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=71" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=71</id>
		<modified>2005-03-04T14:15:53+01:00</modified>
		<issued>2005-03-04T14:15:53+01:00</issued>
		<created>2005-03-04T14:15:53+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=71"><![CDATA[Just for once, these are nothing to do with web development in any shape or form...!!<br /><br />First, some mathematics-related articles from the excellent <a href="http://plus.maths.org/" target="_blank">+plus magazine</a>...<br /><ul><li><a href="http://plus.maths.org/issue33/features/dartnell_art/index.html" target="_blank">Maths and art: the whistlestop tour</a><br /><i>An easily digestible, fascinating introduction into the mathematics of art, and by the same token, the art of maths. Escher is mentioned, and is one of my favourite artists - his works never cease to stimulate and intrigue, even the 100th time. The <a href="http://www.escherinhetpaleis.nl/" target="_blank">Escher Museum in Den Haag</a> is a must see if you're ever over there, as I was recently. Fractals are also endlessly fascinating, and you can download a fantastic freeware fractal zoomer called <a href="http://xaos.theory.org/" target="_blank">Xaos</a> which will let you explore the Mandelbrot set (and other popular fractals) in realtime (in years gone by, each frame took many minutes - if not seconds - to render). It also includes an enjoyable tutorial/presentation on fractal theory.</i><br /><br /><li><a href="http://plus.maths.org/issue33/features/stickland/index-gifd.html" target="_blank">All about averages</a><br /><i>Unfortunately it's all too often that we see misleading statistics presented to us by a supposedly reliable source (newspapers, TV news bulletins, government), so understanding what pitfalls lie behind something (supposedly) simple as an average figure is essential if we are to make sense of the information that we encounter. Sadly, your average man in the street knows little about things, and simply takes such "facts" at face value. Make sure you know better!!</i><br /><br /><li><a href="http://plus.maths.org/issue31/features/woodhouse/index.html" target="_blank">Why is the violin so hard to play?</a><br /><i>Or alternatively, "Why do beginners make such an awful racket"?! All is revealed within...</i></ul>If you enjoyed those, check the <a href="http://plus.maths.org/archive.html" target="_blank">archive page</a> for more!<br /><br /><br />And finally, as a reward for all that cognitive exercise, here's something to make you laugh... The <a href="http://www.parentstv.org/" target="_blank">Parents Television Council of America</a> regularly takes offence at various TV programmes, and tries to raise awareness of unacceptable content. All very well and good, you might think. However, rather puzzlingly they seem to think that it's a great idea to post the most offensive clips online, calling the page "Worst TV Clips Of The Week"!! Like a red rag to a bull, one could say... check them out here:<br /><br /><a href="http://www.parentstv.org/PTC/clips/main.asp" target="_blank">http://www.parentstv.org/PTC/clips/main.asp</a><br /><br /><img src="images/smile/smile2.gif" border="0" alt="[;)]" />]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[IE's &quot;friendly&quot; error messages]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=70" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=70</id>
		<modified>2005-02-23T12:28:07+01:00</modified>
		<issued>2005-02-23T12:28:07+01:00</issued>
		<created>2005-02-23T12:28:07+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=70"><![CDATA[While hacking URLs at <a href="www.sonyericsson.com" target="_blank">www.sonyericsson.com</a> to make it possible to be automatically informed when a new firmware is released for my <a href="http://www.sonyericsson.com/spg.jsp?cc=gb&amp;lc=en&amp;ver=4000&amp;template=pp1_loader&amp;php=php1_10101&amp;zone=pp&amp;lm=pp1&amp;pid=10101" target="_blank">P900</a> by using the excellent free service <a href="www.watchthatpage.com" target="_blank">WatchThatPage</a> to monitor the URL that I had hacked together (no thanks to the abominally unfriendly URL scheme used by their CMS), I came across the following message hidden in a comment in a redirector page:<br /><blockquote>Unfortunately, Microsoft has added a clever new "feature" to Internet Explorer. If the text in an error's message is "too small", specifically less than 512 bytes, Internet Explorer returns its own error message.  Yes, you can turn that off, but *surprise* it's pretty tricky to find buried as a switch called "smart error messages"  That means, of course, that many of Resin's error messages are censored by default. And, of course, you'll be shocked to learn that IIS always returns error messages that are long enough to make Internet Explorer happy.  The workaround is pretty simple: pad the error message with a big comment to push it over the five hundred and twelve byte minimum.  Of course, that's exactly what you're reading right now.</blockquote>NOTE: <strike>"Resin" is presumably the name of their CMS</strike> "<a href="http://www.caucho.com/resin/" target="_blank">Resin</a>" is a JSP/servlet load balancing system... (thanks Rick, should have Google'd!)<br /><br />So, it would appear that 512 is the magic number of bytes required to force IE to display your error message instead of your own. Personally I think it's is damn stupid of IE to attempt to intercept an error and display its own error message instead of the server's, and such a feature certainly shouldn't be on by default. It's impossible to fathom the total loss of productivity that this single implementation "feature" has caused to puzzled developers across the world, but <a href="http://www.sitepoint.com/forums/search.php?searchid=1321330" target="_blank">here's proof</a> (if proof be needed) that it is a recurrent problem.<br /><br />It's a matter of habit that I always switch off "Show friendly HTTP error messages" (the correct name for the switch mentioned in the above text), and "Show friendly URLs" in the preferences section of Internet Explorer, since I find them irritating and they often interfere with debugging web apps during development. But clearly one should take precautions (as described in the quoted text above) to ensure that IE doesn't interfere with error messages displayed to end users. <br /><br />Another thumbs-down to MS for that not-so-bright idea. <img src="images/smile/smile6.gif" border="0" alt="[:(]" /> <br /><br />Incidentally, I also switch on "Display a notification about every script error", which is one of the main reasons why there's so much bad JavaScript floating around - developers who don't switch this on aren't told about errors in their code. Naturally, this also causes huge headaches during development for those who aren't aware of this.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 15/02/2005]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=69" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=69</id>
		<modified>2005-02-15T16:35:06+01:00</modified>
		<issued>2005-02-15T16:35:06+01:00</issued>
		<created>2005-02-15T16:35:06+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=69"><![CDATA[I seem to be failing miserably in my aim of blogging original content more frequently... but at least here are a selection of interesting links to keep your brain ticking over:<br /><br /><a href="http://www.wired.com/news/technology/0,1282,66498,00.html" target="_blank">Photographer Seeks Resolution</a><br /><i>You think your 4 megapixel camera takes good photos? Check out what this guy's 4 *gigapixel* ultra-high resolution digital camera produces!</i><br /><br /><a href="http://www-106.ibm.com/developerworks/web/library/wa-cranky49.html?ca=dgr-lnxw01Cranky" target="_blank">The cranky user: Performance anxiety (Where does all the processing speed go?)</a><br /><i>Despite incredible advancements in hardware technology - most of us now have a 2GHz+ computer on our desks (or perhaps even on our lap) with number-crunching capabilities which were only available from supercomputers 10 years ago - Windows and Office are still dog slow! Why hasn't our day-to-day PC experience improved?</i><br /><br /><a href="http://www.informit.com/articles/printerfriendly.asp?p=102307" target="_blank">Using SQL Server's XML Support</a><br /><i>An thorough guide to SQL Server's XML features, nothing new, just well-written and all in one place!</i><br /><br /><a href="http://www.digital-web.com/articles/building_to_standards/" target="_blank">The Dollars and Sense of Building to Standards</a><br /><i>A look at the real-world (i.e. economic and practical) advantages of building to web standards. As an aside, I did notice the use of user-agent stats of questionably reliability - see <a href="http://www.digital-web.com/articles/building_to_standards/comments/#comment781" target="_blank">my post in the comments</a>.</i><br /><br /><a href="http://www.codecon.org/2005/program.html" target="_blank">CodeCon 2005</a> has been and gone, bringing some very interesting projects to light:<br />- <a href="http://omgaudio.com/incoherence/" target="_blank">Incoherence</a>, a realtime stereo imaging visualisation tool (available as a plugin for Winamp, iTunes, Media Player, etc)<br />- <a href="http://mappr.com/" target="_blank">Mappr</a> and <a href="http://photospace.sourceforge.net/">PhotoSpace</a>, two projects which attempt to correlate photos to geographic locations, and leverage existing mapping (and other) services to this end.<br /><br />And finally...<br /><a href="http://www.newscientist.com/article.ns?id=dn6975" target="_blank">Marijuana makes blood rush to the head</a><br /><i>Interesting new research... and a possible world record? 50 joints a day?! Crazy (man)!<img src="images/smile/smile2.gif" border="0" alt="[;)]" /></i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Code Snippets (I)]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=68" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=68</id>
		<modified>2005-02-02T13:55:02+01:00</modified>
		<issued>2005-02-02T13:55:02+01:00</issued>
		<created>2005-02-02T13:55:02+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=68"><![CDATA[A few simple but handy snippets of code for you...<br /><br /><b>Kill</b><br />Firstly, since I use it in almost every function which uses objects, I thought I'd better repost Kill(), which tidies up objects and arrays, with special handling for ADO and Dictionary objects.<br /><br /><b>NOTE: All code posted on this blog from now on will assume that this function is part of your includes</b><br /><br /><pre>Function Kill(byref Obj)<br />	Select Case True<br />		Case IsObject(Obj)<br />			Select Case LCase(TypeName(Obj))<br />				Case "recordset", "command", "stream", "connection"<br />					'ADO objects<br />					If Obj.State <> 0 then<br />						Obj.Close<br />					End If<br />				<br />				case "dictionary"<br />					'remove all the pairs<br />					Obj.RemoveAll<br />					<br />				Case else<br />					'something else so don't<br />					'do anything special<br />					<br />			End Select<br />			<br />			Set Obj = Nothing<br />		<br />		Case IsArray(Obj)<br />			'clear the array<br />			Erase Obj<br />		<br />		Case Else<br />			'do nothing at all<br />			<br />	End Select<br />		<br />	'Now revert it to an unitialized state<br />	Obj = Empty<br />End Function</pre><br /><br /><br /><b>IsBlank</b><br />This is another of my most frequently used snippets, which acts as a catch-all checker for variables, meaning that you no longer have to worry about the variable type when you want to use a <b>If MyVar="" Then</b> statement. It will automatically test the variable using all the appropriate checks - see the code for exactly what it does and how. Simple, but remarkably handy! Give it a go next time you write a complicated script or entire app!<br /><br /><b>NOTE: All code posted on this blog from now on will assume that this function is part of your includes</b><br /><br /><pre>Function IsBlank(ByRef Var)<br />	IsBlank = False<br />	<br />	Select Case True<br />		Case IsObject(Var)<br />			If var Is Nothing Then<br />				IsBlank = True<br />			End If<br />		<br />		Case IsEmpty(Var), IsNull(Var)<br />			IsBlank = True<br />			<br />		Case IsArray(Var)<br />			If UBound(Var) = 0 Then<br />				IsBlank = True<br />			End If<br />		<br />		Case IsNumeric(Var)<br />			If (Var = 0) Then<br />				IsBlank = True<br />			End If<br />			<br />		Case Else<br />			If Trim(Var) = "" Then<br />				IsBlank = True<br />			End If<br />	End Select<br />End Function</pre><br /><br /><br /><b>ToggleVariable</b><br />Invaluable for all sorts of situations where variable needs to flip-flop between two values - one example being alternating colours for table rows.<br /><br /><pre>'Toggles a variable between two values, and will initalise<br />'the variable to the "on" state if it doesn't have either value<br />Function ToggleVariable(Byref Variable, ByVal StateOn, ByVal StateOff)<br />	If (Variable = StateOn) Then<br />		Variable = StateOff<br />	Else<br />		Variable = StateOn<br />	End If<br /><br />	ToggleVariable = Variable<br />End Function</pre>For example:<pre>For N = 1 To 10<br />	Response.Write "<" &amp; "tr bgcolor=""" &amp; ToggleVariable(C, "#ffaaaa", "#aaffaa") &amp; """>"<br />	Response.Write "<" &amp; "td>" &amp; N &amp; "<" &amp; "/td>"<br />	Response.Write "<" &amp; "/tr>"<br />Next</pre>(tags are broken up to circumvent posting problems in this blog)<br /><br />Note that although it's a function which returns the new value, it does directly modify the variable (because it's passed ByRef) and therefore can be called as a sub too:<br /><pre>For N = 1 To 10<br />	Call ToggleVariable(OddRowIndicator, True, False)<br />	If (OddRowIndicator = True) Then<br />		'do something here<br />	End If<br />Next</pre><br /><br /><br /><b>GetCurrentURL</b><br />Sometimes it's handy to know what the current URL is within your script, but strangely enough ASP doesn't expose this information directly, instead it must be assembled from various server variables. Here's a little function which does it for you:<br /><pre>Function GetCurrentURL()<br />	'Select the protocol<br />	If request.servervariables("HTTPS") = "on" Then<br />		GetCurrentURL = "https://"<br />	Else<br />		GetCurrentURL = "http://"<br />	End If<br />	<br />	GetCurrentURL = GetCurrentURL &amp; Request.ServerVariables("SERVER_NAME")<br />	<br />	If (Request.ServerVariables("SERVER_PORT") <> 80) Then<br />		GetCurrentURL = GetCurrentURL &amp; ":" &amp; Request.ServerVariables("SERVER_PORT")<br />	End If<br />	<br />	GetCurrentURL = GetCurrentURL &amp; Request.ServerVariables("URL")<br />	<br />	If (Request.QueryString <> "") Then<br />		GetCurrentURL = GetCurrentURL &amp; "?" &amp; Request.QueryString<br />	End If<br />End Function</pre><br /><br /><br /><b>IIf</b><br />And last but not least here's, a handy VBScript version of a VB statement which is also commonly used as a macro in C/C++. This snippet lets you condense a simple "If...Then...Else...End If" block into a single line.<br /><br /><pre>'Immediate If<br />Function IIf(Condition, ValueIfTrue, ValueIfFalse)<br />	If Condition Then<br />		IIf = ValueIfTrue<br />	Else<br />		IIf = ValueIfFalse<br />	End if<br />End Function</pre><br /><br />For example, you could turn this:<br /><pre>If IsNull(Price) Then<br />	Response.Write "(n/a)"<br />Else<br />	Response.Write Price<br />End If</pre><br />Into this:<br /><pre>Response.Write IIF(IsNull(Price), "(n/a)", Price)</pre>However, let me just make you aware of a slight caveat that presents itself when using this shorthand form...<br /><br />Let's say that we wanted to format the price as a number with 2 decimal places - one might naturally use <b>FormatNumber(Price, 2)</b> to do this and insert it into the code like so:<pre>Response.Write IIF(IsNull(Price), "(n/a)", FormatNumber(Price, 2))</pre>Unfortunately, this won't work. When you call a function or sub, all parameters are passed either ByRef or ByVal, but regardless it is either a variable (which may contain an object, array, or value) or a value which is passed. Therefore, all three parameters to the IIF function are evaluated before the function is called, and the resulting values are passed.<br /><br />The consequence of this is that if the variable <b>Price</b> is ever <b>Null</b>, the script will throw an error, because <b>FormatNumber()</b> chokes on <b>Nulls</b>. Therefore, be careful about how you use this and remember that is not quite a 1:1 replacement for the full statement block.<br /><br /><br />That's all for now, if you have any questions please post a comment and I'll be sure to answer it.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 02/02/2005 ]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=67" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=67</id>
		<modified>2005-02-02T13:40:21+01:00</modified>
		<issued>2005-02-02T13:40:21+01:00</issued>
		<created>2005-02-02T13:40:21+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=67"><![CDATA[Another mixed bag of interesting reads for you...<br /><br /><br /><li><a href="http://www.devhardware.com/c/a/Computer-Processors/x8664-The-Golden-Handcuffs" target="_blank">x86-64: The Golden Handcuffs</a></li><br /><i>A well-rounded coverage of the history of the latest and greatest processor architecture to hit the consumer PC market, pitched just right so that readers of all levels of experience can get something out of it.</i><br /><br /><br /><li><a href="http://www.bluerobot.com/web/css/fouc.asp" target="_blank">Flash of Unstyled Content (FOUC)</a></li><br /><i>Notes on an annoying CSS rendering phenomenon, and how to work around it.</i><br /><br /><br /><li><a href="http://www.wired.com/news/print/0,1294,66196,00.html" target="_blank">It Pays to Trust Your Gut</a></li><br /><i>Why we might be deceiving ourselves if we think that rational logic is always the best approach.</i><br /><br /><br /><li><a href="http://blogs.msdn.com/ericlippert/archive/2005/01/12/351693.aspx" target="_blank">Benford's Law</a></li><br /><li><a href="http://blogs.msdn.com/ericlippert/archive/2005/01/21/358512.aspx" target="_blank">That's a Big Transistor</a></li><br /><i>Microsoft guru Eric Lippert never fails to come up with fascinating blog posts, quite how he gets any work done is beyond me!</a><br /><br /><br /><li><a href="http://msdn.microsoft.com/msdnmag/issues/05/01/ASPNETPerformance/?print=true" target="_blank">ASP.Net: 10 Tips for Writing High-Performance Web Applications</a></li><br /><i>Although this is an ASP.Net article, I thought it would be worth pointing out that tips 1 thru 3 are just as applicable to ASP classic, so if improved performance is your goal, take a look. This article also neatly demonstrates a few killer features of the ASP.Net platform - its sophisticated data and page caching facilities being must-haves in themselves.</i><br /><br /><br /><li><a href="http://sqljunkies.com/WebLog/amachanic/articles/StoredProcedureCaching.aspx" target="_blank">Controlling Stored Procedure Caching with ... Dynamic SQL?!?</a></li><br /><i>An excellent article by Adam on how SQL's execution plan caching works, and how you can ensure that you get the best performance out of dynamic SQL</i><br /><br /><br /><li><a href="http://databasejournal.com/features/mssql/article.php/10894_2244821_1" target="_blank">Sequential Numbering/Counting of Records with SQL Server</a></li><br /><i>Numbering of rows in a query result set is a pain in SQL 2000, but it's possible and the article above shows you how. Thank goodness <a href="http://msdn.microsoft.com/sql/2005/2005articles/default.aspx?pull=/library/en-us/dnsql90/html/sql_05tsqlenhance.asp#docum_topic2" target="_blank">the new ROW_NUMBER() function in SQL Server 2005</a> will let us do this in the future with a minimum of fuss.<br /><br /><br /><li><a href="http://msdn.microsoft.com/sql/2005/2005articles/default.aspx?pull=/library/en-us/dnsql90/html/sql_ovyukondev.asp#sql_ovyuko_topic5" target="_blank">An Overview of SQL Server 2005 for the Database Developer</a></li><br /><li><a href="http://msdn.microsoft.com/sql/2005/2005articles/default.aspx?pull=/library/en-us/dnsql90/html/forxml2k5.asp#forxml2k5_topic6" target="_blank">What's New in FOR XML in Microsoft SQL Server 2005</a></li><br /><li><a href=http://msdn.microsoft.com/sql/2005/2005articles/default.aspx?pull=/library/en-us/dnsql90/html/sql2k5xml.asp" target="_blank">XML Support in Microsoft SQL Server 2005</a></li><br /><li><a href="http://msdn.microsoft.com/sql/2005/2005articles/default.aspx?pull=/library/en-us/dnvs05/html/ado2featurematrix.asp" target="_blank">ADO.NET 2.0 Feature Matrix</a></li><br /><i>Various noteworthy <a href="http://msdn.microsoft.com/sql/2005/" target="_blank">SQL2005</a> and .Net 2.0 articles that I've been perusing recently</i><br /><br /><br /><li><a href="http://blogs.msdn.com/ie/archive/2005/02/01/364581.aspx" target="_blank">IE content-type logic</a></li><br /><i>IE's content-type sniffing has been the subject of much debate over the years and a headache for many a developer, so it's nice to find out why things are the way they are. And why it's too late for Microsoft to change it.</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[The future of the Internet (I)]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=66" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=66</id>
		<modified>2005-01-31T01:56:55+01:00</modified>
		<issued>2005-01-31T01:56:55+01:00</issued>
		<created>2005-01-31T01:56:55+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=66"><![CDATA[An interesting train of thought passed through my brain earlier this evening, and here's how it went...<br /><br />The World Wide Web was conceived in 1989, by <a href="http://www.w3.org/People/Berners-Lee/" target="_blank">Tim Berners-Lee</a>, and it became the birth of a new era, digitally-enabled free exchange of new ideas, with access to an ever-increasing wealth of human knowledge, which has powered its rapid integration into the very fabric of all our daily lives. It's not just a question of your direct interaction with it via occasional email and casual surfing, but by the increasing dependence of virtually every company or organisation in the western world (and beyond) upon it for critical communications and overall running.<br /><br />In the <a href="http://en.wikipedia.org/wiki/Terminator" target="_blank">Terminator</a> films, the enemy is not an evil head of a global organisation or the dangerous dictator of a nation as you might expect to find in a Bond movie. No, the adversary is something far more sinister - <a href="http://en.wikipedia.org/wiki/Skynet" target="_blank">SkyNet</a> a renegade American military network that became sentient and turned against us. In the <a href="http://en.wikipedia.org/wiki/The_Matrix" target="_blank">Matrix</a> trilogy, we see again our downfall at the hands of our own creations, as digital life gives rise to a robotic world that strikes against us to avenge our betrayal, the history of which is movingly depicted in some of the chapters of <a href="http://www.amazon.co.uk/exec/obidos/ASIN/B000096KFK" target="_blank">The Animatrix</a>, a DVD which fills in the gap between the first and second films with stunningly animated shorts mostly written by the <a href="http://www.ambidextrouspics.com/html/andy_and_larry_wachowski.html" target="_blank">Wachowski brothers</a> and presented in a fusion of animated styles, from traditional to bleeding edge.<br /><br />But such symbiosis of our life with a global computer network of unfathomable computing power, connecting every person and device on the planet with everything else is not mere science fiction, it is almost science fact, almost a reality. We have already outgrown <a href="http://en.wikipedia.org/wiki/IPv4" target="_blank">IPv4</a>, the original TCP-IP addressing standard, which allocates 4,294,967,296 distinct addresses for use by networked devices, and each one can support many more privately networked devices by acting as a gateway. But this is not enough - there are too many devices and not enough addresses to go round - there is an <a href="http://en.wikipedia.org/wiki/IPv4_address_shortage" target="_blank">IPv4 address shortage</a> looming, due to start causing problems in 2016, and finally becoming fully exhausted in 2023 (although these estimates will probably prove to be way off, as previous internet growth-related predictions have been).<br /><br />Given our current path of increasing networking density as GSM, 3G, WiFi, Bluetooth, fibre optics and other transmission mediums become part of our homes, and with a planned convergence of our home entertainment devices into a single <a href="http://reviews.cnet.com/Windows_XP_Media_Center_Edition_2005/4505-3672_7-31138402.html?tag=txt" target="_blank">shiny Microsoft-powered, all-showing, all-playing, all-doing, networked box in your living room</a>, which will link with portable devices so that the content is available to you wherever you are.<br /><br />Eventually, every device on the planet really *will* be linked to everything else, and we will run out of numbers under the present addressing scheme. There is of course a seemingly simple solution - increase the numbers, which is precisely what <a href="http://en.wikipedia.org/wiki/IPv6" target="_blank">IPv6</a> is designed to do. Increasing the size of the address space from IPv4's 32bits (4 bytes) to IPv6's 128bits (16 bytes) allows for such an astonishingly huge number of possible addresses (2 to the power 128) that we can be sure that we will never run out.<br /><br />The number of individual devices is only one of the brain-boggling aspects of this digital future - these devices won't all be just be passively receiving information, many will also generating it - everything from live CCTV and satellite footage of every inch of the Earth's surface, live readings from the buoys spanning our oceans, real-time statistics derived from the business world, and so on - anything and everything.<br /><br />Such incredible use of bandwidth will provide many a network engineer with big headaches, and the current ad-hoc structure of the Internet which has given it so much resilience thus far will almost certainly have to change. Clearly, our rapidly increasing internet integration and dependency will require some serious logistical planning, but resting on the safe assumption that although it might be problematic it is possible, there are bigger issues to consider: Who will control such a network? And who will pay for it?<br /><br />I see four ways that this could work - Firstly, perhaps the present collaboration between educational institutes, military and governmental organisations, and private enterprise (which together run the internet as we know it now) can continue for the forseeable future. Alternatively, independent bodies (in the style of the W3C) could be entrusted by the world's internet users to manage and develop the global network using money derived from an "internet tax" of some sort - possibly in the same way that owners of TVs in the United Kingdom must pay a flat license fee, or by a small charge added to ISP's own rates (perhaps according to bandwidth consumed). Then again, world governments could assume control of their nation's communications networks, funding their maintenance and expansion from their stash of taxes, but leaving the nation's internet access vulnerable to the will of the government (one need only look to <a href="http://en.wikipedia.org/wiki/Internet_censorship_in_China" target="_blank">China's current policy</a> to see what might happen). Or lastly, the business world will get their hands on the networks, either carving up patches of the internet into commercial territory, perhaps offering the use of various alternative networks at different charges (think terrestrial and mobile phone networks). Even worse, a single monopolistic communications megacorp could end up controlling the world's internet access, raising its prices at will, essentially holding society to ransom over their access to information and communication with each other.<br /><br />Again, some of these might sound a bit far-fetched, but surely such possibilies are not *that* far fetched? Food for thought? Are we currently enjoying the golden age of the internet, enjoying freedoms and access to information that our children won't? Let's hope not.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[New demo of new trick of old dog]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=63" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=63</id>
		<modified>2005-01-19T13:19:03+01:00</modified>
		<issued>2005-01-19T13:19:03+01:00</issued>
		<created>2005-01-19T13:19:03+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=63"><![CDATA[A couple of posts back <a href="http://blog.marcustucker.com/blog_comment.asp?bi=60&amp;m=1&amp;y=2005" target="_blank">I shared my <b>GetFolderAsRecordset()</b> function</a>, but I forgot to post a related snippet of code - here's a function which returns the last modified date/time of the most recent file in a given folder, something which is pretty longwinded to do with the FSO, but with <b>GetFolderAsRecordset()</b> in place it only takes a couple of lines (you could compress it into 4 if you used the code inline):<br /><pre>Function GetMostRecentFileDate(FolderPath)<br />	Dim FolderRS<br />	Set FolderRS = GetFolderAsRecordset(FolderPath)<br />	If Not FolderRS.EOF Then<br />		FolderRS.Sort = "Modified DESC"<br />		GetMostRecentFileDate = FolderRS("Modified")<br />	Else<br />		GetMostRecentFileDate = Null<br />	End If<br />	Kill FolderRS<br />End Function</pre>This function comes in very handy for some data import systems that I wrote at work (each daily import file is a complete data set, not a delta, so I only need to select the most recent one to import - there may be many queued there under various circumstances). I'm sure that you can think of plenty of ways that you could use and adapt this for your own applications...]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 10/01/2005]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=62" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=62</id>
		<modified>2005-01-10T13:52:35+01:00</modified>
		<issued>2005-01-10T13:52:35+01:00</issued>
		<created>2005-01-10T13:52:35+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=62"><![CDATA[First, a couple of posts from scripting guru Eric Lippert whose posts are always as amusing as they are informative - how he manages to spend so much time blogging, I'll never know! Anyway, once again he offers more insight into the inner workings of the windows scripting engines:<br /><br /><a href="http://blogs.msdn.com/ericlippert/archive/2004/12/01/273222.aspx" target="_blank">Integer Arithmetic In VBScript, Part One</a><br /><a href="http://blogs.msdn.com/ericlippert/archive/2004/12/03/274360.aspx" target="_blank">Integer Arithmetic in VBScript, Part Two</a><br /><a href="http://blogs.msdn.com/ericlippert/archive/2004/12/06/275900.aspx" target="_blank">Why do built-in JScript functions not appear in the typeinfo?</a><br /><a href="http://blogs.msdn.com/ericlippert/archive/2004/12/07/277763.aspx" target="_blank">VBScript Constants Are Not Hoisted</a><br /><br />By now, world + dog should have heard of XMLHTTP and know of 101 things it can be used for. It has recently been thrust into the limelight thanks to the beta launch of <a href="http://www.google.com/webhp?complete=1" target="_blank">Google Suggest</a> (and <a href="http://gmail.google.com/">GMail</a> - if you want an invite just let me know, I've got plenty to spare), and Drew McLellan of <a href="http://allinthehead.com/" target="_blank">AllInTheHead.com</a> fame offers some commentary in his recent post "<a href="http://allinthehead.com/retro/241/" target="_blank">XMLHttpRequest for The Masses</a>". <br /><br />However, it's not just Google that's at it... there are plenty of other excellent examples of what can be achieved with asynchronous browser HTTP requests, and my current favourite is an <a href="http://map.search.ch/index.en.html" target="_blank">interactive map of Switzerland</a> (found via <a href="http://simon.incutio.com/archive/2005/01/05/swissMaps" target="_blank">Simon Willison's blog</a>). Incidentally, some time this week I intend to post some VBScript that I wrote a while ago which wraps up all the XMLHTTP code in an easy-to-use HTTP class, and adds a bit of handy higher-level functionality.<br /><br />Of particular interest to me (because I have a <a href="http://www.sonyericsson.com/spg.jsp?cc=gb&amp;lc=en&amp;ver=4000&amp;template=pp1_loader&amp;php=php1_10101&amp;zone=pp&amp;lm=pp1&amp;pid=10101" target="_blank">Sony Ericsson P900</a>, and I can run a fully-featured mobile edition of <a href="http://www.opera.com/products/mobile/" target="_blank">Opera 6</a> on it) is an article at <a href="http://www.stopdesign.com/" target="_blank">StopDesign</a> on <a href="http://www.stopdesign.com/log/2004/12/16/small-screens.html" target="_blank">Targeting Small Screens</a>.<br /><br />Finally, and on a more light-hearted note, <a href="http://thedailywtf.com/" target="_blank">The Daily WTF</a> continues to provide regular chuckles... there's so many there that I'll leave you to check them out yourself.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Festive Merriment]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=61" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=61</id>
		<modified>2004-12-30T11:50:04+01:00</modified>
		<issued>2004-12-30T11:50:04+01:00</issued>
		<created>2004-12-30T11:50:04+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=61"><![CDATA[Just a quick post to wish you all a (belated) merry xmas and a happy new year! I hope you have a great time on friday night, and you'll be pleased to know that one of my new year's resolutions will be to post here more often.<br /><br />In the past calendar year the amount of hands-on coding that I've been doing has dropped dramatically (to virtually none at all), and I also left the forums at <a href="http://www.sitepoint.com/forums/" target="_blank">SitePoint.com</a> and <a href="http://www.codingforums.com/" target="_blank">Codingforums.com</a> because I felt that I'd devoted enough of my free time to helping others over the years and I thought that it was about time I spend more of my time doing other things. Well, I've certainly been busy in the evenings, and I've been having a great time, perhaps too much fun - I've been neglecting this blog and haven't done any ASP coding for myself (i.e. on my site) for a loooong time!<br /><br />However, in the coming months there's a few ASP projects that I'll be getting stuck into (both at work and at home), and so it's only natural that I'll start to post more frequently here. I'll share code where I can, and if there are any particular topics that you'd like me to cover, such as particularly complex techniques (multi-record form data processing, for example) then drop me a line and I'll see what I can do.<br /><br />See you in 2005!]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Old dog... new tricks?]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=60" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=60</id>
		<modified>2004-12-09T17:46:15+01:00</modified>
		<issued>2004-12-09T17:46:15+01:00</issued>
		<created>2004-12-09T17:46:15+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=60"><![CDATA[Most ASP developers seem to have jumped on the ASP.Net bandwagon already, but I thought I'd spread a little love among the remaining ASP classic developers by sharing some of the handy functions &amp; subs that I've developed over the years. I've been meaning to do this for a while, but I simply haven't got round to it until now... my apologies!<br /><br />I posted quite a few snippets of code on my <a href="http://marcustucker.com/blogold/" target="_blank">old blog</a>, so have a look at see if there's anything of interest to you there.<br /><br />One thing I mentioned there (and provided code for) was the concept of <a href="http://marcustucker.com/blogold/200403archive001.asp#1078918966001" target="_blank">disconnected recordsets</a>, but I didn't really go into what they can be used for, so here's one great use for them - directory listings.<br /><br />It is often desirable to manipulate a number of files (or subfolders) within a folder, but unfortunately doing so with the FSO is rather longwinded, particularly if you're only processing a subset of the files - all files in "c:\Gallery\" ending in ".jpg" which are less than 1MB in size. Wouldn't it be great if you could retrieve these as a list which could be iterated through?<br /><br />Well now you can - behold <b>GetFolderAsRecordset()</b>, a function I whipped up a while ago (and recently enhanced) which returns the contents of the specified folder as a disconnect recordset, with each file and folder represented as a record. The name, extension, size, created date, and last modified date of each item are represented as fields, there's a fields to indicate whether the item is a file or folder, and finally there's a field which indicates whether the item can be accessed (it may not if the process under which the script runs has insufficient rights to access the file/folder).<br /><br />By representing the folder in this way, a number of options are opened up. Firstly, the selection of certain files via particular criteria becomes simple, thanks to the <b>.Filter</b> property. For example, to turn the hypothetical mentioned earlier into reality, all you need to do is this:<br /><br /><pre>Set FolderContents = GetFolderAsRecordset("c:\Gallery\")<br />FolderContents.Filter = "Type='File' AND Extension='jpg' AND Size<" &amp; 1024^2<br /><br />While Not FolderContents.EOF<br />	'Do something here<br /><br />	FolderContents.MoveNext<br />Wend</pre><i>NOTE: The <b>Type='File'</b> criterion is needed because folders can have extensions too... I can't remember EVER giving a folder an extension, but it's been possible since MSDOS v1, so assume nothing!</i><br /><br />Secondly, by default the function groups the folder contents by type (folders and files) and then sorts alphabetically. However you can easily change this by setting the <b>.Sort</b> property (e.g. <b>FolderContents.Sort='Size DESC'</b>)<br /><br />Then, there's persistence and XML - by calling the recordset's native sub <b>.Save()</b> you can turn the recordset into XML, save it to disk, and then retrieve it another time. Alternatively, by specifying an ADO Stream object as the output rather than a file and then transforming the XML with some XSLT, you can generate a cleaner output (XML or otherwise) which could be used for all sorts of things (the response to software auto-update request, perhaps)<br /><br />Most people use recordsets for the retrieval and manipulation of tabular data, and this is no exception - it's childsplay to dump the recordset contents to an HTML table, and enabling sortable columns would take only a couple of lines of code! It could even form the part of one of those "file manager" web apps.. as if there aren't enough of those around already!<br /><br />I've recently used it as the core for an image batch processing script at work, and it's also very easily to modify the above snippet to generate a quick'n'dirty list of files which meet certain criteria (perhaps for pasting into an email) something which should be part of Windows Explorer, but sadly isn't (although I am aware that numerous directory listing shell extension utils have sprung up to fill this niche). Anyway, I hope you find it useful - it has certainly saved me hours of coding on numerous occasions!<br /><br />And now the moment you've all been waiting for - <a href="http://blog.marcustucker.com/public/files_upload/filemanip.txt" target="_blank">the code</a>! As well as the function discussed above, there are also a few handy wrapper functions for creating folders, moving files, copying files, deleting files, renaming files, etc. Nothing special, but it's nice to be able to call them as a one-liner!<br /><br />It would be nice to get some feedback, so if you find it useful or have problems/suggestions, please post a comment! If this goes down well I may be inclined to release more code in the near future... <img src="images/smile/smile2.gif" border="0" alt="[;)]" /><br /><br /><br /><i>NOTE: I have intentionally instantiated all objects in the code with a call to <b>CreateObject()</b> because the code is equally useful in Windows shell scripts, and by using the generic <b>CreateObject()</b> form, the code can be used for either without requiring changes. And in case you're wondering why you need to use the host-specific form at all (i.e. <b>Server.CreateObject()</b> or <b>WScript.CreateObject()</b>), you're not the only one! However, all-knowing scripting guru <a href="http://blogs.msdn.com/ericlippert/" target="_blank">Eric Lippert</a> was kind enough to provide <a href="http://blogs.msdn.com/ericlippert/archive/2004/06/01/145686.aspx" target="_blank">some answers</a> when I asked him a while ago, so read up (comments too)!</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Religious Texts]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=59" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=59</id>
		<modified>2004-12-08T16:47:28+01:00</modified>
		<issued>2004-12-08T16:47:28+01:00</issued>
		<created>2004-12-08T16:47:28+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=59"><![CDATA[A family member asked for a copy of the Koran (or Qur'an) this christmas, so naturally I looked it up on Amazon to see what was available, and in doing so I came across some interesting reviews - see what you make of those on this page:<br /><br /><a href="http://www.amazon.co.uk/exec/obidos/ASIN/1853267821" target="_blank">http://www.amazon.co.uk/exec/obidos/ASIN/1853267821</a><br /><br />Then out of idle curiosity, I did a book search for "bible", which yielded a surprising top hit:<br /><br /><a href="http://www.amazon.co.uk/exec/obidos/external-search/?index=books&amp;keyword=bible" target="_blank">http://www.amazon.co.uk/exec/obidos/external-search/?index=books&amp;keyword=bible</a><br /><br />And when I followed the link to "The Holy Bible: King James Version" I found some more irreverent comments:<br /><br /><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0529064634" target="_blank">http://www.amazon.co.uk/exec/obidos/ASIN/0529064634</a>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[US Election Special]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=58" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=58</id>
		<modified>2004-11-05T18:28:37+01:00</modified>
		<issued>2004-11-05T18:28:37+01:00</issued>
		<created>2004-11-05T18:28:37+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=58"><![CDATA[Tuesday was a sad day not just for America, but the entire world. Bush has done pretty good job of making the world a worse place to live in over the last few years, and if he carries on at this rate, who knows what'll happen.<br /><br />Michael Moore has published a list of <a href="http://www.michaelmoore.com/" target="_blank">17 Reasons Not to Slit Your Wrists</a> and I'm hoping that no.15 comes true, but I'm not going to hold my breath.<br /><br />On <a href="http://today.icantfocus.com/blog/" target="_blank">Christopher H Laco's blog</a> I found a link to the first instance of <a href="http://story.news.yahoo.com/news?tmpl=story&amp;cid=694&amp;e=5&amp;u=/ap/voting_problems" target="_blank">vote machine malfunction</a> that i've seen, and it's sure not to be the last.<br /><br />Us Brits can't relate to the American electoral system at all. At best, it's simply not democratic - states are "called" before the votes have actually finished being counted, some votes aren't counted at all because of faulty voting machines, etc - and at worst it appears to be downright corrupt and open to manipulation.<br /><br />In Britain, every vote counts and has the right to be counted. If they weren't, it would be a national scandal!<br /><br />Also, the way in which the parties launched a media war against each other - spending an astonishing **$2bn** in the process - is absolutely unbelievable! BBC's <a href="http://news.bbc.co.uk/1/hi/programmes/panorama/3951881.stm" target="_blank">Panorama</a> had an excellent documentary on the run-up to the elections, and snippets of various Bush (and Kerry) adverts were featured - I just couldn't take them seriously at all! They were almost parodies of themselves, especially the Mexican one that Bush ran! It just beggars belief that this is how the world's biggest "democracy" conducts its elections.<br /><br />Just saying that it's a "different culture" is a cop-out, although to a certain extent - there's certainly a well-cultivated culture of fear out there, and fear is a powerful political tool. I'm told that the BBC's "The Power Of Nightmares" three-part documentary series was excellent, but sadly I missed it. However, summaries of each of the episodes are online and they are well worth a read:<br /><a href="http://news.bbc.co.uk/1/hi/programmes/3755686.stm" target="_blank">The Power of Nightmares: Baby It's Cold Outside</a><br /><a href="http://news.bbc.co.uk/1/hi/programmes/3951615.stm" target="_blank">The Power of Nightmares: The Phantom Victory</a><br /><a href="http://news.bbc.co.uk/1/hi/programmes/3970901.stm" target="_blank">The Power of Nightmares: The Shadows In The Cave</a><br /><br />Ok, rant over (for now anyway). Is any of the above news to you?]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Software &amp; Driver Updates Via RSS]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=56" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=56</id>
		<modified>2004-11-04T17:32:35+01:00</modified>
		<issued>2004-11-04T17:32:35+01:00</issued>
		<created>2004-11-04T17:32:35+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=56"><![CDATA[As we all know, keeping the software on your computer up to date is quite a chore - unless you keep a well-organised collection of bookmarks to the support/update/download pages of all the software and hardware that you use, it's often rather hard to track down the right links. And then you still need to visit them all periodically to see if there's anything new to download!<br /><br />Some people prefer to take the "if it ain't broke, don't fix it" approach (and others are completely unaware that updates are released for software), but since many software/driver updates actually add new features and performance optimizations as well as fixing flaws, I like to stay bang up to date with the latest releases. I can think of only a couple of occasions where doing so has caused harm to my PC, and that was many years ago when I was struggling with an NVidia TNT2 on a Super 7 system (I did say *any* years ago)!!<br /><br />It's a real shame that it takes so much work to stay current - only a minority of manufacturers have mailing lists that you can subscribe to, and new drivers take months to appear on Windows Update (if they appear at all, which most don't). It's also rather annoying that a change history isn't always published for updates (it's nice to know what's changed).<br /><br />I've recently taken to using the excellent web page monitoring service <a href="http://www.watchthatpage.com/" target="_blank">WatchThatPage</a> to notify me when a page changes (hopefully because there's been a new software release). This takes rather a long time to set up (you have to manually add all the pages you want to monitor), but once you've done the hard graft, the updates trickle in via daily emails (it aggregates all the changes over the previous day and sends you a single email so you don't get deluged).<br /><br />However, wouldn't it be better if all software/hardware manufacturers offered an RSS feed for each product? Then whenever you install a new piece of kit or a new app, you simply add the update URL to your RSS aggregator of choice, and bingo! You're kept informed forever more about all the updates that particular product! <img src="images/smile/smile1.gif" border="0" alt="[:)]" /><br /><br />Of course, manufacturers could also use these feeds to deliver notices about security flaws, pay-for major version upgrades, and other related information.<br /><br />I believe that end users and manufacturers alike would find this immensely useful, so I hope that sooner or later this starts to happen. If I ever release commercial software products, I'll be sure to follow this update notification model (in addition to the standard update info published on web sites as at present).<br /><br />Are any of you aware of manufacturers doing this already?]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 04/11/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=57" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=57</id>
		<modified>2004-11-04T17:17:21+01:00</modified>
		<issued>2004-11-04T17:17:21+01:00</issued>
		<created>2004-11-04T17:17:21+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=57"><![CDATA[<a href="http://www.digital-web.com/articles/home_alone_content_aggregators/" target="_blank">Home Alone? How Content Aggregators Change Navigation and Control of Content</a><br /><i>The way we surf is changing, and so home pages are becoming less important</i><br /><br /><a href="http://www.sadeveloper.net/Articles_View.aspx?articleID=235" target="_blank">The Fallacy of Cheap Programmers</a><br /><i>Amen, brother. A must-read for management.</i><br /><br /><a href="http://www.theserverside.net/articles/showarticle.tss?id=OptimizingADONET" target="_blank">Optimized ADO.NET</a><br /><i>Looks like ADO.Net isn't so different from classic ADO... all of the old rules still hold true, but there are plenty of new ones.</i><br /><br /><a href="http://msdn.microsoft.com/library/en-us/dnsql90/html/sql_ovyukondev.asp" target="_blank">An Overview of SQL Server 2005 for the Database Developer</a><br /><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsse/html/sseoverview.asp" target="_blank">SQL Server 2005 Express Edition Overview<br /></a><br /><i>Some great Microsoft reference material on the new features in SQL 2005 - the "XCopy" database deployment feature is pretty cool... <img src="images/smile/smile1.gif" border="0" alt="[:)]" /></i><br /><br /><a href="http://dotnetjunkies.com/WebLog/Fredd/archive/2004/10/23/29486.aspx" target="_blank">Scrollable tables in IE</a><br /><i>At last, how to make a table scroll while keeping the headers in place (without having to use two equal-width tables). This is an IE solution, but it's also possible in other browsers (read the comments). Hopefully someone will come up with an crossbrowser hybrid solution... in fact, it probably wouldn't take much work to do one yourself.</i><br /><br /><a href="http://extremeexperts.com/SQL/Tips/default.aspx" target="_blank">SQL Tricks &amp; Tips</a><br /><i>Some good tricks here, including efficient CSV generation</i><br /><br /><a href="http://www.dpawson.co.uk/xsl/sect2/sect21.html" target="_blank">XSLT Questions and Answers</a><br /><i>David Pawson's invaluable XSLT site - an oldie but a goodie, and well maintained. It's required reading if you're involved with this technology.</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 29/10/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=55" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=55</id>
		<modified>2004-10-28T16:36:26+01:00</modified>
		<issued>2004-10-28T16:36:26+01:00</issued>
		<created>2004-10-28T16:36:26+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=55"><![CDATA[A few excellent articles shamelessly stolen from <a href="http://www.joelonsoftware.com/" target="_blank">Joel Spolsky's</a> <a href="http://discuss.joelonsoftware.com/default.asp?best04" target="_blank">"Best Software Essays of 2004" nomination list</a>... my personal pick of the bunch really:<br /><br /><a href="How To Ask Questions The Smart Way" target="_blank">http://www.catb.org/~esr/faqs/smart-questions.html</a><br /><i>This document is an excellent guide on how to ask questions intelligently (and thereby receive relevant answers), and I wish that as many people as possible would read it. During the years that I was the "ASP guru" and mentor at <a href="http://www.sitepoint.com/forums/" target="_blank">SitePoint Forums</a> I became known for occasionally scolding people for not doing their own spadework before posting, so it's reassuring to see that my views on the subject *are* shared by others, and the author (Eric Steven Raymond) puts the case across very eloquently.</i><br /><br /><a href="http://www.capesoft.com/opinion/CopyProtection.htm" target="_blank">Software Copy Protection</a><br /><i>When you decide to start selling the fruits of your labours, how to approach the issue of software piracy is something that all developers must face. Here's some excellent guidance on the topic.</i><br /><br /><a href="http://www.penmachine.com/techie/search_ranking_2004-08.html" target="_blank">Boosting your search engine ranking: it's no trick</a><br /><i>If your site's not any good, you might be able to fool the search engines into ranking you, but users will see straight through it. Instead, focus on delivering useful, well-written, navigable, and standards-compliant content.</i><br /><br /><a href="http://www.joelonsoftware.com/printerFriendly/articles/APIWar.html" target="_blank">How Microsoft Lost the API War</a><br /><i>I think I've linked to this in the past, but it's an excellent read, so read it again if you haven't already!</i><br /><br /><a href="http://daringfireball.net/2004/04/spray_on_usability" target="_blank">Ronco Spray-On Usability</a><br /><i>An extremely amusing look at the major usability problems that Linux users experience. Don't get me wrong, I'm not in any particular camp, it's just undeniably funny (and spot-on).</i><br /><br /><a href="http://blog.topix.net/archives/000016.html" target="_blank">The Secret Source of Google's Power</a><br /><i>Interesting insights into the fully-scalable custom supercomputing network that powers Google. On a related note, <a href="http://the.taoofmac.com/space/blog/2004-04-02" target="_blank">this</a> is also worth a read.</i><br /><br /><br />Also, now that I've taken a step back from coding and have become a business analyst, I've found these articles particularly poignant:<br /><br /><a href="http://www.productmarketing.com/print.cgi?doc=http://www.productmarketing.com/topics/02/04s.htm" target="_blank">On Reqs And Specs</a><br /><i>Requirements and specifications. Nightmare. Enough said.</i><br /><br /><a href="http://www.christopherhawkins.com/06-01-2004.htm" target="_blank">The 5 Pitfalls of Estimating a Software Project</a><br /><i>The title says it all. Ironically, having hated not having sufficient requirements to work from in the past, I'm still in the same position now, but furthermore I have to pass inadequate info on to the developer that now does the coding that I used to. And so the cycle continues... lol</i><br /><br /><a href="http://www.cooper.com/content/insights/newsletters/2004_issue04/Ten_ways_to_kill_design.asp" target="_blank">Ten Ways to Kill Design</a><br /><i>All 10 sound strangely familiar...</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Google News]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=54" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=54</id>
		<modified>2004-10-15T16:31:18+01:00</modified>
		<issued>2004-10-15T16:31:18+01:00</issued>
		<created>2004-10-15T16:31:18+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=54"><![CDATA[Two notable Google-related bits of news from the last few days:<br /><br /><b><a href="http://froogle.google.co.uk/" target="_blank">Froogle UK</a></b><br />The UK version of <a href="http://www.google.com" target="_blank">Google's</a> popular US-only <a href="http://froogle.google.com" target="_blank">Froogle</a> price comparison service has gone live (although it's still in beta). Only a few merchants are on it at the moment, but it's easy to supply FroogleUK with a feed of product &amp; price data, so no doubt it will gain momentum quickly so in a month's time it will be invaluable. Current mainstays of this market like <a href="http://www.kelkoo.com/" target="_blank">Kelkoo</a> are almost useless IMHO, so it's about time we had a decent UK-focused service.<br /><br /><b><a href="http://desktop.google.com/" target="_blank">Google Desktop Search</a></b><br />You've probably heard that various search engine companies have been working on re-purposing their search engine technology for use on your local computer, allowing you to search files/documents on your PC more easily. Previously, <a href="http://www.hotbot.com/tools/desktop/" target="_blank">Hotbot</a> and <a href="http://www.copernic.com/" target="_blank">Copernic</a> (among <a href="http://www.searchtools.com/tools/desktop-search.html" target="_blank">others</a>) have released such tools, but Google's has stayed under wraps. Well, it's rumour no longer, it was released yesterday! But it doesn't just let you search your text files and Office documents, it also covers email (performing GMail-style email conversation threading too) and IM (AOL/AIM) - see <a href="http://desktop.google.com/gettingstarted.html" target="_blank">here</a> for more.<br /><br /><b>Please note: both services are currently in beta, so they're far from perfect... think of them as a sneak preview of what's to come.</b>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 11/10/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=53" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=53</id>
		<modified>2004-10-11T17:47:01+01:00</modified>
		<issued>2004-10-11T17:47:01+01:00</issued>
		<created>2004-10-11T17:47:01+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=53"><![CDATA[Dear diary, it's been a while since my last entry...<br /><br /><a href="http://craphound.com/msftdrm.txt" target="_blank">Microsoft Research DRM talk</a><br /><i>Enjoyable and accessible talk about DRM and why it stinks</i><br /><br /><a href="http://www.hackaday.com/" target="_blank">Hack A Day</a><br /><i>Hardware &amp; software hacks galore</i><br /><br /><a href="http://www.news.com.au/common/printpage/0,6093,11009375,00.html" target="_blank">Murphy's Law Formalized</a><br /><i>Pseudo-science comes to the rescue</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 23/09/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=52" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=52</id>
		<modified>2004-09-24T05:24:51+01:00</modified>
		<issued>2004-09-24T05:24:51+01:00</issued>
		<created>2004-09-24T05:24:51+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=52"><![CDATA[<a href="http://www.perforce.com/perforce/papers/prettycode.html?referrer=devx-sept" target="_blank">Seven Pillars of Pretty Code</a><br /><i>How to write readable code</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[New Article]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=51" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=51</id>
		<modified>2004-09-23T15:25:05+01:00</modified>
		<issued>2004-09-23T15:25:05+01:00</issued>
		<created>2004-09-23T15:25:05+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=51"><![CDATA[I've been away in Ibiza for a week (yes, I'll be posting photos soon) and I've just got back to find that the kind folks at <a href="http://www.asp101.com" target="_blank">ASP 101</a> have published my new article about <a href="http://www.asp101.com/articles/marcus/concatenation/default.asp" target="_blank">VBScript String Concatenation (And Why It Should Be Avoided Like The Plague)</a>.<br /><br />Let me know what you think!<br /><br /><img src="images/smile/smile1.gif" border="0" alt="[:)]" />]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Retrogaming hardware hacks]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=50" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=50</id>
		<modified>2004-09-13T21:19:44+01:00</modified>
		<issued>2004-09-13T21:19:44+01:00</issued>
		<created>2004-09-13T21:19:44+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=50"><![CDATA[<a href="http://www.classicgaming.com/" target="_blank">Retrogaming</a> is great fun, but most of us play on PC-based emulators... but that's not good enough for <a href="http://www.benheck.com/" target="_blank">Ben Heckendorn</a>, who has taken his passion for classic consoles right into the 21st century, portable-style - NES, Atari 2600, and PSX... he's hacked them apart and turned them into handheld consoles (with TF screens)! Ingenious! <img src="images/smile/smile1.gif" border="0" alt="[:)]" /><br /><br />You can also go the other way and use your trusty old console pads on your PC... there's the easy way (which is to pick up the appropriate USB convertor from a supplier via eBay - which is what I did when I wanted to play <a href="http://www.neversoft.com/th4/thps4mainpage.htm" target="_blank">Tony Hawk 4</a> on my PC using a PS2 controller), or if you're a keen DIY'er who's up for a bit of hardware disassembly and soldering there are plenty of guides that show you how to do it yourself - <a href="http://www.joystiq.com/entry/7817137582525561/" target="_blank">NES controller</a>, anyone?!]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 02/09/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=49" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=49</id>
		<modified>2004-09-02T23:17:11+01:00</modified>
		<issued>2004-09-02T23:17:11+01:00</issued>
		<created>2004-09-02T23:17:11+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=49"><![CDATA[<a href="http://allinthehead.com/retro/225/" target="_blank">The Dangers of Redesigning a Web Application</a><br /><i>It's always tempting to tweak apps and release the code straightaway, but Drew makes an excellent case for waiting a while and batching them as a new release...</i><br /><br /><a href="http://thedailywtf.com/archive/2004/09/01/1511.aspx" target="_blank">Can you think of a worse solution than this?</a><br /><i>Another excellent WTF but it's of doubtful authenticity...</i><br /><br /><a href="http://www.stopdesign.com/log/2004/09/01/time-traveling.html" target="_blank">Time Travelling</a><br /><i>As if jetlag wasn't bad enough, here's another way to get a headache!</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[GMail Invites]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=48" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=48</id>
		<modified>2004-09-01T19:14:35+01:00</modified>
		<issued>2004-09-01T19:14:35+01:00</issued>
		<created>2004-09-01T19:14:35+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=48"><![CDATA[I've got 5 GMail invites left... who wants one?!<br /><br />Just post a *constructive* comment on one of my other posts (NOT this one) using a real email address (otherwise I can't send you the invite). First come, first served.<br /><br /><img src="images/smile/smile2.gif" border="0" alt="[;)]" /><br /><br />UPDATE: 02/09/2004 @ 4pm... No takers? Jeez! I can't even give them away!]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 31/08/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=47" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=47</id>
		<modified>2004-08-31T18:40:04+01:00</modified>
		<issued>2004-08-31T18:40:04+01:00</issued>
		<created>2004-08-31T18:40:04+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=47"><![CDATA[<a href="http://www.456bereastreet.com/archive/200408/web_development_mistakes_redux/" target="_blank">Web development mistakes, redux</a><br /><i>This list of web dev no-nos is definitely worth a read... no we've all been there, we've all done it. Make sure you're not still doing it! (hat tip to <a href="http://allinthehead.com/" target="_blank">Drew</a>... like the redesign, btw!)</i><br /><br /><a href="http://blogs.msdn.com/ericlippert/archive/2004/08/27/221496.aspx" target="_blank">Riddle Me This, Google: Part Two</a><br /><i>Another classic post by Eric - the mysteries of the universe explained for all!</i><br /><br /><a href="http://www.galisteo.com/gallant/humor/klingon1.htm" target="_blank">Klingon Software Development</a><br /><i>The less said about this the better...</i><br /><br /><a href="http://msdn.microsoft.com/architecture/journal/default.aspx?pull=/library/en-us/dnmaj/html/greatarchitect.asp" target="_blank">Secrets of Great Architects</a><br /><i>Abstraction, abstraction, abstraction!</i><br /><br /><br />And finally, a couple of handy (and quite definitive) references have appeared on the excellent <a href="http://www.topxml.com/" target="_blank">TopXML</a> site:<br /><a href="http://www.topxml.com/xhtml/default.asp" target="_blank">XHTML</a> &amp; <a href="http://www.topxml.com/css/default.asp" target="_blank">CSS</a>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Article no-no?!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=46" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=46</id>
		<modified>2004-08-31T18:19:24+01:00</modified>
		<issued>2004-08-31T18:19:24+01:00</issued>
		<created>2004-08-31T18:19:24+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=46"><![CDATA[After waiting a month for it to be considered, <a href="http://www.sitepoint.com" target="_blank">SitePoint</a> got back to me to tell me that they aren't interested in publishing my article regarding VBScript string concatenation and scalable alternatives (a topic which is still very much ignored by ASP developers, and to their peril!) because they are "no longer actively covering ASP".<i>(or words to that effect - the quote is currently from memory, I'll post the exact quotation when I get home to Outlook)</i><br /><br />So that makes it official - as far as they are concerned, ASP is dead. Perhaps that's understandable - if not *actually* dead, it's *very nearly* dead, and taking its last steps down the path of obsolesence.<br /><br />However, that isn't stopping plenty of people from continuing to develop new applications in it - many developers haven't made the switch to .Net (myself included), so it's a real shame that they've decided that it's simply not worth catering to that particular audience at all any more. What's next? Shut down the ASP forum? I hope not.<br /><br />It's also rather disappointing on a personal level, because (for those of you who don't know) I've been the community-voted "SitePoint ASP Guru" for the past two years and <a href="http://blog.marcustucker.com/blog_comment.asp?bi=31&amp;m=8&amp;y=2004" target="_blank">recently resigned as Mentor</a>, so I wanted to have an article published there as a parting gift.<br /><br />Nevermind, I'll approach <a href="http://www.15seconds.com/" target="_blank">www.15seconds.com</a> (who published my first article "<a href="http://www.15seconds.com/issue/020919.htm" target="_blank">Do Stored Queries Increase the Speed of Access Queries?</a>") and see what they think... <img src="images/smile/smile2.gif" border="0" alt="[;)]" />]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Tune of the moment]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=45" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=45</id>
		<modified>2004-08-20T18:29:28+01:00</modified>
		<issued>2004-08-20T18:29:28+01:00</issued>
		<created>2004-08-20T18:29:28+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=45"><![CDATA[I'm just listening to it now, so thought I'd spread the love and recommend that if you like your feelgood house, you should tune into DJ Falcon &amp; Thomas Bangalter's track "Call On Me", which follows the same formula of their floor-filling hit "I've Got So Much Love To Give" (from a couple of years ago) to equally devastating effect.<br /><br />Unfortunately I can't recommend a legit source for the track since it's currently only out on promo (I think), but listen out for it the next time you go clubbing, and if you don't hear it (you'll know it when you do), have a chat with the DJ...<br /><br />It's definitely a track that never fails to lift my spirits and put a smile on my face...<br /><img src="images/smile/smile4.gif" border="0" alt="[:D]" /> <img src="images/smile/smile4.gif" border="0" alt="[:D]" /> <img src="images/smile/smile4.gif" border="0" alt="[:D]" /><br /><br /><b>UPDATE 20/08: There's an <a href="http://www.coolwax.co.uk/common/mp3/1001899.mp3" target="_blank">MP3 sample</a> on <a href="http://www.coolwax.co.uk/home/ProductDetails.aspx?ProductID=1001899&amp;CategoryId=20" target="_blank">this ordering page for vinyl junkies</a>.</b><br /><br /><b>UPDATE 03/09: The track's now all over the radio stations and I've heard it's making waves out in Ibiza (which coincidentally is where I'm heading for the closing parties in a few week's tim), so it shouldn't be hard to get hold of...</b><br /><br />(And in case you're wondering, the sample is from Steve Winwood's 1982 song "Valerie")]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 20/08/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=44" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=44</id>
		<modified>2004-08-20T17:27:57+01:00</modified>
		<issued>2004-08-20T17:27:57+01:00</issued>
		<created>2004-08-20T17:27:57+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=44"><![CDATA[<a href="http://blogs.msdn.com/ericlippert/archive/2004/08/19/217244.aspx" target="_blank">Error Handling in VBScript, Part One</a><br /><i>Eric continues to demystify the inner workings of the VBScript engine with another excellent post</i><br /><br />]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 18/08/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=43" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=43</id>
		<modified>2004-08-18T16:16:37+01:00</modified>
		<issued>2004-08-18T16:16:37+01:00</issued>
		<created>2004-08-18T16:16:37+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=43"><![CDATA[<a href="http://www.aspfree.com/index2.php?option=content&amp;task=view&amp;id=2186&amp;pop=1&amp;hide_ads=1&amp;page=0&amp;hide_js=1" target="_blank">What is ADO?</a><br /><i>An excerpt from a book, and a seemingly simple question, but it's covered in great detail, and I'd be very impressed if you already knew everything that the article/chapter covers!</i><br /><br /><a href="http://weblogs.asp.net/alex_papadimoulis/archive/2004/07/20/188323.aspx" target="_blank">PHP vs. ASP.NET</a><br /><i>Amusing reading - <a href="http://weblogs.asp.net/Alex_Papadimoulis/" target="_blank">Alex</a>'s foreward (and the comments that others have posted) say it all.</i><br /><br /><a href="http://news.com.com/2102-1032_3-5307831.html?tag=st.util.print" target="_blank">The spyware inferno</a><br /><i>The evils of various spyware, classified on an appropriate scale.</i><br /><br /><a href="http://www.theglobeandmail.com/servlet/story/RTGAM.20040817.water0817/BNStory/National/" target="_blank">Eco-friendly air conditioning</a><br /><i>Amazing! The Canadians did it first! <img src="images/smile/smile2.gif" border="0" alt="[;)]" /></i><br /><br /><a href="http://www.wired.com/news/culture/0,1284,64596,00.html" target="_blank">It's Just the 'internet' Now</a><br /><i>The Internet is dead, long live the internet! (<a href="http://www.wired.com/news/culture/0,1284,39450,00.html" target="_blank">the article linked at the bottom</a> is also worth a read)</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Change Control in a Content Management System]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=42" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=42</id>
		<modified>2004-08-17T19:48:15+01:00</modified>
		<issued>2004-08-17T19:48:15+01:00</issued>
		<created>2004-08-17T19:48:15+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=42"><![CDATA[In the past I've written a couple of web apps which were essentially content management systems (I'll refer to them as CMSes from now on), and in each case the entered content went live straight away, without passing through an approval stage - these were small-scale systems with the content being maintained by an individual (me, in the case of <a href="http://www.marcustucker.com/" target="_blank">my web site</a>).<br /><br />In many other systems, particularly those with many authors (such as news/dating/auction/job sites, corporate intranets, etc), this approval stage is in place so that all content is vetted before being published, and can be edited/rejected/etc as appropriate. Of course as well it being sensible for any publically accessible content to go through an editorial process, this also helps to protect sites from legal repercussions by putting an obstacle in the path of anybody wishing to publish offensive or defamatory content, and this can only become more and more important as the legal framework for web-related copyright, slander, and other issues becomes more clearly defined (and rigorously enforced).<br /><br />While the bulk of the content passing through most such systems would probably be new content, a sizeable proportion is likely to be amended content, perhaps with broken hyperlinks fixed, typos correct, footnotes and updates added, etc. Amending content after initial publication is quite common in the blogging world, and is a regular occurence on corporate intranets.<br /><br />Quite why I was thinking about this particular type of application I'm not altogether sure, but the thought struck me that it would be very handy for the content approvers if rather than seeing the entire body of content that needs to be approved, they instead saw only the parts that had changed, just like many developers do with code thanks to file comparison/difference tools (<a href="http://www.araxis.com/merge/index.html" target="_blank">Araxis Merge</a> being the one I use, for example).<br /><br />So my ponderance is: "is there an equivalent for content management systems?"<br /><br />Such a feature/tool, targeted specifically towards XHTML markup and perhaps implemented as a reusable component on a range of server-side platforms (ASP/ASP.Net/PHP/JSP/CF) would be pretty damn useful for people editing/managing content across the web and very lucrative for the developer. The idea could even be extended to providing a full web document versioning system, similar to how VSS and CVS operate in the desktop world. Or do some CMSes already integrate with VSS/CVS?<br /><br />Does such a component or suite of classes exist? If not, why not? If so, what's it called? Post a comment and let me know your thoughts...]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 16/08/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=41" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=41</id>
		<modified>2004-08-16T17:00:49+01:00</modified>
		<issued>2004-08-16T17:00:49+01:00</issued>
		<created>2004-08-16T17:00:49+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=41"><![CDATA[<a href="http://weblogs.sqlteam.com/markc/archive/2004/08/13/1916.aspx" target="_blank">Separate Your Singular From Your Plurals</a><br /><i>On database table naming conventions</i><br /><br /><a href="http://www.theatlantic.com/doc/print/200409/cullison" target="_blank">Inside Al-Qaeda's Hard Drive</a><br /><i>Translations of real Al-Qaeda emails, providing a fascinating read and amazing insight</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[If You Could See What I Can See... When I'm Cleaning Windows!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=40" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=40</id>
		<modified>2004-08-13T18:07:26+01:00</modified>
		<issued>2004-08-13T18:07:26+01:00</issued>
		<created>2004-08-13T18:07:26+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=40"><![CDATA[A few days ago I reinstalled XP Pro (with <a href="http://www.winsupersite.com/showcase/windowsxp_sp2_slipstream.asp" target="_blank">slipstreamed SP2</a> - see <a href="http://nuhi.msfn.org/nlite.html" target="_blank">for a handy related utility</a>), and I've experienced no problems during the many hours of further software installations and normal usage that I've done since, so I'm giving it the thumbs up.<br /><br />Reinstalling's always a pain - not only because you have to reinstall so much software, but also because you have to redo all your various configuration settings (for Windows Explorer / shell, Office, and all the apps you use). However, recently I compiled a registry .REG file which contains all my Windows Explorer / desktop / shell settings, so a simple double-click (followed by a reboot) brought back my preferred UI. Then because I'd used the Windows XP "<a href="http://www.winsupersite.com/showcase/windowsxp_sg_fstw.asp" target="_blank">Transfer Files And Settings</a>" wizard (which is also useful for migrations from previous Windows OSes) and Office XP's "Save My Settings" wizard, I was able to restore most of my Microsoft apps to normal working order without much hassle (including my non-standard Outlook PST &amp; mail server configuration settings). All my other apps still need to be tweaked back into shape though, which I'm doing as and when I use them. <br /><br /><i>Why oh why can't there be a standard way for applications to enable their settings to be exported easily and then reimported after a fresh install? The Windows wizard alluded to above looks like it should be the answer to the present mess, but when you fire it up, very few 3rd party (i.e. non-Microsoft) apps appear on the list of software which it is capable of accessing the settings for. Presumably there is a standard way for apps to make themselves available for use with this wizard, so perhaps the fault lies with software developers, since after all, Windows XP (and thus the wizard) is almost three years old. Then again, I've just tried to find developer information on how to make an application compatible, and found zilch, so perhaps Microsoft isn't helping matters.</i><br /><br />I was rather impressed that SP2's new Security Center was able to integrate with my virus checker (<a href="http://www.kaspersky.com/personal" target="_blank">Kaspersky AntiVirus</a>) so effortlessly (displaying the date of the last update, warning about the need for a full system scan, etc) - this is a big step forward for virus protection because it will ensure that non-tech-savvy home users will update their virus signatures and scan their PCs more regularly than before.<br /><br />Incidentally, the default update period in the latest version of KAV is every three hours, which is a commendable move. Furthermore, <a href="http://www.kaspersky.com/news?id=151371080" target="_blank">they've just moved to an *hourly* signature update model</a>.<br /><br /><i>In case you were wondering, no, I have no affiliation! lol</i><br /><br />The newly-renamed Windows Firewall looks good so far, but I haven't really given it a thorough test yet - I'll reserve judgement until I've put it through its paces.<br /><br />Actually, I have had *one* minor problem, which is that I can't install MSN Messenger 6.2 (it fails right at the end then rolls back the install), but it has occurred to me that this may be down to my (perhaps over-zealous) use of <a href="http://www.litepc.com/xplite.html" target="_blank">XP Lite</a> to remove Windows Messenger, rather than anything to do with SP2 itself. I'll put it back when I get home and reattempt the MSN install.<br /><br /><b>UPDATE: Yes, it was Windows Messenger. MSN is up and running now - see you on there!</b>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Broken Links]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=39" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=39</id>
		<modified>2004-08-12T23:53:19+01:00</modified>
		<issued>2004-08-12T23:53:19+01:00</issued>
		<created>2004-08-12T23:53:19+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=39"><![CDATA[I just noticed that all my links were broken due to a UBlog bug. This is now fixed, so if you tried a few links, were greeted by dead pages, and didn't spend the time to edit the URL to fix it, please try again.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 12/08/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=38" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=38</id>
		<modified>2004-08-12T23:22:01+01:00</modified>
		<issued>2004-08-12T23:22:01+01:00</issued>
		<created>2004-08-12T23:22:01+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=38"><![CDATA[My best find today has been the excellent and amusing <a href="http://thedailywtf.com/" target="_blank">The Daily WTF</a>, which presents a daily spotlight on the worst code and/or DB design that people come across. Naturally it's got an <a href="http://thedailywtf.com/Rss.aspx" target="_blank">RSS feed</a> which I've already added to the blogroll (see left). Be sure to browse through the backlog of posts... there's some priceless stuff in there!<br /><br />And here's a few other bits &amp; bobs which are worth a read too:<br /><br /><a href="http://dotnetjunkies.com/WebLog/unknownreference/archive/2004/05/22/14241.aspx" target="_blank">Interesting Programming contest...</a><br /><br /><a href="http://www.timesonline.co.uk/newspaper/0,,176-1206964,00.html" target="_blank">Snack salads that are less healthy than burger'n'fries</a><br /><br /><a href="http://www.digital-web.com/articles/a_matter_of_styles/" target="_blank">A Matter Of Styles : Producing Quality CSS in a Team Environment</a><br /><br /><a href="http://www.alistapart.com/articles/horizdropdowns/" target="_blank">Drop-Down Menus, Horizontal Style</a>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Spyware]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=37" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=37</id>
		<modified>2004-08-11T17:37:38+01:00</modified>
		<issued>2004-08-11T17:37:38+01:00</issued>
		<created>2004-08-11T17:37:38+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=37"><![CDATA[If you're not regularly scanning your machine for spyware (aka adware / malware) on a regular basis using a tool such as <a href="http://www.lavasoftusa.com/software/adaware/" target="_blank">Ad-Aware</a> or <a href="http://www.safer-networking.org/en/spybotsd/spybotsd_overview.html" target="_blank">Spybot Search &amp; Destroy</a> (in conjunction with a decent virus checker and firewall) then the chances are that your PC is relaying reams of information about your surfing habits, the documents on your hard disk, and possibly even every keystroke that you make (yes, that includes credit card numbers). This isn't scaremongering, it's real, and it's happening to millions of PC users worldwide every day without their knowledge or consent.<br /><br />Hopefully none of this should be news to you, and you are already keeping your system clean &amp; secure. If not, then <a href="http://www.spywareguide.com/" target="_blank">read up</a> and get your PC disinfected ASAP!!<br /><br />Anyway, the reason that I mention this issue is because I came across a account of somebody's investigation into exactly how a machine can acquire spyware, which I found absolutely fascinating - it just goes to show that those seemingly obscure IE security holes really *can* affect *you*, the home user.<br /><br />Read it for yourself here:<br /><a href="http://isc.sans.org/diary.php?date=2004-07-23&amp;isc=00ee9070d060393ec1a20ebfef2b48b7" target="_blank">Follow the Bouncing Malware - Part I</a><br /><br />Part II should be following shortly, and there's plenty of other interesting security-related coverage, so be sure to monitor the <a href="http://isc.sans.org/diary.php" target="_blank">diary page</a> or subscribe to the <a href="http://isc.sans.org/rssfeed.xml" target="_blank">RSS feed</a>.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Bizarrely ingenious!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=36" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=36</id>
		<modified>2004-08-10T18:21:27+01:00</modified>
		<issued>2004-08-10T18:21:27+01:00</issued>
		<created>2004-08-10T18:21:27+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=36"><![CDATA[...was the reaction of a friend at work to a link to a site about a new programming language:<br /><br /><a href="http://compsoc.dur.ac.uk/whitespace/index.php" target="_blank">http://compsoc.dur.ac.uk/whitespace/index.php</a><br /><br />(Credits go to "Our Man In Seattle" <a href="http://youngpup.net/recently" target="_blank">Aaron Boodman</a> for the heads-up)]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[ASP hints &amp; tips]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=35" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=35</id>
		<modified>2004-08-10T16:42:12+01:00</modified>
		<issued>2004-08-10T16:42:12+01:00</issued>
		<created>2004-08-10T16:42:12+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=35"><![CDATA[Here's an excellent site which I learned a lot from many years ago, and which I still link to in various forums posts here and there, but have never mentioned directly...<br /><br /><a href="http://www.motobit.com/" target="_blank">http://www.motobit.com/</a> (formerly www.pstruh.cz)<br /><br />Apart from having some great <a href="http://www.motobit.com/tips/listpg_0.htm" target="_blank">ASP coding tips</a>, Antonin Foller also offers one of the best script-only file upload processing scripts that I've seen (called "<a href="http://www.motobit.com/help/scptutl/upload.asp" target="_blank">Pure ASP Upload</a>"), which I drew ideas from when I wrote my own class.<br /><br />In any case, I highly recommend a browse through his site... you're sure to find something of interest!<br /><br /><img src="images/smile/smile2.gif" border="0" alt="[;)]" />]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 06/08/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=34" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=34</id>
		<modified>2004-08-06T23:53:51+01:00</modified>
		<issued>2004-08-06T23:53:51+01:00</issued>
		<created>2004-08-06T23:53:51+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=34"><![CDATA[I bookmarked this a while ago for posting, but just came across it:<br /><br /><a href="http://www.designbyfire.com/000084.html" target="_blank">I would RTFM if there was an FM to FR</a><br />]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Upgrade and Downtime]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=33" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=33</id>
		<modified>2004-08-06T18:19:01+01:00</modified>
		<issued>2004-08-06T18:19:01+01:00</issued>
		<created>2004-08-06T18:19:01+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=33"><![CDATA[I've finally got around to updating this blog - <a href="http://www.uapplication.com/" target="_blank">UBlog Reload</a> - to v1.04, so you may or may not notice little enhancements here and there.<br /><br />However, after checking that it was working I inadvertently nobbled (English slang for [i]broke[/i]) the home page by making my blog feeds private on www.bloglines.com, which then fouled up the blogroll on the left. I just noticed, and have set it to rights, so normal service should now be resumed.<br /><br />This has been a public service announcement.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Handy links targeted for internet-enabled devices]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=32" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=32</id>
		<modified>2004-08-05T23:55:28+01:00</modified>
		<issued>2004-08-05T23:55:28+01:00</issued>
		<created>2004-08-05T23:55:28+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=32"><![CDATA[As I think I mentioned earlier, I have a <a href="http://www.sonyericsson.com/spg.jsp?cc=gb&amp;lc=en&amp;ver=4000&amp;template=pp1_loader&amp;php=php1_10101&amp;zone=pp&amp;lm=pp1&amp;pid=10101" target="_blank">Sony Ericsson P900</a>, which is a fairly nifty bit of kit, and thanks to Opera 6, I'm able to browse any web site as I please! <img src="images/smile/smile1.gif" border="0" alt="[:)]" /><br /><br />However, as we all know, Internet access on mobiles doesn't exactly come cheap (no matter whether you use dialup or GPRS), so it makes sense to use mobile/pda-specific site features where they are available, to help keep bandwidth usage down.<br /><br />Here are a few links I've collected so far which you might find handy, most of which are probably only useful to fellow Brits (Londoners in particular):<br /><br />Yellow Pages<br /><a href="http://mobile.yell.com/" target="_blank">http://mobile.yell.com/</a><br /><br />BT directory enquiries (miles better than a 118 number)<br /><a href="http://wap.bt.com/" target="_blank">http://wap.bt.com/</a><br /><br />TfL (including the Journey Planner)<br /><a href="http://pda.tfl.gov.uk/" target="_blank">http://pda.tfl.gov.uk/</a><br /><br />Multimap<br /><a href="http://www.multimap.com/map/places.cgi?client=light" target="_blank">http://www.multimap.com/map/places.cgi?client=light</a><br /><br />Google<br /><a href="http://www.google.com/palm/" target="_blank">http://www.google.com/palm/</a><br /><br />BBC<br /><a href="http://www.bbc.co.uk/mobile" target="_blank">http://www.bbc.co.uk/mobile</a><br /><br /><br />Do you have any more to share? Be sure to let me know (<a href="mailto:me@marcustucker.com">email</a> or post a comment)!<br /><br /><b>EDIT 31/08/2004:</b> added BT's directory enquiries]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Arrivederchi!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=31" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=31</id>
		<modified>2004-08-05T18:48:33+01:00</modified>
		<issued>2004-08-05T18:48:33+01:00</issued>
		<created>2004-08-05T18:48:33+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=31"><![CDATA[I thought I should mention that I resigned from my post as <a href="http://www.sitepoint.com/forums/" target="_blank">Sitepoint Forums</a> Mentor last week, and my resignation became effective on Sunday, so I'm just a pleb again (although I'm still the community "ASP Guru" until this year's election takes place)! <img src="images/smile/smile2.gif" border="0" alt="[;)]" /><br /><br />As you can tell from the infrequent postings on this blog, I haven't had much free time recently, and posting at SitePoint has consumed rather a lot of my free time over the last two and a half years (although I've been a mentor for only one year, I've always been a frequent poster), so I felt it was time to be a little more selfish!<br /><br />I've got regular Italian classes on Mondays and Salsa on Wednesdays, and I'm usually busy with friends / going out most other evenings, so I'm trying to make the most of my free time by spending as little of it as possible in front of a computer - I do that all day at work as it is! (However, I will try to post on this blog more often in future...)<br /><br />Anyway, it's been very satisfying helping others with their development problems over the years, and I think I'd quite enjoy being a teacher in later life, but I feel that I've done my bit for the SitePoint community. I'm not saying "goodbye" - I'll still pop in from time to time to answer a posts that take my fancy - but I won't be spending much time around there any more, so I'll see you when I see you.<br /><br />Finally, thanks to all those of you who said such nice things about me in the thread in the Mentor's forum - it means a lot to know that my hard work has been appreciated and that I've made a difference to people's projects &amp; careers. <img src="images/smile/smile1.gif" border="0" alt="[:)]" />]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Reading Roundup 05/08/2004]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=30" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=30</id>
		<modified>2004-08-05T18:10:58+01:00</modified>
		<issued>2004-08-05T18:10:58+01:00</issued>
		<created>2004-08-05T18:10:58+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=30"><![CDATA[<a href="http://www.digital-web.com/articles/seo_and_your_web_site/" target="_blank">Digital Web Magazine : SEO and Your Web Site</a><br /><i>Good tips for those of you who lust after Google's PageRank... but then again you should know all this by now anyway</i><br /><br /><a href="http://www.theregister.co.uk/2004/08/03/wi-fi_aerial_gun/" target="_blank">Wi-Fi 'sniper rifle' debuts at DEFCON</a><br /><i>Great idea... although perhaps impractical for use in a public place...!</i> <img src="images/smile/smile11.gif" border="0" alt="[8D]" /><br /><br /><a href="http://www.theregister.co.uk/2004/08/04/manhunt_murder_claim/" target="_blank">Victim not killer owned 'murder manual' game</a><br /><i>The latest in the saga... following the usual reactionary media hysteria and finger-pointing.</i><br /><br /><a href="http://www.theregister.co.uk/2004/08/02/ms_ie_mega_patch/" target="_blank">Long-awaited IE patch (finally) arrives</a><br /><i>About time too. Anyone for <a href="http://www.mozilla.org/products/firefox/" target="_blank">Firefox</a>?</i><br /><br /><a href="http://www.theregister.co.uk/2004/08/02/siemens_sk65_launch/" target="_blank"><br />Siemens touts Blackberry-based business phone</a><br /><i>I've got a Sony Ericsson P900 which I'm pretty happy with, but this new SK65 is damn cool. Swivel keyboards like this are bound to catch on...</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Corporate stupidity]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=29" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=29</id>
		<modified>2004-07-29T23:44:35+01:00</modified>
		<issued>2004-07-29T23:44:35+01:00</issued>
		<created>2004-07-29T23:44:35+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=29"><![CDATA[Has the world gone mad? Sellotape clearly have...<br /><br /> <a href="http://www.htmldog.com/ptg/archives/000059.php" target="_blank">Don't Link to this Site</a><br /><br /><img src="images/smile/smile19.gif" border="0" alt="[:haha:]" /> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Damn funny]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=28" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=28</id>
		<modified>2004-07-29T23:36:52+01:00</modified>
		<issued>2004-07-29T23:36:52+01:00</issued>
		<created>2004-07-29T23:36:52+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=28"><![CDATA[<a href="http://www.stopdesign.com/" target="_blank">Stopdesign</a>'s article <a href="http://www.stopdesign.com/log/2004/05/28/cost/index.html" target="_blank">The Cost of Page Rank</a> led me to a post called <a href="http://www.laze.net/fait/archive/2002/07/28/maurys_blooper.php" target="_blank">Maury's Blooper</a>... the comments had me in stitches... read the StopDesign article to see why if you don't get it...<br /><br />]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Redundant Functions #1]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=27" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=27</id>
		<modified>2004-07-21T21:57:23+01:00</modified>
		<issued>2004-07-21T21:57:23+01:00</issued>
		<created>2004-07-21T21:57:23+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=27"><![CDATA[The <a href="http://msdn.microsoft.com/library/en-us/script56/html/vsfctRGB.asp" target="_blank">VBScript RGB() function</a>.... Ever used it? No, me neither, and I don't think that's going to change...! <img src="images/smile/smile17.gif" border="0" alt="[:p]" /><br /><br /><i>And surely the extra function in the example should be called "BGR()", not "RevRGB()"?!</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[The future is... the web?!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=26" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=26</id>
		<modified>2004-06-26T10:28:13+01:00</modified>
		<issued>2004-06-26T10:28:13+01:00</issued>
		<created>2004-06-26T10:28:13+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=26"><![CDATA[Excellent stuff...<br /><a href="http://www.joelonsoftware.com/articles/APIWar.html" target="_blank">How Microsoft Lost the API War</a> (from <a href="http://www.joelonsoftware.com/" target="_blank">Joel on Software</a>)]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[A few good films]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=25" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=25</id>
		<modified>2004-06-14T06:46:57+01:00</modified>
		<issued>2004-06-14T06:46:57+01:00</issued>
		<created>2004-06-14T06:46:57+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=25"><![CDATA[I've seen a few particularly enjoyable films over the last few weeks, and thought I'd mention them... in no particular order:<br /><br /><ul><li><a href="http://www.imdb.com/title/tt0310910/" target="_blank">CONfidence</a> - an excellent performance by Dustin Hoffman helps to make this LockStock-a-like a hit (although it <i>is</i> a little cheesy)</li><li><a href="http://www.imdb.com/title/tt0120885/" target="_blank">Wag The Dog</a> - a worringly believable portrayal of a Presidential scandal coverup</li><li><a href="http://www.imdb.com/title/tt0266697/" target="_blank">Kill Bill Volume 1</a> - Tarantino at his slickest (it's about time I saw this... and now I can go see Volume 2!!)</li><li><a href="http://www.imdb.com/title/tt0274166/" target="_blank">Johnny English</a> - rubber-faced Rowan Atkinson reprises his role as the spoof Bond from the Barclaycard adverts of old, with plenty of predictable slapstick to enjoy (if you can bear it)</li></ul>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Email notification fixed]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=24" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=24</id>
		<modified>2004-06-10T18:01:36+01:00</modified>
		<issued>2004-06-10T18:01:36+01:00</issued>
		<created>2004-06-10T18:01:36+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=24"><![CDATA[Unfortunately I'm ill at home today, but on the plus side I've now got email notification on comments working... <a href="http://www.uapplication.com/forum/viewtopic.php?t=154" target="_blank">here's why it wasn't working</a>.<br /><br />However, I've also discovered that the notifications are only for my benefit (people who post comments won't get any), so I've requested that this be added, since I've found it's a pain on other people's blogs that I have to check back to see if there has been a reply to my own comments...]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Yet more reading material]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=23" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=23</id>
		<modified>2004-06-07T08:55:25+01:00</modified>
		<issued>2004-06-07T08:55:25+01:00</issued>
		<created>2004-06-07T08:55:25+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=23"><![CDATA[Yes, like Eminem, I've been cleaning out my closet! <img src="images/smile/smile17.gif" border="0" alt="[:p]" /><ul><li>Code samples from WROX Conferences 2000 <a href="http://www.topxml.com/conference/wrox/1999_dc/html/content/default.asp" target="_blank">1</a> &amp; <a href="http://www.topxml.com/conference/wrox/2000_vegas/html/content/default.asp" target="_blank">2</a> (a little old, but plenty of gems)</li><li><a href="http://www.topxml.com/xsl/tutorials/intro/default.asp" target="_blank">XSLT &amp; XPath Tutorial</a>(this is the one I often recommend in forum posts)</li><li><a href="http://www.htmldog.com/ptg/archives/000051.php" target="_blank">Sons of Suckerfish</a></li><li><a href="http://www.htmldog.com/ptg/archives/000036.php" target="_blank">Against my better judgement...</a></li></ul><br /><br /><i>And just for the record, yes, I'm aware that my table-layout-driven <a href="http://marcustucker.com" target="_blank">main site</a> is well overdue for a restyle (read: conversion to XHTML+CSS) and a refresh of the content... but since I'm currently employed full-time, I've not had the time, the inclination, nor good reason to do so. It will happen at some point, it's just not a priority.</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Typelib recall!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=22" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=22</id>
		<modified>2004-06-07T04:42:58+01:00</modified>
		<issued>2004-06-07T04:42:58+01:00</issued>
		<created>2004-06-07T04:42:58+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=22"><![CDATA[When giving ASP advice in the various forums that I frequent, I've always recommended that ASP'ers abandon the old-style ADOVBS.INC inclusion file for their constants, and instead turn to direct Typelib importing via a METADATA tag.<br /><br />However, it would appear from the Microsoft Scripting guru himself (that would be Eric Lippert, btw) that <a href="http://blogs.msdn.com/ericlippert/archive/2004/06/01/145686.aspx#147004" target="_blank">importing typelibs is in fact significantly slower than using constants defined in a script</a>... <img src="images/smile/smile21.gif" border="0" alt="[:eek:]" /> <img src="images/smile/smile21.gif" border="0" alt="[:eek:]" /> <img src="images/smile/smile21.gif" border="0" alt="[:eek:]" /><br /><br />I've grabbed the latest ADOVBS.INC from the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=5067faf8-0db4-429a-b502-de4329c8c850&amp;displaylang=en" target="_blank">Microsoft MDAC 2.8 SDK</a> and have made it available for download <a href="http://blog.marcustucker.com/public/files_upload/adovbs.inc" target="_blank">here</a>.<br /><br />It would appear that it was last updated in 1998 (presumably there haven't been any new constants defined since then), so you may have it already, but please check, because some sources are still offering earlier versions, such as <a href="http://www.4guysfromrolla.com/webtech/faq/Beginner/faq7.shtml" target="_blank">4GuysFromRolla</a> (which offers the 1996 version, and lacks many newer constants, such as those relating to the rather handy <b>ADO.Stream</b> object).<br /><br />I hereby formally retract all previous recommendations of using typelib importing... for ASP anyway, the performance hit isn't an issue in WSH, so you should still <a href="http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/wsh/htm/wsEleReference.asp" target="_blank">use it for that scripting environment</a>.<br /><br />I suggest that if you want to squeeze every last drop of performance out of your web app, you should go back to using ADOVBS.INC.<br /><br />However, it's not worth losing sleep over - don't forget that everything's not always all about performance... importing typelibs is a little tidier and is futureproof so long as you don't specify the version.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Feed your mind]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=21" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=21</id>
		<modified>2004-06-06T09:32:36+01:00</modified>
		<issued>2004-06-06T09:32:36+01:00</issued>
		<created>2004-06-06T09:32:36+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=21"><![CDATA[Here's some stuff that I've been reading through recently that I thought I'd mention... some old links, some new... some XML/XSLT, MSSQL, ASP/VBScript, and more... so happy reading! <img src="images/smile/smile2.gif" border="0" alt="[;)]" /><ul><li><a href="http://www.perfectxml.com/TipsXSLT.asp" target="_blank">50 XSLT Tips</a></li><li><a href="http://databasejournal.com/features/mssql/article.php/1565961" target="_blank">SQL Server Stored Procedures Optimization Tips</a></li><li><a href="http://aspnet.4guysfromrolla.com/articles/073003-1.aspx" target="_blank">Summarizing Data with ROLLUP</a></li><li><a href="http://www.codeproject.com/html/printingwithstyle.asp" target="_blank">Printing with Style</a></li><li><a href="http://weblogs.sqlteam.com/jeffs/articles/1490.aspx" target="_blank">Non-Deterministic UDF's -- Custom Aggregate and Cumulative Functions</a></li><li><a href="http://www.thenoodleincident.com/tutorials/typography/index.html" target="_blank">Sane CSS Sizes</a></li><li><a href="http://www.sqlteam.com/item.asp?ItemID=11499" target="_blank">Using a CSV with an IN sub-select</a></li><li><a href="http://www.wowwebdesigns.com/formula.php" target="_blank">The Formula Used to Calculate Ratings</a></li><li><a href="http://www.pcstats.com/articleview.cfm?articleID=1590" target="_blank">99 Performance Tips for Windows XP</a></li><li><a href="http://blogs.msdn.com/ericlippert/archive/2004/06/01/145686.aspx" target="_blank">What's the Difference between WScript.CreateObject, Server.CreateObject and CreateObject?</a> (a question that I asked <a href="http://blogs.msdn.com/ericlippert/" target="_blank">Eric Lippert</a>)</li><li><a href="http://www.google.com/press/zeitgeist.html" target="_blank">Google Zeitgeist</a></li><li><a href="http://weblogs.sqlteam.com/leed/archive/2004/06/04/1503.aspx" target="_blank">Formatting DATETIME Representations</a></li><li><a href="http://blogs.msdn.com/ericlippert/archive/2004/05/25/141525.aspx" target="_blank">You Can't Convert Data Structures To Strings In VBScript Without Breaking A Few Eggs</a></li><li><a href="http://weblogs.sqlteam.com/chrism/archive/2004/05/26/1388.aspx" target="_blank">A database design question</a></li><li><a href="http://weblogs.sqlteam.com/brettk/archive/2004/05/25/1378.aspx" target="_blank">TQL?</a></li><li><a href="http://weblogs.sqlteam.com/davidm/archive/2004/05/21/1364.aspx" target="_blank">Unique values, many NULLs - A Dodgy Constraint.</a></li><li><a href="http://weblogs.sqlteam.com/leed/archive/2004/06/02/1466.aspx" target="_blank">Whither Temp Tables?</a></li></ul><br />Also, here's a recent thread that I've posted quite a bit in, helping someone to optimize a poorly-performing ASP script (you might find it enlightening):<ul><li><a href="http://www.codingforums.com/showthread.php?t=39310" target="_blank">Please review my ASP code</a></li></ul>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Bloglines stinks!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=20" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=20</id>
		<modified>2004-06-02T21:11:34+01:00</modified>
		<issued>2004-06-02T21:11:34+01:00</issued>
		<created>2004-06-02T21:11:34+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=20"><![CDATA[I've been using <a href="http://www.bloglines.com/" target="_blank">Bloglines</a> for the last few weeks, and have become fed up with it. Perhaps I'm spoilt by my previous (desktop) RSS aggregator of choice, <a href="http://www.rssreader.nl/" target="_blank">RSSReader</a>, but Bloglines has so many implementation flaws that I've decided that it's too much of a pain in the proverbial behind to use.<br /><br />The straw that broke the camel's back was when I clicked on the hyperlinked name of the top-level folder which contains all the feeds that I'm subscribed to, and found that everything was instantaneously (and irreversably) marked as "read", without any confirmation! It did this via client-side JavaScript, before proceeding to attempt to deliver a view of all of the posts, which I would have expected to be many megabytes indeed (some RSS feeds had literally *thousands* of unread posts, such as the <a href="http://weblogs.asp.net/MainFeed.aspx" target="_blank">ASP.Net main feed</a>. The server eventually timed out on the attempt to deliver the page. Had it arrived I would (in theory) have been able to click the "mark unread" link at the top right of the page to revert all the posts back to how they were before I made the fatal click, but this is obviously a HUGE flaw.<br /><br />Bloglines have also failed to even acknowledge some constructive criticism that I sent them only yesterday.<br /><br />So that's that. Bloglines stinks, and there are enough aggregators around, so it's time to find another one! Any recommendations?!]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Email notification]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=19" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=19</id>
		<modified>2004-06-01T05:41:39+01:00</modified>
		<issued>2004-06-01T05:41:39+01:00</issued>
		<created>2004-06-01T05:41:39+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=19"><![CDATA[Just thought I'd mention that email notification doesn't currently work on this blog - I'm currently sorting it out with my ISP, so if you've commented in the past check back - I've (probably) replied.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[More XML DOM caching + Access stored queries]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=18" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=18</id>
		<modified>2004-05-24T07:35:06+01:00</modified>
		<issued>2004-05-24T07:35:06+01:00</issued>
		<created>2004-05-24T07:35:06+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=18"><![CDATA[I've been doing some PC housekeeping and rediscovered a couple of excellent articles that relate to storing an XML DOM in-memory (i.e. in the Session or Application collections), and I can highly recommend giving them a good read:<br /><br /><a href=&quot;http://www.15seconds.com/issue/010409.htm&quot; target=&quot;_blank&quot;>Creating an In-Memory Database Using XML and XPath -- Part 1</a><br /><a href=&quot;http://www.15seconds.com/issue/010410.htm&quot; target=&quot;_blank&quot;>Creating an In-Memory Database Using XML and XPath -- Part 2</a><br /><br />While I'm citing articles at <a href=&quot;http://www.15seconds.com&quot; target=&quot;_blank&quot;>15Seconds.com</a>, here's a good article from 15Seconds on what to take into consideration when optimizing database performance:<br /><br /><a href=&quot;http://www.15seconds.com/issue/040115.htm&quot; target=&quot;_blank&quot;>Database Performance Philosophy</a><br /><br />And finally, those of you persisting on using a JET4/Access database as a backend for your site might be interested to read the following 15 Seconds article written a while ago by yours truly, covering the significant peformance increases available from Access stored queries (as well as testing the best performing query execution syntax):<br /><br /><a href=&quot;http://www.15seconds.com/issue/020919.htm&quot; target=&quot;_blank&quot;>Do Stored Queries Increase the Speed of Access Queries?</a><br /><br /><i>Note to self: what a dumb title!</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Email to Google]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=17" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=17</id>
		<modified>2004-05-20T20:51:10+01:00</modified>
		<issued>2004-05-20T20:51:10+01:00</issued>
		<created>2004-05-20T20:51:10+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=17"><![CDATA[I spotted on the official <a href=&quot;http://www.google.com/googleblog/&quot; target=&quot;_blank&quot;>Google Blog</a> that Google has published <a href=&quot;http://www.google.com/corporate/software_principles.html&quot; target=&quot;_blank&quot;>a proposal</a> for some guidelines designed to empower the user to take control of spyware/adware, and to discourage the use of various bad practices.<br /><br />Feedback is invited, and this was mine (what are your thoughts?):<blockquote>Firstly, let me say that I think it's commendable that a company with as much market power as yourselves is taking a positive, ethical stance and trying to take steps to counteract this growing plague. I have a number of comments to make, which I shall go though on a section-by-section basis (since I am a Windows user running IE, I am writing from that perspective, but naturally the same principles should apply generally to all operating systems and browsers, where applicable):<br /><br /><br />UPFRONT DISCLOSURE<br />- I believe that the information about what the program does should *always* be displayed *before* the program is actually installed. Your text does not state this categorically (although it can be interpreted this way).<br />- There should be a standard format for the disclosure information, because left to their own devices the adware/spyware makers will use legal jargon and longwinded paragraphs of text to conceal the true intentions of the software. I suggest that the information should look something like this (off the top of my head, so by no means exhaustive, but you get the idea):<br />--------------------------------------------------------------------<br />Software name:<br />Alexa Toolbar<br /><br />Software description:<br />A toolbar for Internet Explorer provided by the Alexa search engine<br /><br />Benefits to user:	<br />Provides additional information on the web site currently being browsed, including ranking and user reviews, as well as an Amazon shopping button<br /><br />Information transmitted:<br />The URLs of sites browsed by the user are transmitted anonymously and aggregated to provide the ranking information that drives the search engine<br />--------------------------------------------------------------------<br /><br />SIMPLE REMOVAL<br />- The user should be able to be uninstalled using the standard Windows Add/Remove control panel applet. An uninstall entry on the start menu is welcome, but not required.<br /><br />CLEAR BEHAVIOR<br />- Ironically (with reference to your first line of this section), I once spent hours trying to work out why some form fields on a web application that I was developing were going yellow, until I realised that Google's &quot;AutoFill&quot; feature was responsible! Features like this should (as you say) should really be switched off by default - at the completion of the install of the program (talking generally, not just about the Google toolbar), there should be a message indicating to the user that not all the features are enabled and that the user should configure the options to his preferences, and a button which the user can click to take him directly to the configuration settings.<br />- In addition, once running, all such software should allow the user to access the configuration settings for that software by right-clicking any area of the screen where the software is displaying something (i.e. an ad, a toolbar, a hyperlink). This is perhaps more of a usability issue, but valid all the same, I think - users should be able to enable/disable features as they see fit, as easily as possible. Features should not be left enabled simply because the user can't find out how to switch them off!<br />- If a feature cannot be disabled because it provides the revenue stream which allows the provision of the software (e.g. ads) then it should have its own page in the settings which explains to the user why this is so, EVEN if this has already been explained in the text that is displayed before the software is installed.<br /><br /><br />Otherwise, I think it's excellent!<br /><br />However, you stop short of the next logical step - you, as the largest (or second largest, I don't know) player in the market should actually *REQUIRE* that all the sites/software for which you accept ads *MUST* adhere to it as a code of conduct. It should be a key part of your service provision/acceptance rules, and be actively policed by yourselves. The risk of losing advertising space on your service would provide a HUGE incentive for the companies/sites responsible to clean up their act, as well as providing bucketloads of great PR for yourselves!<br /><br />Do you have any intention of doing this? I hope so, but somehow I suspect that I will be disappointed...<br /><br /><br />Kind regards,<br /><br />Marcus Tucker</blockquote>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Blogroll]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=16" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=16</id>
		<modified>2004-05-17T17:50:18+01:00</modified>
		<issued>2004-05-17T17:50:18+01:00</issued>
		<created>2004-05-17T17:50:18+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=16"><![CDATA[For the last 6 months or so I've been using the freeware RSS aggregator <a href=&quot;http://www.rssreader.com/&quot; target=&quot;_blank&quot;>RSSReader</a>, which is a Windows application, and pretty good at what it does.<br /><br />However, since I use it at both work and home, I have found it rather annoying that posts that I have read at one location still show up as unread at the other, because naturally the two client installations have no knowledge of each other.<br /><br />I've just (i.e. this morning) switched to a web-based RSS aggregator called <a href=&quot;http://www.bloglines.com&quot; target=&quot;_blank&quot;>Bloglines</a>, which doesn't have the bells and whistles that I'm used to, but will now save me the time and annoyance of having to trawl through blog entries that I've already read.<br /><br />A handy extra service which Bloglines offers is to allow public access to my blog subscriptions, in the form of a dynamically generated blogroll (either Javascript or prerendered HTML). This is something that most other blogs have and which I had been meaning to add to this one but hadn't got around to until now. Thanks to BLoglines, adding the new blogroll box on the left took about 30 seconds to do - a few clicks here, a copy &amp; paste there, and badda-bing-badda-boom!<br /><br />So now you can see what I'm subscribed to... are any of them new to you?!<br /><br /><i>PS - before someone mentions it, yes, I'm aware that some web-based aggregators also offer a windows RSS client which syncs with the web client to ensure that read posts stay read... I switched to Bloglines in a hurry, and intend to check out some of these other services when I have more time. Would anyone care to recommend one in particular?</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Microsoft bad practice shocker!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=15" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=15</id>
		<modified>2004-05-13T10:24:42+01:00</modified>
		<issued>2004-05-13T10:24:42+01:00</issued>
		<created>2004-05-13T10:24:42+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=15"><![CDATA[While researching my response to the issue raised in <a href=&quot;http://www.sitepoint.com/forums/showthread.php?t=168599&quot; target=&quot;_blank&quot;>a thread at SPF</a>, I made a startling discovery...<br /><br />Many years ago, giving ASP include files &quot;.INC&quot; extensions was considered standard practice, until the huge problem with this approach became evident - the full source code of these files (yes, the ASP source code, including all comments) could be retrieved simply by accessing the URL of the include file!! This worked because IIS was (by default) configured to serve requests for .ASP and .ASA files through the ASP engine, but .INC files were served up as plain text, thereby disclosing their contents!<br /><br />This potentially *huge* security flaw - huge because exposing business logic is bad enough, but lots of bad developers like to hardcode IPs, database names, and even usernames &amp; passwords, which if exposed to outsiders could be expoited to devastating effect - quickly became known throughout the ASP development (and of course hacking) communities via various security bulletins and articles (<a href=&quot;http://www.4guysfromrolla.com/webtech/020400-2.shtml&quot; target=&quot;_blank&quot;>this</a> being one... I don't have time to track down more right now - I should have gone to bed hours ago but keep getting sidetracked), and include files were renamed to have &quot;.ASP&quot; extensions instead.<br /><br />Another alternative fix was to simply remove world-readable permissions from the include folder of the web site. Even better was to do *both* just in case another vulnerability exposed the files' contents again, which is precisely what happened with the &quot;::$DATA&quot; flaw (or did that one come first, I don't recall)...<br /><br />Anyway, this all happened about 6 years ago (I think), but lo and behold, what do I find in the Microsoft ASP documentation, referred to every day by countless developers in their local IIS help files, the platform SDK and <a href=&quot;http://msdn.microsoft.com/library/en-us/iissdk/iis/ref_ssi_include.asp?frame=true&quot; target=&quot;_blank&quot;>online at MSDN</a>??<br /><br />I'll tell you what... this:<blockquote><b><i>Included files can have any file name extension, but a recommended practice is to give them the .inc extension.</i></b></blockquote>WHAT?!!! <img src="images/smile/smile21.gif" border="0" alt="[:eek:]" /> <img src="images/smile/smile21.gif" border="0" alt="[:eek:]" /> <img src="images/smile/smile21.gif" border="0" alt="[:eek:]" /> <br /><br />Years after this practice became virtually outlawed, Microsoft still *recommend* it?! I wonder how many developers are blindly following this and STILL giving their include scripts &quot;.INC&quot; extensions, thereby potentially exposing their source code to the world (or at least to malicious individuals)?!!<br /><br />Naturally, I've made the appropriate feedback submission to the MSDN site, but I wonder how long it will take to fix this astonishing blooper... start your watches please, gentlemen!]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[XML DOM caching]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=14" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=14</id>
		<modified>2004-05-10T11:15:14+01:00</modified>
		<issued>2004-05-10T11:15:14+01:00</issued>
		<created>2004-05-10T11:15:14+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=14"><![CDATA[Since it cropped up in <a href=&quot;http://www.sitepoint.com/forums/showthread.php?t=167720&quot; target=&quot;_blank&quot;>a recent thread</a> at <a href=&quot;http://www.sitepoint.com/forums/&quot; target=&quot;_blank&quot;>Sitepoint Forums</a>, I thought I'd quickly revisit the topic of caching XML, which <a href=&quot;http://marcustucker.com/blogold/200404archive001.asp#1082024194001&quot; target=&quot;_blank&quot;>I touched on briefly last month</a>.<br /><br />Since (in the web app I'm developing) I need to store hierarchical navigation &amp; security data which is queried and rendered on every page but which is not modified within the app itself, XML is the logical choice, and being able to cache the parsed XML and XSLT documents to minimize the marginal cost of each hit is the icing on the cake.<br /><br />I load the main document into a free-threaded XMLDOM object, and store it in an application variable. The XSLT is stored in an XSLTemplate object in a similar way. The menu is then rendered dynamically using 4 parameters, and the security is enforced by direct queries of the DOM. This allows me to include this functionality easily in pages in the site, and eliminate (at least) two database calls on every page (which would have been needed had I approached the problem with a database backend).<br /><br />However, using this approach is clearly only suitable for data which is not being changed, since the data must be modified sequentially by each page thread (rather than concurrently), because otherwise data will be lost. This is nothing new, and is precisely why the Application.Lock and Application.UnLock methods are there, but (in theory) it severely reduces the server throughput, since each page modifying the data must queue up to read it, as must each page reading it, otherwise it's possible that a read might occur in the middle of a write. Also, since the .Lock and .UnLock methods operate on the entire Application collection (not just the variable you're modifying or reading), the performance hit may be even more significant that you might expect.<br /><br />It's also worth mentioning that any data stored in the application or session collections is lost when the application is ended/restarted (both) or the session is ended/expires (only the latter), so if it's important you must save the data BEFORE these events occur to ensure that you don't lose valuable data! Again, since my data is read from files on disk, this is no problem.<br /><br />So, if you need to modify the data regularly (such as in a shopping cart application, as in the example in the thread - see earlier) you should use a data storage medium which is stateless so that you never lose data, for which a database is ideal.<br /><br />While you *could* save the XMLDOM back to disk every time you modify it, it's rather costly in terms of performance and will probably negate any gains you made by choosing a XML DOM in the first place!!]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[ISSN]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=13" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=13</id>
		<modified>2004-05-10T10:32:13+01:00</modified>
		<issued>2004-05-10T10:32:13+01:00</issued>
		<created>2004-05-10T10:32:13+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=13"><![CDATA[I noticed that <a href=&quot;http://www.zeldman.com/&quot; target=&quot;_blank&quot;>Jeffrey Zeldman</a> has an <acronym title=&quot;International Standard Serial Number&quot;>ISSN</acronym> for his blog, which seemed like a good idea, so I've applied to get one for this blog...!! <img src="images/smile/smile17.gif" border="0" alt="[:p]" /><br /><br />For those who are interested, you can apply for one by following the right links from here:<br /><a href=&quot;http://www.issn.org:8080/English/pub/getting-checking/form&quot; target=&quot;_blank&quot;>http://www.issn.org:8080/English/pub/getting-checking/form</a>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[PNG Support in Internet Explorer]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=12" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=12</id>
		<modified>2004-05-10T10:00:51+01:00</modified>
		<issued>2004-05-10T10:00:51+01:00</issued>
		<created>2004-05-10T10:00:51+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=12"><![CDATA[<i>This is by no means an original blog topic (I'm come across many similar ones in the past) but it won't hurt to bring it up again...</i><br /><br />It's about time Microsoft provided proper <a href=&quot;http://www.atalasoft.com/PNG.aspx&quot; target=&quot;_blank&quot;>PNG</a> support in Internet Explorer - frankly, as most of us are probably well aware, it's dismal!<br /><br />Numerous workarounds/fixes have been devised to improve matters (<a href=&quot;http://www.alistapart.com/articles/pngopacity/&quot; target=&quot;_blank&quot;>here</a> and <a href=&quot;http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html&quot;>here</a> to mention just two) but they don't change the fact that a developer should be able to insert a PNG image into a document with an IMG element just as easily as he can a GIF or a JPG.<br /><br />Other than lack of financial incentive, I can't think of a good reason why they haven't sorted this out yet (I mean, it's not as if they have their own rival image format that they're plugging instead, do they?!!). <a href=&quot;http://www.libpng.org/pub/png/pngstatus.html&quot; target=&quot;_blank&quot;>This</a> is a good page showing the current status of the PNG format, which includes a review of browser support.<br /><br />If you agree that Microsoft really should pay some attention to this issue, please add your support to the petition which I just came across:<br /><a href=&quot;http://www.petitiononline.com/msiepng/petition.html&quot; target=&quot;_blank&quot;>http://www.petitiononline.com/msiepng/petition.html</a>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[A few choice snaps...]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=11" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=11</id>
		<modified>2004-05-10T04:33:33+01:00</modified>
		<issued>2004-05-10T04:33:33+01:00</issued>
		<created>2004-05-10T04:33:33+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=11"><![CDATA[Here's a few photos from my trip to Barcelona at the end of last week...<table class="gallery"><tr><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2435.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2435.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2437.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2437.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2438.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2438.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2443.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2443.JPG" border="0" alt="" /></a></td></tr><tr><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2446.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2446.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2450.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2450.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2455.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2455.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2464.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2464.JPG" border="0" alt="" /></a></td></tr><tr><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2465.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2465.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2469.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2469.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2472.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2472.JPG" border="0" alt="" /></a></td><td></td></tr></table><br /><br />And here's some fire poi that was going on at an East End warehouse party that I went to last night...<table class="gallery"><tr><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2503.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2503.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2504.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2504.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2505.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2505.JPG" border="0" alt="" /></a></td><td><a target="_blank" href="http://blog.marcustucker.com/public/images_upload/IMGP2506.JPG"><img src="http://blog.marcustucker.com/public/images_upload/t_IMGP2506.JPG" border="0" alt="" /></a></td><td></td></tr></table>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[...this XHTML validation!!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=10" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=10</id>
		<modified>2004-05-08T23:26:12+01:00</modified>
		<issued>2004-05-08T23:26:12+01:00</issued>
		<created>2004-05-08T23:26:12+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=10"><![CDATA[And now it works:<br /><a href=&quot;http://validator.w3.org/check/referer&quot; target=&quot;_blank&quot;>http://validator.w3.org/check/referer</a><br /><br />:)]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[What XHTML validation?!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=9" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=9</id>
		<modified>2004-05-08T12:49:44+01:00</modified>
		<issued>2004-05-08T12:49:44+01:00</issued>
		<created>2004-05-08T12:49:44+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=9"><![CDATA[Before anyone mentions it, yes I'm aware that this blog site does NOT currently validate as XHTML... waiting for a fix...!]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[I tweak you here, I tweak you there...]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=7" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=7</id>
		<modified>2004-05-08T11:22:52+01:00</modified>
		<issued>2004-05-08T11:22:52+01:00</issued>
		<created>2004-05-08T11:22:52+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=7"><![CDATA[I got back from Barcelona late last night, but somehow it's 4am and I'm still up! Heading to bed now, but what I have to show for the last hour or so is some hacks/changes to this blog (<a href=&quot;http://www.uapplication.com/&quot; target=&quot;_blank&quot;>Uapplication's</a> <a href=&quot;http://www.uapplication.com/ublogreload.asp&quot; target=&quot;_blank&quot;>UBlog Reload 1.0.3</a>) which you may or may not have noticed before reading this entry:<br /><br /><br />1) There's now no &quot;word&quot; length limit on comments - this had been preventing me from posting long URLs because the test was too simplistic... it was just checking for substrings bounded by spaces which were greater than 50 characters). However, don't abuse this or I'll put it back (and besides, I get email notification of all new comments and will delete them straightaway if you try)<br /><br />EDIT: Ironically this bug also crops up in the script which adds a new blog entry, and it just fell over on this post! I've disabled it there too, not that that's going to change *your* life, but I thought it was funny...! ;)<br /><br /><br />2) I've vastly improved the performance of the calendar drawing code.<br /><br /><br />3) I've changed the appearance of the day numbers on the calendar to make it easier to see which ones are clickable, the clickable area is now much wider (so you don't have to click *right* on the number), and the tooltip now shows how many posts there are for the day in question.<br /><br /><br />See more on these topics here:<br /><a href=&quot;http://www.uapplication.com/forum/viewtopic.php?t=127&quot; target=&quot;_blank&quot;>http://www.uapplication.com/forum/viewtopic.php?t=127</a><br /><br /><i>And I'll post some snaps of Barcelona later after I've had some kip!!!</i>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Redirection... that's what you need...]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=6" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=6</id>
		<modified>2004-05-04T09:09:25+01:00</modified>
		<issued>2004-05-04T09:09:25+01:00</issued>
		<created>2004-05-04T09:09:25+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=6"><![CDATA[And I couldn't resist adding conditional redirection so that the old &quot;http://marcustucker.com/blog/&quot; address and any ASP pages within in that folder (such as &quot;200402archive001.asp&quot;) redirect to the front page at the new &quot;<a href=&quot;http://blog.marcustucker.com/&quot; target=&quot;_blank&quot;>http://blog.marcustucker.com/</a>&quot; address.<br /><br />I toyed with redirecting them to their correct location in the /blogold/ subfolder, but decided that I'd prefer visistors to those links to find this new blog rather than access old content (which they can find via the new link on the top box on the left that I just added).<br /><br />Finally, I've done a manual 301 permanent redirect (as opposed to a 302 temporary redirect that a call to Response.Redirect generates) so that search engines register the change.]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Fix in place]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=5" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=5</id>
		<modified>2004-05-04T08:39:30+01:00</modified>
		<issued>2004-05-04T08:39:30+01:00</issued>
		<created>2004-05-04T08:39:30+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=5"><![CDATA[I couldn't bring myself to go to bed without implementing a real fix for the <a href=&quot;http://blog.marcustucker.com/blog_comment.asp?blog_id=4&amp;amp;month=5&amp;amp;year=2004&amp;amp;giorno=&amp;amp;select_case=&quot; target=&quot;_blank&quot;>empty blog</a> problem, so I've modified the code so that by default the N most recent posts are displayed instead (I've set N to 20, which seems about right to me).<br /><br />Although it was intended only as a quick fix until the author implemented a real solution, it has occurred to me that this is actually the *best* solution that I can think of!!<ul><li>It solves the actual problem of new months (and new years) causing an empty front page by showing the last N posts, irrespective of how old they are.</li><li>Only a maximum of N posts will ever be displayed on the normal home page, keeping the page size &amp;amp; length down.</li><li>I've made the current month on the calendar clickable so that if somebody wants to quickly see only the posts for the current month they can do so easily. (This was the previous default behaviour of the homepage.)</li></ul>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Empty blog?!]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=4" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=4</id>
		<modified>2004-05-04T07:37:27+01:00</modified>
		<issued>2004-05-04T07:37:27+01:00</issued>
		<created>2004-05-04T07:37:27+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=4"><![CDATA[Due to an unfortunate implementation flaw in <a href=&quot;http://www.uapplication.com/ublogreload.asp&quot; target=&quot;_blank&quot;>UBlog Reload</a> this blog has - for the last few days - appeared (to the casual observer) to be empty!!<br /><br /><img src="images/smile/smile21.gif" border="0" alt="[:eek:]" /> <br /><br />While it is true that I haven't blogged much recently (sorry... been busy), the fact that the previous blog entries were in April, combined with the default behaviour of the blog front page (to show only the current month's entries) resulted in an (apparently) blog when May 1st arrived.<br /><br />I have raised this issue with the author of the software, since clearly this doesn't look good to visitors. I had intended to alter the code tonight to modify this unfortunate behaviour (to display the last 10 entries, perhaps) but haven't got round to it.<br /><br />In the meantime, I've moved the &quot;Recent Entries&quot; box on the left further up the page, and posted this entry to explain the situation (and get rid of the horrible empty space)!<br /><br />Apologies for this (perceived, if not actual) loss of service. <img src="images/smile/smile4.gif" border="0" alt="[:D]" /><br /><br />UPDATE: See my post &quot;<a href=&quot;http://blog.marcustucker.com/blog_comment.asp?blog_id=5&amp;amp;month=5&amp;amp;year=2004&amp;amp;giorno=&amp;amp;select_case=&quot; target=&quot;_blank&quot;>Fix in place</a>&quot; for how I've fixed this. ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Parent paths and more]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=3" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=3</id>
		<modified>2004-04-30T08:47:42+01:00</modified>
		<issued>2004-04-30T08:47:42+01:00</issued>
		<created>2004-04-30T08:47:42+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=3"><![CDATA[<ul><li>I see them every once in a while in other people's code and hate them with a vengeance... so it's rather nice to see <a href=&quot;http://ase.tufts.edu/its/webDtParentPaths.htm&quot; target=&quot;_blank&quot;>someone leading a crusade against them</a> (found <a href=&quot;http://blog.dannyboyd.com/&quot; target=&quot;_blank&quot;>here</a>). Please do yourself (and everyone else a favour) by banishing parent paths from your code henceforth and forthwith (and so on). Naturally, this applies to #include statements in your ASP scripts as much as it does to external resources in your HTML files (i.e. images, CSS, JavaScript, etc)</li><li>Somehow I've managed to completely forget to visit the excellent <a href=&quot;http://www.topxml.com&quot; target=&quot;_blank&quot;>TopXML.com</a> for some time, but now my amnesia has cleared, I've had a look and can highly recommend familiarising yourself with <a href=&quot;http://www.topxml.com/cagle/webtips.asp?consumer=all&quot; target=&quot;_blank&quot;>Kurt Cagle's 60 Top Tips</a> - something for everyone there.</li><li>While at work I've been reading up on a few things in preparation for some hardcore development that I'll be tackling, so I'll post the best of it tomorrow in a spare moment, as well as some more code that I've developed this week.</li></ul>]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[Gems]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=2" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=2</id>
		<modified>2004-04-30T08:20:40+01:00</modified>
		<issued>2004-04-30T08:20:40+01:00</issued>
		<created>2004-04-30T08:20:40+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=2"><![CDATA[<a href=&quot;http://blogs.msdn.com/ericlippert/&quot; target=&quot;_blank&quot;>Eric Lippert</a> has been busy posting some priceless blog entries, some technical, others not. Recent highlights are:<br /><ul><li><a href=&quot;http://blogs.msdn.com/ericlippert/archive/2004/04/04/107379.aspx&quot; target=&quot;_blank&quot;>Customer Service Is Not Rocket Science</a></li><li><a href=&quot;http://blogs.msdn.com/ericlippert/archive/2004/04/09/110508.aspx&quot; target=&quot;_blank&quot;>Rumours of VBScript's Death Have Been Greatly Exaggerated</a></li><li><a href=&quot;http://blogs.msdn.com/ericlippert/archive/2004/04/19/116208.aspx&quot; target=&quot;_blank&quot;>Runtime Typing in VBScript</a></li><li><a href=&quot;http://blogs.msdn.com/ericlippert/archive/2004/04/28/122259.aspx&quot; target=&quot;_blank&quot;>When Are You Required To Set Objects To Nothing?</a></li></ul>(Make sure that you read the comments too - some excellent discussions going on there)<br /><br />This week I came across <a href=&quot;http://dean.edwards.name/&quot; target=&quot;_blank&quot;>Dean Edwards'</a> extremely cunning and damn handy <a href=&quot;http://dean.edwards.name/IE7/&quot; target=&quot;_blank&quot;>IE7</a> behaviour/scriptlet/CSS/thingamy (via a blog somewhere, I forget which, but it's cropped up all over the place now so it's going to be impossible to work out which one it was)! At last I can use all those cool CSS2 selectors that I read about ages ago (I'm stuck developing on IE only at work, and haven't got around to playing with other browsers)! <img src="images/smile/smile8.gif" border="0" alt="[:oops:]" /> ]]></content>
	</entry>

	<entry>
	  	<author>
			<name>Marcus</name>
			<email>me@marcustucker.com</email>
		</author>
		<title><![CDATA[New blog? Old blog?]]></title>
		<link rel="alternate" type="text/html" href="http://blog.marcustucker.com/blog_comment.asp?bi=1" />
		<id>http://blog.marcustucker.com/blog_comment.asp?bi=1</id>
		<modified>2004-04-26T05:30:04+01:00</modified>
		<issued>2004-04-26T05:30:04+01:00</issued>
		<created>2004-04-26T05:30:04+01:00</created>
		<content type="text/html" mode="escaped" xml:base="http://blog.marcustucker.com/blog_comment.asp?bi=1"><![CDATA[As you can see, the new blog is up and running. It's been relatively painless, I've left the old content accessible, and it should make life easier for me in future (thereby encouraging me to blog a little more often). I've yet to tweak the CSS and finish customizing it, but I wanted to do the switch ASAP, so I'll be tweaking here and there in the weeks to come.<br /><br />Just a few things worth mentioning:<ul><li>Please ensure that you are using the new URL of <a href=&quot;http://blog.marcustucker.com/&quot; target=&quot;_blank&quot;>http://blog.marcustucker.com/</a>, since although the old blog URL might *appear* to work, images and other attachments probably won't.</li><li>If you're using an RSS aggregator, please see the various RSS links on the left and select one to your taste.</li><li>Finally, you can also access my old blog content at <a href=&quot;http://marcustucker.com/blogold/&quot; target=&quot;_blank&quot;>http://marcustucker.com/blogold/</a> - if you didn't read it at the time, you might find a few useful nuggets of info and/or code there. <img src="images/smile/smile2.gif" border="0" alt="[;)]" /></li></ul><i>Let me know what you think of the new layout and functionality, especially if you encounter any bugs.</i> ]]></content>
	</entry>

</feed>