<?xml version="1.0"?>

<rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
>

<channel rdf:about="http://simon.incutio.com/syndicate/browsers/rss1.0">
  <title>Browsers</title>
  <link>http://simon.incutio.com/</link>
  <description>Simon Willison's Browsers cateory</description>
  <language>en-uk</language>
  <webMaster>simon@incutio.com</webMaster>
  <items>
    <rdf:Seq>
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2006/10/17/graph" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2006/08/06/sticking" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2006/06/20/opera9" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2006/05/11/operamini" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2004/12/16/quote" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2004/05/29/fix" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2004/02/17/lineEndings" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2004/01/30/noMoreUsernames" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2004/01/15/ieTeam" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2003/12/13/ieGotcha" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2003/12/09/nastyBug" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2003/11/11/utopia" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2003/11/07/multipleIEs" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2003/11/06/easytoggle" />
      <rdf:li rdf:resource="http://simon.incutio.com/archive/2003/10/29/quirksMode" />
    </rdf:Seq>
  </items>
</channel>

<item rdf:about="http://simon.incutio.com/archive/2006/10/17/graph">
  <title>Graphing requests with Tamper Data</title>
  <description>&lt;p id=&quot;p-0&quot;&gt;I spent the weekend in Boston, speaking at &lt;a href=&quot;http://www.gbcacm.org/&quot;&gt;GBC/ACM&lt;/a&gt;'s Deep Ajax seminar with Alex Russell and Adrian Holovaty. I'll be posting some notes on this later, but I wanted to share a really neat Firefox extension that Alex showed me: &lt;a href=&quot;http://tamperdata.mozdev.org/&quot;&gt;Tamper Data&lt;/a&gt;.&lt;/p&gt;

&lt;p id=&quot;p-1&quot;&gt;Tamper Data is an extension for intercepting HTTP requests and modifying them. I have very little interest in this functionality myself, but hidden deep within the extension is the ability to do this:&lt;/p&gt;

&lt;p id=&quot;p-2&quot;&gt;&lt;a href=&quot;http://simon.incutio.com/images/2006/tampergraph.png&quot;&gt;&lt;img src=&quot;http://simon.incutio.com/images/2006/tampergraph_t.png&quot; alt=&quot;Screenshot of Tamper Data graph of www.yahoo.com&quot; title=&quot;Click for full-size screenshot&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p id=&quot;p-3&quot;&gt;That's a graph showing what happens when you load up &lt;a href=&quot;http://www.yahoo.com/&quot;&gt;www.yahoo.com&lt;/a&gt;. It shows every component of the page - JavaScript, CSS, images - and when each component started and finished loading. You can use it to get an idea for how long it took between the HTML starting to load and the browser beginning to pull in the CSS, then the images, and so on. It's a superb visualization of  what happens when a page is loaded.&lt;/p&gt;

&lt;p id=&quot;p-4&quot;&gt;Unfortunately, if you install and run the extension (Tools -&gt; Tamper Data) you'll see this instead:&lt;/p&gt;

&lt;p id=&quot;p-5&quot;&gt;&lt;a href=&quot;http://simon.incutio.com/images/2006/tamperdata.png&quot;&gt;&lt;img src=&quot;http://simon.incutio.com/images/2006/tamperdata_t.png&quot; alt=&quot;Screenshot of Tamper Data user interface&quot; title=&quot;Click for full-size screenshot&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p id=&quot;p-6&quot;&gt;To get the graph, you have to right click in the main data grid and select &quot;Graph All&quot; from the context menu. Be sure to hit &quot;clear&quot; before loading a page that you want to graph or you'll end up seeing data from other pages too (you should shut down GMail or similar to prevent their polling requests from polluting the graph).&lt;/p&gt;

&lt;p id=&quot;p-7&quot;&gt;It's a great tool but it's pretty well hidden. If you're looking for a side project, implementing the same functionality in a smaller extension (maybe as an extra tab in the Page Info screen) would be a significant service to the web development community.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2006/10/17/graph</link>
  <dc:subject>Browsers</dc:subject>
  <dc:date>2006-10-17T18:21:06-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2006/08/06/sticking">
  <title>Sticking with Opera 9</title>
  <description>&lt;p id=&quot;p-0&quot;&gt;It's been a month and a half since &lt;a href=&quot;http://simon.incutio.com/archive/2006/06/20/opera9&quot;&gt;I started using Opera 9&lt;/a&gt;, with a promise to report back later. I'm still using it, although some of the things I liked initially have faded while others have emerged.&lt;/p&gt;

&lt;p id=&quot;p-1&quot;&gt;Firstly, the ability to browse cached documents offline turned out to be a dud. The behaviour I was observing (where I could view pages from my cache while disconnected) was due to the following setting, in &lt;samp&gt;Preferences -&amp;gt; Advanced -&amp;gt; History&lt;/samp&gt;:&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;http://simon.incutio.com/images/2006/opera-check-cache-prefs.png&quot; width=&quot;423&quot; height=&quot;91&quot; alt=&quot;Dialogue box: Check if cached page is updated on the server, with check documents set to every five hours and check images set to every five minutes.&quot; /&gt;&lt;/p&gt;

&lt;p id=&quot;p-2&quot;&gt;As someone whose work involves making websites the idea of seeing stale documents for five hours is pretty horrifying, so I changed that to &quot;check documents never&quot; as soon as I saw it (I'm pretty confident that doesn't affect conditional-GET, which should work regardless). As soon as I did that I lost the ability to browse offline. Browser vendors take note: you can still be the first modern browser to implement a proper offline mode!&lt;/p&gt;

&lt;p id=&quot;p-3&quot;&gt;The disadvantage of changing those setting is that they can break JavaScript image preloaders, leading to an unsettling flicker when you mouse over some links. That's why I've left my image setting above to check every five minutes.&lt;/p&gt;

&lt;p id=&quot;p-4&quot;&gt;Despite losing offline browsing, other features have popped up that have kept me happy:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;p id=&quot;p-5&quot;&gt;Opera is the only Mac browser I've used that includes a working full-screen mode; great for presentations.&lt;/p&gt;&lt;/li&gt;
  &lt;li&gt;&lt;p id=&quot;p-6&quot;&gt;Hitting space moves you down the height of the viewport, as with other browsers. Hitting space at the &lt;em&gt;bottom of the page&lt;/em&gt; takes you to the next page in the 'sequence', if there is one. My first guess was that this used &lt;code&gt;&amp;lt;link rel=&quot;next&quot;&amp;gt;&lt;/code&gt;, but it also works on Yahoo!, Technorati and Google search results pages which don't have those links. I suppose it's looking for any link on the page with 'Next' as the link text. Whatever it's doing, it works surprisingly well.&lt;/p&gt;&lt;/li&gt;
  &lt;li&gt;&lt;p id=&quot;p-7&quot;&gt;Site compatibility really is excellent; I run in to sites that don't work in Opera about as often as I do sites that don't work in Firefox. Part of that might be due to Opera's &lt;a href=&quot;http://www.opera.com/docs/browserjs/&quot;&gt;ingenious browser.js file&lt;/a&gt;, which includes Greasemonkey-style site-specific fixes and automatically updates itself once a week. Clever, but a bit scary at the same time.&lt;/p&gt;&lt;/li&gt;
  &lt;li&gt;&lt;p id=&quot;p-8&quot;&gt;The built-in IRC client is good as well - if it wasn't for &lt;a href=&quot;http://colloquy.info/&quot;&gt;Colloquy&lt;/a&gt; it would be my first choice for IRCing on the Mac.&lt;/p&gt;&lt;/li&gt;
  &lt;li&gt;&lt;p id=&quot;p-9&quot;&gt;Finally, Opera's low memory footprint continues to keep me from switching back to Safari or Firefox. My Mac (a two and a half year old PowerBook) is noticeably less sluggish now that those two applications have been relegated to JavaScript hacking (gotta love &lt;a href=&quot;http://joehewitt.com/software/firebug/&quot;&gt;FireBug&lt;/a&gt;) and the occasional misbehaving site.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p id=&quot;p-10&quot;&gt;I haven't even touched Opera Mail yet, and the gadget support is something I played with once and never used again (but then I don't use Dashboard that much either).&lt;/p&gt;

&lt;p id=&quot;p-11&quot;&gt;Overall I'm extremely happy with Opera 9 and I'd recommend giving it a go - especially if you've tried and disliked an older version.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2006/08/06/sticking</link>
  <dc:subject>Browsers</dc:subject>
  <dc:date>2006-08-06T18:32:57-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2006/06/20/opera9">
  <title>Two revolutionary features in Opera 9</title>
  <description>&lt;p id=&quot;p-0&quot;&gt;Wow, if I'm not careful this is going to turn in to &lt;a href=&quot;http://simon.incutio.com/archive/2006/05/11/operamini&quot; title=&quot;Opera Mini 2.0&quot;&gt;a promotional blog for Opera&lt;/a&gt;.&lt;/p&gt;

&lt;p id=&quot;p-1&quot;&gt;So, I've been playing with &lt;a href=&quot;http://my.opera.com/welcome%20to%209/blog/show.dml/306342&quot; title=&quot;Welcome to Opera 9&quot;&gt;Opera 9&lt;/a&gt; which came out earlier today (in a dual release for Windows and Mac, which is refreshing). It's an impressive package - it's fast, it renders every page I've throw at it so far, it passes &lt;a href=&quot;http://www.webstandards.org/action/acid2&quot;&gt;Acid 2&lt;/a&gt;, supports Canvas and &lt;a href=&quot;http://www.opera.com/features/svg/&quot;&gt;SVG&lt;/a&gt; and has a neat &lt;a href=&quot;http://widgets.opera.com/&quot;&gt;widgets&lt;/a&gt; implementation. Performance on &lt;a href=&quot;http://maps.google.com/&quot;&gt;Google Maps&lt;/a&gt; is a bit sluggish but other than that it's been extremely snappy. The tab screenshot thumbnails are a nice touch.&lt;/p&gt;

&lt;p id=&quot;p-2&quot;&gt;There are two features however that set it head and shoulders above its competitors in terms of raw utility:&lt;/p&gt;

&lt;ol&gt;
 &lt;li&gt;&lt;p id=&quot;p-3&quot;&gt;&lt;strong&gt;You can browse cached documents offline!&lt;/strong&gt; I'm not sure when other browsers forgot how to do this but it's been years since I've been able to unplug from the network and still view pages that have been saved in my cache.&lt;/p&gt;
 
&lt;p id=&quot;p-4&quot;&gt;In fact, this feature is almost too effective: I had to keep double-checking to make sure my WiFi was definitely turned off. A visual indicator that you are viewing an offline document would be a very useful addition.&lt;/p&gt;&lt;/li&gt;

 &lt;li&gt;&lt;p id=&quot;p-5&quot;&gt;&lt;strong&gt;You can quit your browser and reopen it to the same state.&lt;/strong&gt; Other browsers have been slow to cotton on to the fact that my browser state is important data - I frequently leave interesting pages open for days at a time and a browser crash causes me real pain. Safari and Firefox both have extensions that enable this but it's great to see it built in to the core product.&lt;/p&gt;
 
 &lt;p id=&quot;p-6&quot;&gt;Sadly, Opera doesn't persist partially completed form data (so you'll still lose that half-written blog entry if you weren't smart enough to write it in a text editor and paste it in at the last moment) but it's still a huge improvement over the rest.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p id=&quot;p-7&quot;&gt;As far as I can tell those two features have been in Opera since before the current release, but I'd never noticed them before. Here's hoping other browser manufacturers follow suit.&lt;/p&gt;

&lt;p id=&quot;p-8&quot;&gt;While the interface is leaps and bounds ahead of Opera 6/7, it still has a few crufty edges: the preferences are hard to navigate, the text in the tab screenshot window comes across as an afterthought, there's a randomly placed recycle bin in the upper right hand corner and it took me a while to find a skin I liked (tango cl). The default behaviour for command-clicking a link is to open a new tab and switch to it; my preference is for opening in the background but I can't work out how to change that option (though shift-command-click does what I want). Overall though it rates extremely well.&lt;/p&gt;

&lt;p id=&quot;p-9&quot;&gt;As usual, it's worth looking over the detailed changelogs (&lt;a href=&quot;http://www.opera.com/docs/changelogs/windows/900/&quot; title=&quot;Changelog for Opera 9.0 for Windows&quot;&gt;windows&lt;/a&gt;, &lt;a href=&quot;http://www.opera.com/docs/changelogs/mac/900/&quot; title=&quot;Changelog for Opera 9.0 for Macintosh&quot;&gt;mac&lt;/a&gt;). There are some real gems for scripters; Here's the list in full:&lt;/p&gt;

&lt;blockquote cite=&quot;http://www.opera.com/docs/changelogs/mac/900/&quot;&gt;
&lt;ul&gt;
  &lt;li&gt;Added support for XSLT 1.0 and the XSLTProcessor constructor.&lt;/li&gt;
  &lt;li&gt;Added support for XPath 1.0.&lt;/li&gt;
  &lt;li&gt;Added support for DOM level 2 Style Sheets and associated parts of DOM level 2 CSS.&lt;/li&gt;
  &lt;li&gt;Implemented designMode for rich text editing.&lt;/li&gt;
  &lt;li&gt;Added support for the &lt;code&gt;CONTENTEDITABLE&lt;/code&gt; attribute and contentEditable property.&lt;/li&gt;
  &lt;li&gt;Implemented support for canvas, as described in the &lt;a href=&quot;http://whatwg.org/specs/web-apps/current-work/#scs-dynamic&quot;&gt;Web Applications 1.0 draft&lt;/a&gt;, as well as the &lt;a href=&quot;http://my.opera.com/WebApplications/blog/show.dml/200788&quot;&gt;opera-2dgame context&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Added support for Audio, as described in the &lt;a href=&quot;http://whatwg.org/specs/web-apps/current-work/#scs-sound&quot;&gt;Web Applications 1.0 draft&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Multiple improvements to XMLHttpRequest support.&lt;/li&gt;
  &lt;li&gt;Added support for onmousewheel events.&lt;/li&gt;
  &lt;li&gt;Added support for document.load and document.adoptNode.&lt;/li&gt;
  &lt;li&gt;Added window.getSelection and associated methods.&lt;/li&gt;
  &lt;li&gt;Improved handling of offsetTop, offsetLeft, and offsetParent.&lt;/li&gt;
  &lt;li&gt;Removed support for &quot;javascript:&quot; URLs in CSS.&lt;/li&gt;
  &lt;li&gt;Pages using certain JavaScript events will reload when visited in history. A &lt;a href=&quot;http://www.opera.com/support/search/supsearch.dml?index=827&quot;&gt;knowledge base article&lt;/a&gt; is available.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p id=&quot;p-10&quot;&gt;I'm going to use Opera 9 as my default browser for the next week or so to see how well it holds up. I'll report back on the experience later.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2006/06/20/opera9</link>
  <dc:subject>Browsers</dc:subject>
  <dc:date>2006-06-20T23:42:18-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2006/05/11/operamini">
  <title>Opera Mini 2.0</title>
  <description>&lt;p id=&quot;p-0&quot;&gt;Just as I was getting thoroughly sick of the whole X-2.0 trend along comes a product I can really get excited about. &lt;a href=&quot;http://www.opera.com/products/mobile/operamini/&quot;&gt;Opera Mini 2.0&lt;/a&gt; is a truly lovely piece of software. It's a free web browser for your phone, accompanied by a free proxy:&lt;/p&gt;

&lt;blockquote cite=&quot;http://www.opera.com/products/mobile/operamini/faq/&quot;&gt;&lt;p id=&quot;p-1&quot;&gt;When surfing with Opera Mini, Web pages are optimized and compressed before being sent to your phone. This means that even though your mobile provider may charge you for the data which is transferred to your phone, the amount of data transferred is significantly less than it would normally be, making mobile surfing cheaper.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p id=&quot;p-2&quot;&gt;Most UK mobile data plans are pretty extortionate. I was quoted over £500 a month for an unlimited plan recently; compare that to &lt;a href=&quot;http://randomfoo.net/&quot;&gt;Leonard Lin&lt;/a&gt; who pays $15 a month in the US. Having a compressing proxy is essential.&lt;/p&gt;

&lt;p id=&quot;p-3&quot;&gt;In stark contrast to the desktop edition the user interface is beautifully simple, relying mostly on the joypad to navigate with a full-screen editor for entering URLs and filling in forms. Opera's &lt;a href=&quot;http://www.opera.com/products/mobile/smallscreen/&quot;&gt;small screen rendering technology&lt;/a&gt; is used to linearise the page content while keeping background colours and images intact.&lt;/p&gt;

&lt;p id=&quot;p-4&quot;&gt;The one feature I'd love to see added is a &quot;reload page with images&quot; menu option. I generally browse with images turned off, and viewing a page with its images requires me to navigate to the settings screen, toggle images on, reload the page and then remember to turn images back off again afterwards.&lt;/p&gt;

&lt;p id=&quot;p-5&quot;&gt;Opera Mini doesn't appear to support JavaScript, but despite that nearly all the sites I've visited have been perfectly usable. Even Gmail works, thanks to an automatic fallback to their plain-old-HTML interface. With any luck it will become part of the accepted accessibility benchmark - I know I'll be testing sites with it in the future.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2006/05/11/operamini</link>
  <dc:subject>Browsers</dc:subject>
  <dc:date>2006-05-11T22:12:25-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2004/12/16/quote">
  <title>A quote</title>
  <description>&lt;blockquote cite=&quot;http://www.technologyreview.com/articles/05/01/issue/ferguson0105.asp?p=7&quot;&gt;&lt;p&gt;
Ramez Naam, group program manager for MSN Search, declined to say whether or not search functions would be integrated directly into Microsoft's Internet Explorer. But a Microsoft executive, who asked to remain unnamed, told me that his company had recently reconstituted its browser development organization. &quot;Microsoft effectively disbanded the Internet Explorer group after killing Netscape,&quot; he said. &quot;But recently, they realized that Firefox was starting to gain share and that browser enhancements would be useful in the search market.&quot;
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;From &lt;a href=&quot;http://www.technologyreview.com/articles/05/01/issue/ferguson0105.asp&quot;&gt;What's next for Google&lt;/a&gt;, by Charles H. Ferguson.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2004/12/16/quote</link>
  <dc:subject>Mozilla, Browsers</dc:subject>
  <dc:date>2004-12-16T15:57:38-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2004/05/29/fix">
  <title>Time to fix those broken pages</title>
  <description>&lt;p&gt;I have a whole bunch of gripes about Internet Explorer, but my personal favourite is the way it will render a document served with a &lt;code&gt;text/plain&lt;/code&gt; Content-Type header if it thinks the file might contain &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt;. The direct result of this is that people with misconfigured web servers who are serving their &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt; with the wrong Content-Type frequently don't realise, so when users of better behaved browsers such as FireFox visit they get hit in the face with a page of raw source code.&lt;/p&gt;

&lt;p&gt;The times they are a-changing. I just spotted this gem in &lt;acronym title=&quot;MicroSoft Developers Network&quot;&gt;MSDN&lt;/acronym&gt;'s article &lt;a href=&quot;http://msdn.microsoft.com/asp.net/using/understanding/security/default.aspx?pull=/library/en-us/dnwxp/html/xpsp2websites.asp&quot;&gt;How to Make Your Web Site Work with Windows XP Service Pack 2&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote cite=&quot;http://msdn.microsoft.com/asp.net/using/understanding/security/default.aspx?pull=/library/en-us/dnwxp/html/xpsp2websites.asp&quot;&gt;&lt;p&gt;&lt;strong&gt;Q: Does your Web site contain files with file types that do not match their Content-Type and/or file extension?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A: You should correct all of these mismatches. Both the Content-Type and the file extension must match the type of the file for a download prompt to appear. Be sure this is true for your Web pages as well. If the Content-Type is plain/text, then they will not render as HTML.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Of course, the rate at which people upgrade to service pack 2 is likely to be pretty poor but at least new machines will have it installed by default. Hopefully sites serving the wrong Content-Type for their &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt; documents will be forced to clean up pretty quickly.&lt;/p&gt;

&lt;p&gt;The other issue mentioned in that quotation - forcing the file extension to match the Content-Type - is a little odd from a non-Windows &lt;acronym title=&quot;Operating System&quot;&gt;OS&lt;/acronym&gt; point of view but I'm sure there's a rational reason behind it. At the end of the day, anything that improves Windows security is a good thing for the health of both the Internet and society in general.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2004/05/29/fix</link>
  <dc:subject>Web Standards, Browsers</dc:subject>
  <dc:date>2004-05-29T23:46:45-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2004/02/17/lineEndings">
  <title>Automatic line ending conversions in IE</title>
  <description>&lt;p&gt;I've just updated my SitePoint blog with a &lt;a href=&quot;http://www.sitepoint.com/blog-post-view.php?id=153450&quot; title=&quot;Line endings in Javascript&quot;&gt;tale of Javascript debugging woe&lt;/a&gt;. To cut a long story short, Internet Explorer for both Mac and Windows automatically converts sane line endings in to the platform specific alternatives whenever you assign a Javascript string to the value attribute of a text area. It's the kind of quirk that can take up a whole morning's worth of debugging.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2004/02/17/lineEndings</link>
  <dc:subject>DHTML and Javascript, Browsers</dc:subject>
  <dc:date>2004-02-17T02:03:14-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2004/01/30/noMoreUsernames">
  <title>No more usernames in URLs</title>
  <description>&lt;p&gt;This one could get very interesting. Microsoft have &lt;a href=&quot;http://support.microsoft.com/default.aspx?scid=kb;%5bLN%5d;834489&quot; title=&quot;Microsoft plans to release a software update that modifies the default behavior of Internet Explorer for handling user information in HTTP and HTTPS URLs&quot;&gt;announced&lt;/a&gt; that an upcoming update to Internet Explorer will remove the ability to include usernames in &lt;acronym title=&quot;Universal Republic of Love&quot;&gt;URL&lt;/acronym&gt;s completely. This is in response to the growing problem of so called &quot;phishing&quot; scams, which use trick &lt;acronym title=&quot;Universal Republic of Love&quot;&gt;URL&lt;/acronym&gt;s to con important information such as passwords and credit card details out of unsuspecting browser users.&lt;/p&gt;

&lt;p&gt;Phishing is &lt;em&gt;big&lt;/em&gt; business. In &lt;a href=&quot;http://www.securityfocus.com/cgi-bin/sfonline/columnists-item.pl?id=215&quot; title=&quot;A Visit from the FBI&quot;&gt;this article on SecurityFocus&lt;/a&gt;, a loose transcript is provided of a talk by an &lt;acronym title=&quot;Federal Bureau of Investigation&quot;&gt;FBI&lt;/acronym&gt; agent who explains how phishing is used by organised crime gangs in Eastern Europe:&lt;/p&gt;

&lt;blockquote cite=&quot;http://www.securityfocus.com/cgi-bin/sfonline/columnists-item.pl?id=215&quot;&gt;&lt;p&gt; This is bad enough and it's also cruelly funny, but the scary part came in when Dave started talking about the other group behind the explosion of viruses and Trojans: Eastern European hackers, backed by organized crime, such as the Russian mafia. In other words, the professionals.&lt;/p&gt;

&lt;p&gt;These people are after one thing: money. The easiest way to illegally acquire money now is through the use of online tools like Trojans, or through phishing: set up a fake Web site for PayPal or eBay or Amazon, and then convince the naive to enter their usernames, passwords, and credit card information. Viruses and spam also intersect in this nasty spiderweb. Viruses help spread Trojans, and Trojans are used to turn unsuspecting users' computers into spam factories, or hosts for phishing expeditions, and thus furthering the spread of all the elements in this process: viruses, Trojans, spam, and phishing. It's a vicious cycle, and unfortunately, it appears to be getting worse. The FBI is working as hard as it can, but the nations of Eastern Europe are somewhat powerless to solve the problem at this time. &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; is so susceptible to this kind of attack that it's not even funny. In addition to the &quot;invisible username&quot; bug I &lt;a href=&quot;http://simon.incutio.com/archive/2003/12/09/nastyBug&quot; title=&quot;Nasty new IE vulnerability&quot;&gt;covered last month&lt;/a&gt;, a recent discovery compounds the problem by allowing dangerous executable files to pose as safe file types when downloaded from the web. &lt;a href=&quot;http://www.infoworld.com/article/04/01/28/HNiehole_1.html&quot;&gt;New Explorer hole could be devastating&lt;/a&gt; has the full details.&lt;/p&gt;

&lt;p&gt;Microsoft's solution is drastic to say the least. Passing the username as part of a &lt;acronym title=&quot;Universal Republic of Love&quot;&gt;URL&lt;/acronym&gt; has been part of the makeup of the internet since at least 1994, and the ability is baked in to a huge range of web client and server software. It's described in &lt;a href=&quot;http://www.ietf.org/rfc/rfc2396.txt&quot;&gt;RFC 23996&lt;/a&gt;.  The feature is rarely used however, and the overall effect of its removal from &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; is hard to judge. Off the top of my head I can think of only one site that uses it for legitimate reasons: &lt;a href=&quot;http://www.fileplanet.com/&quot;&gt;FilePlanet&lt;/a&gt;, which incorporates it in to the site's download queuing system (at least last time I checked).&lt;/p&gt;

&lt;p&gt;There's an interesting contrast to be made here between open and closed development methodologies. The Mozilla project has had &lt;a href=&quot;http://bugzilla.mozilla.org/show_bug.cgi?id=122445&quot; title=&quot;Bug 122445: Spoof prevention: Warn if username/password in link (url) looks like a hostname&quot;&gt;a bug open on this issue&lt;/a&gt; for over two years, which has drawn over 170 comments with plenty of great ideas but no approved solution. Microsoft on the other hand have remained silent on the issue until (we can only assume) the bad publicity surrounding it forced them to act, at which point they announced a fix that appears to gly in the face of commonly accepted web standards - but does undoubtedly solve the problem. Of course, with no chance for user feedback prior to the decision it amounts to little less than a decree from God - which correlates directly to their inarguable domination of the browser market, at least in terms of market share.&lt;/p&gt; 

&lt;p&gt;Of course, the millions of &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; users who decline to upgrade their browser will remain just as susceptible as they always were (unless they &lt;a href=&quot;http://support.microsoft.com/default.aspx?scid=kb;[ln];833786&quot; title=&quot;Steps that you can take to help identify and to help protect yourself from deceptive (spoofed) Web sites and malicious hyperlinks&quot;&gt;stop clicking links&lt;/a&gt;) - a fact for which we can hardly blame Microsoft. It does however mean that phishing will remain a lucrative scam for a long time to come.&lt;/p&gt;
</description>
  <link>http://simon.incutio.com/archive/2004/01/30/noMoreUsernames</link>
  <dc:subject>Online Issues, Browsers</dc:subject>
  <dc:date>2004-01-30T08:14:25-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2004/01/15/ieTeam">
  <title>You mean there IS an IE team?</title>
  <description>&lt;p&gt;Robert Scoble &lt;a href=&quot;http://radio.weblogs.com/0001011/2004/01/14.html#a6183&quot; title=&quot;Internet Explorer team lunch&quot;&gt;went to lunch&lt;/a&gt; with the head of the Internet Explorer team - yes, they still exist, despite having released nothing but security patches for over two years.&lt;/p&gt;

&lt;p&gt;Robert says that &lt;q cite=&quot;http://radio.weblogs.com/0001011/2004/01/14.html#a6183&quot;&gt;the team is looking to work with community members to improve Internet Explorer.&lt;/q&gt; If this means dialogue, or even some feedback on what they're up to, this is a very good thing. Less promising is Robert's &lt;a href=&quot;http://radio.weblogs.com/0001011/2004/01/14.html#a6186&quot; title=&quot;IE conversation is great&quot;&gt;follow-up comment&lt;/a&gt; on the topic of improved &lt;acronym title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/acronym&gt; and &lt;acronym title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/acronym&gt; support (by far the most requested developer feature):&lt;/p&gt;

&lt;blockquote cite=&quot;http://radio.weblogs.com/0001011/2004/01/14.html#a6186&quot;&gt;&lt;p&gt;Another thing that the commenters generally aren't thinking of is &quot;how to get adoption.&quot; I keep pointing out that if we fixed the CSS and PNG issues, you still wouldn't be able to use those for years. Why? Cause consumers (and companies) really don't care about those issues and won't download a new version just cause you fixed one or two issues.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Believe us, &lt;em&gt;we know&lt;/em&gt;. That's why we want these issues to be fixed as soon as possible - so we can deploy sites that take advantages of these standards before the oil runs out and human civilisation disintegrates in to a mass of warring tribes more interested in canibalism than visually appealing web sites.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2004/01/15/ieTeam</link>
  <dc:subject>Web Standards, Rants, Browsers</dc:subject>
  <dc:date>2004-01-15T04:50:36-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2003/12/13/ieGotcha">
  <title>Javascript debugging: IE Option gotcha</title>
  <description>&lt;p&gt;I've been debugging Javascript today. I like Javascript as a language, but I doubt anyone would disagree that it's a horrible, horrible language to debug across multiple browsers. Firebird at least has good debugging support - I currently use the Javascript Console and Jesse Ruderman's &lt;a href=&quot;http://www.squarefree.com/bookmarklets/webdevel.html#shell&quot; title=&quot;More voodoo magic in a bookmarklet&quot;&gt;shell bookmarklet&lt;/a&gt; and I really need to learn to use &lt;a href=&quot;http://devedge.netscape.com/viewsource/2002/venkman/01/&quot;&gt;Venkman&lt;/a&gt; some day. If anyone knows a better way of debugging Javascript in &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; than relying on the lame popup box I'd love to hear about it.&lt;/p&gt;

&lt;p&gt;In any case, one bug that I successfully vanquished today involved the humble &lt;code class=&quot;html&quot;&gt;&amp;lt;option&amp;gt;&lt;/code&gt; element. My &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt; looked something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&amp;lt;select name=&quot;categories&quot; multiple=&quot;multiple&quot; id=&quot;catfrom&quot; size=&quot;20&quot;&amp;gt;
 &amp;lt;option&amp;gt;entertainment&amp;lt;/option&amp;gt;
 &amp;lt;option&amp;gt;movies&amp;lt;/option&amp;gt;
 &amp;lt;option&amp;gt;sports&amp;lt;/option&amp;gt;
 &amp;lt;option&amp;gt;news&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I was having all kinds of strange problems in &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt;, which I finally tracked down to the following gotcha: in &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt;, the value property of an Option object is empty if the corresponding option tag doesn't have a value attribute. This is counter-intuitive because in &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt; if an option attribute is omitted the text inside the option element is used as the value instead. Mozilla browsers duplicate this in their handling of the Option object; &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; doesn't. Hopefully this tip will save someone some debugging time in the future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; David Lindquist pointed me to Microsoft's free &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=2F465BE0-94FD-4569-B3C4-DFFDF19CCD99&amp;amp;displaylang=en&quot;&gt;Script Debugger&lt;/a&gt;.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2003/12/13/ieGotcha</link>
  <dc:subject>DHTML and Javascript, Browsers</dc:subject>
  <dc:date>2003-12-13T21:26:12-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2003/12/09/nastyBug">
  <title>Nasty new IE vulnerability</title>
  <description>&lt;p&gt;Most people reading are probably aware of the common trick whereby spammers and other assorted ne'er-do-wells publish &lt;acronym title=&quot;Universal Republic of Love&quot;&gt;URL&lt;/acronym&gt;s with &lt;a href=&quot;http://bugzilla.mozilla.org/show_bug.cgi?id=122445&quot; title=&quot;Spoof prevention: Warn if username/password in link (url) looks like a hostname&quot;&gt;usernames that look like hostnames&lt;/a&gt; to fool people in to trusting a malicious site - for example, &lt;a href=&quot;http://www.microsoft.com&amp;amp;session%123123123@simon.incutio.com&quot;&gt;http://www.microsoft.com&amp;amp;session%123123123@simon.incutio.com&lt;/a&gt;. This trick is frequently used by spammers to steal people's PayPal accounts, by tricking them in to &quot;resetting&quot; their password at a site owned by the spammer but disguised as PayPal.com.&lt;/p&gt;

&lt;p&gt;Today's &lt;a href=&quot;http://www.zapthedingbat.com/security/ex01/vun1.htm&quot;&gt;new Internet Explorer vulnerability&lt;/a&gt; makes the problem a hundred times worse. By including an 0x01 character after the @ symbol in the fake &lt;acronym title=&quot;Universal Republic of Love&quot;&gt;URL&lt;/acronym&gt;, &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; can be tricked in to not displaying the rest of the &lt;acronym title=&quot;Universal Republic of Love&quot;&gt;URL&lt;/acronym&gt; &lt;em&gt;at all&lt;/em&gt;. Don't expect a patch for a while either; the guy who discovered the bug &lt;a href=&quot;http://www.securityfocus.com/archive/1/346948&quot;&gt;released it to BugTraq&lt;/a&gt; on the same day he notified the vendor.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2003/12/09/nastyBug</link>
  <dc:subject>Browsers</dc:subject>
  <dc:date>2003-12-09T19:21:45-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2003/11/11/utopia">
  <title>Browser testing utopia</title>
  <description>&lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;http://simon.incutio.com/images/2003/browsers.gif&quot; alt=&quot;10 browsers on one Windows machine, including 5 different versions of Internet Explorer&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Made possible by &lt;a href=&quot;http://www.skyzyx.com/archives/000094.php&quot;&gt;Ryan Parman&lt;/a&gt;. Now if I had a Mac and Virtual PC, I'd be able to run even more...&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2003/11/11/utopia</link>
  <dc:subject>Browsers</dc:subject>
  <dc:date>2003-11-11T01:05:23-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2003/11/07/multipleIEs">
  <title>Multiple Internet Explorers</title>
  <description>&lt;p&gt;In possibly the best news web designers will hear this year, Joe Maddalone of &lt;a href=&quot;http://www.insert-title.com/&quot; title=&quot;linky love&quot;&gt;Insert Title Web Designs&lt;/a&gt; has discovered a way of running &lt;a href=&quot;http://www.insert-title.com/web_design/?page=articles/dev/multi_IE&quot;&gt;multiple versions of Internet Explorer&lt;/a&gt; on one installation of Windows! The problem of testing in different versions of &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; has plagued developers for years, and it's fantastic to see a solution that doesn't involve running multiple partitions with separate Windows installations or shelling out for VMWare or VirtualPC.&lt;/p&gt;

&lt;p&gt;Unsurprisingly, Joe's revelation is causing quite a stir in the web development community. Matthew Haughey is &lt;a href=&quot;http://a.wholelottanothing.org/archives.blah/007561&quot; title=&quot;Designer makes IE developer-friendly&quot;&gt;asking&lt;/a&gt; why Microsoft didn't tell us about this themselves, Luke Redpath has &lt;a href=&quot;http://www.mezzoblue.com/archives/2003/11/06/ie_x_3/#c002232&quot; title=&quot;In a comment on mezzoblue.com&quot;&gt;released&lt;/a&gt; some &lt;a href=&quot;http://www.sonicdeath.co.uk/stuff/ie-multiple-icons.zip&quot; title=&quot;Zip File&quot;&gt;funky coloured icons&lt;/a&gt; to distinguish between versions and Ryan Parman has taken the risky (from a bandwidth point of view) step of &lt;a href=&quot;http://www.skyzyx.com/archives/000094.php&quot; title=&quot;Multiple Versions of Internet Explorer&quot;&gt;packaging the minimum files&lt;/a&gt; needed to run versions 5.01 and 5.5 up in to zip files. Amazingly, they're 2.92 MB and 3.25 MB respectively. I'm running them now and they seem to work just fine - major kudos to Joe for the discovery, and Ryan for making it so easy to take advantage of.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2003/11/07/multipleIEs</link>
  <dc:subject>Browsers</dc:subject>
  <dc:date>2003-11-07T00:46:56-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2003/11/06/easytoggle">
  <title>easytoggle and debugging in Safari</title>
  <description>&lt;p&gt;I've been working on a new inobtrusive &lt;acronym title=&quot;Dynamic HyperText Markup Language&quot;&gt;DHTML&lt;/acronym&gt; effect: &lt;a href=&quot;http://simon.incutio.com/code/js/easytoggle/example.html&quot; title=&quot;easytoggle demo page&quot;&gt;easytoggle&lt;/a&gt;, which is an inobtrusive implementation of the common effect where links or tabs can be clicked to reveal part of a page while hiding the other parts. It's similar in some ways to the &lt;a href=&quot;http://simon.incutio.com/archive/2003/08/12/multiPartForms&quot;&gt;Multi part forms with Javascript&lt;/a&gt; technique.&lt;/p&gt;

&lt;p&gt;The idea is pretty simple - all you need are a bunch of links and a bunch of elements that should be toggled by those links. When adding special behaviour to links it is always a good idea to ensure that they still link to something sensible, so that in user agents without Javascript support they still do something useful. In this case, it makes sense for them to act as anchor links that point to the elements with which they are associated. With easytoggle, all you need to do is define the links, point them at an element with an ID and assign them the class 'toggle'. The script does the rest of the work. For example, for a simple set with only two panels the markup would look something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&amp;lt;ul&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#p1&quot; class=&quot;toggle&quot;&amp;gt;Panel 1&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#p2&quot; class=&quot;toggle&quot;&amp;gt;Panel 2&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;p id=&quot;p1&quot;&amp;gt;This is panel 1&amp;lt;/p&amp;gt;
&amp;lt;p id=&quot;p2&quot;&amp;gt;This is panel 2&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That's all it takes - the &lt;a href=&quot;http://simon.incutio.com/code/js/easytoggle/example.html&quot; title=&quot;easytoggle demo page&quot;&gt;demo&lt;/a&gt; has a very slightly more complicated example.&lt;/p&gt;

&lt;p&gt;I thought it was finished, until I tested it in Apple's Safari browser. In Safari, the worst possible thing happens. The initialisation code which hides all of the panels after the first one works fine. Unfortunately, the code that causes the links to change which panel is visible fails silently, leaving only the first panel accessible to users with that browser. That's a big problem.&lt;/p&gt;

&lt;p&gt;It was at this point that I discovered that Safari's support for debugging Javascript &lt;em&gt;sucks rocks&lt;/em&gt;. Firstly, the browser gives no indication that a bug has been encountered. I'm sure this is a deliberate usability decision, but it also means users who encounter a bug won't even know that there is a problem with the site. A quick Google led me to &lt;a href=&quot;http://www.macosxhints.com/article.php?story=20030906093300383&quot; title=&quot;Safari and Javascript debugging&quot;&gt;this page&lt;/a&gt;, which told me how to enable Javascript error reporting:&lt;/p&gt;

&lt;ol&gt;
 &lt;li&gt;In a command line shell, execute &lt;code&gt;defaults write com.apple.Safari IncludeDebugMenu 1&lt;/code&gt; (apparently &lt;a href=&quot;http://www.lordofthecows.com/safari_enhancer.php&quot;&gt;Safari Enhancer&lt;/a&gt; lets you do this from a &lt;acronym title=&quot;Graphical User Interface&quot;&gt;GUI&lt;/acronym&gt;).&lt;/li&gt;
 &lt;li&gt;Reload Safari and check the &quot;Log Javascript Exceptions&quot; option in the newly enabled Debug menu.&lt;/li&gt;
 &lt;li&gt;Start Console.app, which lives in &lt;samp&gt;/Application/Utilities&lt;/samp&gt;. Note that this is &lt;em&gt;not the same thing&lt;/em&gt; as the command line console. This took me a few moments to figure out. Macs remain a strange new realm of discovery.&lt;/li&gt;
 &lt;li&gt;Javascript exceptions will now appear in the Console.app window.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Excellent - just what I needed to know. The entire error message I got when I clicked a link? &lt;code&gt;(event handler):Undefined value&lt;/code&gt;. Gee, thanks a lot Safari. If anyone has any ideas how I can fix the script in Safari (or at the very least prevent it from being unusable) please leave me a note.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Thanks to &lt;a href=&quot;http://simon.incutio.com/archive/2003/11/06/easytoggle#comment1&quot;&gt;a tip&lt;/a&gt; from David Lindquist, &lt;a href=&quot;http://simon.incutio.com/code/js/easytoggle/example2.html&quot; title=&quot;easytoggle demo page (updated version)&quot;&gt;the updated version of the script&lt;/a&gt; now works in Safari. It's a little bit uglier though.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2003/11/06/easytoggle</link>
  <dc:subject>DHTML and Javascript, Browsers</dc:subject>
  <dc:date>2003-11-06T01:28:49-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>
<item rdf:about="http://simon.incutio.com/archive/2003/10/29/quirksMode">
  <title>Defeating browser incompatibilities</title>
  <description>&lt;p&gt;Peter-Paul Koch has unveiled his new site, &lt;a href=&quot;http://www.quirksmode.org/&quot;&gt;QuirksMode.org&lt;/a&gt;, which features over 150 pages of cross browser &lt;acronym title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/acronym&gt; and javascript tips and tricks. Five months in the making, there's just too much good stuff to link to individual pieces here so my best recommendation is to head on over there and spend some time browsing around. I'll make an exception though in linking to the &lt;a href=&quot;http://www.quirksmode.org/dom/toc.html&quot;&gt;Table of Contents script&lt;/a&gt;, which uses the &lt;acronym title=&quot;Document Object Model&quot;&gt;DOM&lt;/acronym&gt; to create an additional navigation bar linking to each of the level 2 and 3 headers on a page. Another great example of the power of structural markup.&lt;/p&gt;</description>
  <link>http://simon.incutio.com/archive/2003/10/29/quirksMode</link>
  <dc:subject>DHTML and Javascript, Browsers</dc:subject>
  <dc:date>2003-10-29T20:03:18-00:00</dc:date>
  <dc:creator>Simon Willison</dc:creator>
</item>

</rdf:RDF>