[Valid Atom 1.0] This is a valid Atom 1.0 feed.


This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.


  1. <?xml version='1.0' encoding='utf-8'?>
  2. <feed xmlns=""><title>Henri Sivonen’s pages</title><link href=""></link><link href="" rel="self"></link><updated>2020-02-20T07:08:18Z</updated><subtitle>Articles and blogish notes</subtitle><rights>Copyright Henri Sivonen</rights><author><name>Henri Sivonen</name><email>[email protected]</email></author><id></id><entry><title type="xhtml"><div xmlns="">Always Use UTF-8 &amp; Always Label Your HTML Saying So</div></title><summary type="xhtml"><div xmlns="">To avoid having to deal with escapes (other than for &lt;, &gt;, &amp;, and "), to avoid data loss in form submission, to avoid XSS when serving user-provided content, and <a href="">to comply with the HTML Standard</a>, always encode your HTML as UTF-8. Furthermore, in order to let browsers know that the document is UTF-8-encoded, always label it as such.</div></summary><link href=""></link><id></id><updated>2020-02-19T19:21:12Z</updated><content type="xhtml"><div xmlns="">
  4. <div class="nutshell">
  5. <p>To avoid having to deal with escapes (other than for &lt;, &gt;, &amp;, and "), to avoid data loss in form submission, to avoid XSS when serving user-provided content, and <a href="">to comply with the HTML Standard</a>, always encode your HTML as UTF-8. Furthermore, in order to let browsers know that the document is UTF-8-encoded, always label it as such. To label your document, you need to do <i>at least one</i> of the following:</p>
  7. <ul>
  8. <li><p>Put <code>&lt;meta charset="utf-8"&gt;</code> as the first thing after the <code>&lt;head&gt;</code> tag.</p><p>The <code>meta</code> tag, including its ending <code>&gt;</code> character needs to be within the first 1024 bytes of the file. Putting it right after <code>&lt;head&gt;</code> is the easiest way to get this right. <b>Do not</b> put comments before <code>&lt;head&gt;</code>.</p></li>
  9. <li><p>Configure your server to send the header <code>Content-Type: text/html; charset=utf-8</code> on the HTTP layer.</p></li>
  10. <li><p>Start the document with the UTF-8 BOM, i.e. the bytes 0xEF, 0xBB, and 0xBF.</p></li>
  11. </ul>
  12. <p>Doing more than one of these is OK.</p>
  13. </div>
  15. <h2 id="answers">Answers to Questions</h2>
  17. <p>The above says the important bit. Here are answers to further questions:</p>
  19. <h3 id="why">Why Do I Need to Label UTF-8 in HTML?</h3>
  21. <p>Because HTML didn’t support UTF-8 in the very beginning and legacy content can’t be expected to opt out, you need to opt into UTF-8 just like you need to opt into the standards mode (via <code>&lt;!DOCTYPE html&gt;</code>) and to mobile-friedly layout (via <code>&lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;</code>). (<a href="/utf-8-detection/">Longer answer</a>)</p>
  23. <h3 id="which">Which Method Should I Choose?</h3>
  25. <p><code>&lt;meta charset="utf-8"&gt;</code> has the benefit of keeping the label within your document even if you move it around. The main risk is that someone forgets that it needs to be within the first 1024 bytes and puts comments, Facebook metadata, <code>rel=preload</code>s, stylesheets or scripts before it. Always put that other stuff <i>after</i> it.</p>
  27. <p>The HTTP header has the benefit that if you are setting up a new server that doesn’t have any old non-UTF-8 documents on it, you can configure the header once, and it works for all HTML documents on the server thereafter.</p>
  29. <p>The BOM method has the problem that it’s too easy to edit the file in a text editor that removes the BOM and not notice that this has happened. However, if you are writing a serializer library and you are neither in control of the HTTP header nor can inject a tag without interfering with what your users are doing, you can make the serializer always start with the UTF-8 BOM and know that things will be OK.</p>
  31. <h3 id="utf16">Can I Use UTF-16 Instead?</h3>
  33. <p>Don’t. If you serve user-provided content as UTF-16, <a href="">it is possible to smuggle content that becomes executable when interpreted as other encodings</a>. This is a cross-site scripting vulnerability if the user uses a browser that allows the user to manually override UTF-16 with another encoding.</p>
  35. <p>UTF-16 cannot be labeled via <code>&lt;meta charset&gt;</code>.</p>
  37. <h3 id="text">What about Plain Text?</h3>
  39. <p>The <code>&lt;meta charset="utf-8"&gt;</code> method is not available for plain text, but the other two are. In the case of plain text, the HTTP header is obviously <code>Content-Type: text/plain; charset=utf-8</code> instead.</p>
  41. <h3 id="js">What about JavaScript?</h3>
  43. <p>If you’ve labeled your HTML as UTF-8, you don’t need to label your UTF-8-encoded JavaScript files, since by default they inherit the encoding from the document that includes them. However, to make your JavaScript robust when referenced form non-UTF-8 HTML you can use the UTF-8 BOM or the HTTP header, which is <code>Content-Type: application/javascript; charset=utf-8</code> in the JavaScript case.</p>
  45. <h3 id="css">What about CSS?</h3>
  47. <p>If you’ve labeled your HTML as UTF-8, you don’t need to label your UTF-8-encoded CSS files, since by default they inherit the encoding from the document that includes them. However, to make your CSS robust when referenced form non-UTF-8 HTML you can use the UTF-8 BOM or the HTTP header, which is <code>Content-Type: text/css; charset=utf-8</code> in the CSS case, or you can put <code>@charset "utf-8";</code> as the very first thing in the CSS file.</p>
  49. <h3 id="xml">What about XML (Including SVG)?</h3>
  51. <p>Unlabeled XML defaults to UTF-8, so you don’t need to label it.</p>
  53. <h3 id="json">What about JSON?</h3>
  55. <p><a href="">JSON must be UTF-8</a> and <a href="">is processed as UTF-8</a>, so there’s no labeling.</p>
  57. <h3 id="webvtt">What about WebVTT?</h3>
  59. <p>WebVTT is always UTF-8, so there’s no labeling.</p>
  61. </div></content></entry><entry><title type="xhtml"><div xmlns="">Why Supporting Unlabeled UTF-8 in HTML on the Web Would Be Problematic</div></title><summary type="xhtml"><div xmlns="">UTF-8 has won. Yet, Web authors have to opt in to having browsers treat HTML as UTF-8 instead of the browsers Just Doing the Right Thing by default. Why?</div></summary><link href=""></link><id></id><updated>2020-02-19T19:20:41Z</updated><content type="xhtml"><div xmlns="">
  63. <p>UTF-8 has won. Yet, Web authors have to opt in to having browsers treat HTML as UTF-8 instead of the browsers Just Doing the Right Thing by default. Why?</p>
  65. <p>I’m writing this down in comprehensive form, because otherwise I will keep rewriting unsatisfactory partial explanations repeatedly as bug comments again and again. For more on how to label, see <a href="/label-utf-8/">another writeup</a>.</p>
  67. <h2>Legacy Content Won’t Be Opting Out</h2>
  69. <p>First of all, there is the “<a href="">Support Existing Content</a>” design principle. Browsers can’t just default to UTF-8 and have HTML documents encoded in legacy encodings opt out of UTF-8, because there is unlabeled legacy content, and we can’t realistically expect the legacy content to be actively maintained to add opt-outs now. If we are to keep supporting such legacy content, the assumption we have to start with is that unlabeled content <i>could</i> be in a legacy encoding.</p>
  71. <p>In this regard, <code>&lt;meta charset=utf-8&gt;</code> is just like <code>&lt;!DOCTYPE html&gt;</code> and <code>&lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;</code>. Everyone wants newly-authored content to use UTF-8, the No-Quirks Mode (better known as the Standards Mode), and to work well on small screens. Yet, every single newly-authored HTML document has to explicitly opt in to all three, since it isn’t realistic to get all legacy pages to opt out.</p>
  73. <h2>Web Content Arrives over Time</h2>
  75. <p>But there is no single legacy encoding, so if we want to Support Existing Content, we need some way of deciding which one, <i>and</i> we know that given a document that is valid UTF-8, the probability that it was meant to be something other than UTF-8 is virtually zero. So if we decide which one of the legacy encodings we are dealing with not just by the top-level domain name (or the browser UI locale) but by examining the content, why not autodetect UTF-8?</p>
  77. <p>The issue is not the difficulty of distinguishing UTF-8 from other encodings given the <i>full</i> content. In fact, when loading files from <code>file:</code> URLs, Firefox does detect detect UTF-8! (Chrome does, too, but less reliably.) For <code>file:</code> URLs, we sacrifice incremental loading on the assumption that most <code>file:</code> URLs point to a local disk (as opposed to a file server mounted as if it was a local drive) which is fast enough that the user would not notice incremental loading anyway. We also assume that <code>file:</code>-URL content is <i>finite</i>.</p>
  79. <p>For <code>http:</code>/<code>https:</code> content, though, incremental processing is important and starting over is bad. Also, some pages intentionally never finish loading and need to be treated as infinite so we never have “full” content!</p>
  81. <h2>Encoding Detection Prescan Is Not Like <code>meta charset</code> Prescan</h2>
  83. <p>But we already wait for up to 1024 bytes (in Gecko; in WebKit and in Blink it is more complicated) to scan for <code>meta charset</code>, so infinite-loading pages that neither declare the encoding nor send 1024 bytes before some earlier JavaScript has done an out-of-band request to the server to signal that it is OK to send more HTML bytes already stall. Can’t we just scan the first 1024 bytes for UTF-8ness?</p>
  85. <p>This assumes that there is some non-ASCII within the first 1024 bytes. Can we rely on non-ASCII pages to have the first bytes of non-ASCII within the first 1024 bytes? No.</p>
  87. <p>The non-markup bytes are typically either in the general-purpose HTML <code>title</code> element or in the <code>content</code> attribute of the Facebook-purpose <code>meta property="og:title"</code> element. Sadly, it is all too possible for these not to be within the first 1024 bytes, because before them, there are things like IE conditional comments, Facebook bogo-namespaces, a heap of <code>rel=preload</code>s, over a dozen icons for iOS, copyright-related comments, or just scripts and stylesheets declared first.</p>
  89. <h2>What If We Scanned the Whole <code>head</code>?</h2>
  91. <p>What if we scanned until the start of <code>body</code> like WebKit does for <code>meta charset</code> (leaving aside for the moment how confidently we can locate the start of <code>body</code>, which has an optional start tag before we start the real tokenization and tree building)? Surely <code>title</code> is <i>somewhere</i> in <code>head</code>, and the user cannot perceive incremental rendering until <code>body</code> starts anyway.</p>
  93. <p>So now we see <code>title</code> while we’ve buffered up bytes and haven’t started the real encoding decoder, the tokenizer, or the tree builder. We can now detect from the content of <code>title</code>, right? For non-Latin scripts, yes. Even just the page title in a non-Latin script is very likely enough to decide UTF-8ness. For languages like German or Finnish, no. Even though just about every German or Finnish <i>document</i> has non-ASCII, there’s a very real chance that the few words that end up in the title are fully ASCII. For languages like English, Somali, Dutch, Indonesian, Swahili, Somali, or various Malay languages you have even less hope of there being non-ASCII in the title than with German or Finnish even though there might be non-ASCII quotation marks, dashes, or a rare non-ASCII letter (such as a rare letter with diaeresis or acute accent) in a full document. For the <i>World-Wide</i> Web, a solution needs to work for these languages, too, and not just for non-Latin-script languages.</p>
  95. <h2>Looking Further</h2>
  97. <p>OK, so it seems that something more complicated is needed. Let’s think of fundamental requirements:</p>
  99. <p>If Web authors think they can get away with not declaring UTF-8, many, many Web authors are going to leave UTF-8 undeclared. Therefore, we need a solution that works reliably in 100% of the case or we’d make the Web Platform more brittle. Timeouts are by definition dependent on something other than the content, so any solution that hand-waves some problem away by adding a timeout would be unreliable in this sense. Likewise, solutions that depend on how HTML content maps to network protocol buffer boundaries are inherently unreliable in this sense.</p>
  101. <p>Also, making UTF-8 work undeclared should not regress performance compared to labeled UTF-8. A performance regression large enough to make the aggregate user experience worse (especially on slow CPUs and Internet connections) but small enough not to be noticed by authors (especially on fast CPUs and fast Internet connections) would be particularly unfortunate.</p>
  103. <p>This gives us the following basic requirements:</p>
  105. <ul>
  106. <li>Must support existing unlabeled non-UTF-8 content.</li>
  107. <li>Must be reliable for unlabeled UTF-8.</li>
  108. <li>Must not break incremental rendering of HTML.</li>
  109. <li>Must not involve timeouts.</li>
  110. <li>Must not depend on network buffer boundaries.</li>
  111. <li>Must not regress performance compared to labeled UTF-8.</li>
  112. </ul>
  114. <p>Let’s look at what’s wrong with potential solutions. (As noted earlier, simply defaulting to UTF-8 without detection would fail to support existing unlabeled non-UTF-8 content.)</p>
  116. <h2>Buffer Until Decided</h2>
  118. <p>OK, how about we scan until we’ve seen enough non-ASCII to decide, then? This doesn’t work, because for ASCII-only content it would mean buffering all the way to the end of the document, and ASCII-only content is real on the Web. That is, this would break incremental rendering e.g. for English. Trying to hand-wave the problem away using timeout would fail the requirement not to have timeouts. Trying to have a limit based and byte count would make the solution unreliable e.g. English content that has a copyright sign in the page footer or for Dutch content that has a letter with the diaeresis further from the page start than whatever the limit is.</p>
  120. <h2>What Chrome Does but with UTF-8 Detection</h2>
  122. <p>Chrome already has detection for legacy encodings. How about detecting UTF-8 byte patterns, too?</p>
  124. <p>This would not be at all reliable. Chrome’s detection is opportunistic from whatever bytes the HTML parser happens to have available up front. This means that the result not only depends on timing and network buffer boundaries but also fails to account for non-ASCII after a long ASCII prefix.</p>
  126. <h2>What Chrome Does but with UTF-8 as the Fallback</h2>
  128. <p>How about doing what Chrome does, but deciding UTF-8 if all the bytes available at the time of decision or ASCII?</p>
  130. <p>This would break some existing unlabeled non-UTF-8 content with a long ASCII prefix. Additionally, the breakage would be dependent on timing and network buffer boundaries.</p>
  132. <h2>What Firefox Does but with UTF-8 Detection</h2>
  134. <p>Firefox already has detection for legacy encodings. How about detecting UTF-8 byte patterns, too?</p>
  136. <p>Firefox has a solution that does not depend on timing or network buffer boundaries and that can deal with long ASCII prefixes. If the meta prescan of the first 1024 bytes fails, Firefox runs the encoding detector on those 1024 bytes taking into account the top-level domain as an additional signal. If those bytes are all ASCII (and don’t contain an ISO-2022-JP escape sequence), Firefox at that point decides from the top-level domain. Upon encountering the end of the stream, Firefox guesses again now taking into account all the bytes. If the second guess differs from the first guess, the page is reloaded using the result of the second guess.</p>
  138. <p>(The above description does not apply to the .jp, .in, and .lk TLDs. .jp has a special-purpose detector that detects among Japanese encodings only and triggers the reload, if needed, as soon as the decision is possible. .in and .lk fall back to windows-1252 without detection to accommodate old font hacks.)</p>
  140. <p>When there’s a 1024-byte (or longer) ASCII prefix, reloading the page would regress performance relative to labeling UTF-8. Also, there is the additional problem that side effects of scripts (e.g. outbound XHR/Fetch) could be observed twice.</p>
  142. <h2>What Firefox Does but Guessing UTF-8 If the First 1024 Bytes Are ASCII</h2>
  144. <p>How about guessing UTF-8 instead of making a TLD-based guess when the first 1024 bytes are ASCII?</p>
  146. <p>This solution would be better, but it would regress performance in the form of reloads for existing pages that currently don’t suffer such problems in order to allow UTF to go undeclared for new pages. Furthermore, pages that load different-origin pages into iframes could be confused by those pages reloading on their own. Sure, this problem is already present in Firefox, but it occurs rarely thanks to the TLD-based guess being pretty good except for non-windows-1252 content on generic domains. This solution would make it occur for every unlabeled non-UTF-8 page with a 1024-byte ASCII prefix. Moreover, this would break legacy-encoded documents that never reach the end of the stream, such as pre-Web Socket chat response iframes.</p>
  148. <p>Even for new unlabeled UTF-8 pages that would be a performance penalty relative to labeled UTF-8: The performance cost of processing all the bytes of the page using the detector.</p>
  150. <h2>Stopping the Detector Once Confident about UTF-8</h2>
  152. <p>Could we do something about the performance penalty for unlabeled UTF-8 content?</p>
  154. <p>Yes, we could. First, the ASCII prefix is already skipped over using SIMD and without pushing to each detector state machine. We could define how many characters of given UTF-8 sequence length need to be seen in order to stay with UTF-8 and stop running the detector. In the case of two-byte UTF-8 sequences, seeing only one is not enough. In the case of three-byte UTF-8 sequences, maybe even one is enough. This would mitigate the concern of unlabeled UTF-8 suffering a performance penalty relative to labeled UTF-8.</p>
  156. <p>However, this would still leave the issue of reloading non-UTF-8 pages that presently don’t need to be reloaded thanks to the TLD-based guess and the issue of breaking legacy-encoded pages that intentionally never reach the end of the stream.</p>
  158. <h2>Passing Through the ASCII Prefix</h2>
  160. <p>What’s deal with the reloading anyway? An ASCII prefix decodes the same in both UTF-8 and in legacy encodings (other than UTF-16BE and UTF-16LE, which are handled on the BOM sniffing layer), so why not just pass the ASCII prefix through and make the detection decision afterwards?</p>
  162. <p>That is, instead of treating decoding as a step that happens <i>after</i> detection, how about fusing the detector into a decoder such that the decoder streams ASCII through (to the HTML tokenizer) until seeing an ISO-2022-JP escape or a non-ASCII byte, and in the former case turns into a streaming ISO-2022-JP decoder immediately and in the latter case buffers bytes until the fused detector has confidently made its guess, turns into a decoder for the guessed encoding, outputs the buffer decoded accordingly, and thereafter behaves as a streaming decoder for the guessed encoding?</p>
  164. <p>As with the observation that detecting UTF-8 is simple given access to the whole document, but things being complicated because document loading on the Web happens over time, things with the ASCII prefix are more complicated than they seem.</p>
  166. <p>If the ASCII prefix is passed through to the HTML tokenizer, parsed, and the corresponding part of the DOM built before the encoding is decided, two issues need to be addressed:</p>
  168. <ol>
  169. <li>The ASCII prefix may contain <code>&lt;script src&gt;</code>, <code>&lt;link rel=stylesheet&gt;</code>, or same-origin <code>&lt;iframe&gt;</code>, and the encoding of the document inherits into those in case they turn out to lack encoding declarations of their own.</li>
  170. <li>A script may have observed <code>document.characterSet</code>.</li>
  171. </ol>
  173. <p>Does the second issue matter? Maybe it does, in which case passing through the ASCII prefix before deciding the encoding won’t work. However, more likely it doesn’t.</p>
  175. <p>If it doesn’t, we can make up a special name signifying ongoing detection and expose it from <code>document.characterSet</code> and inherit it into external scripts, stylesheets, and same-origin iframes. This means that detection expands from being an HTML loading-specific issue to being something that the script and style loaders need to deal with as well (i.e. they need to also run the detector if the special name is inherited).</p>
  177. <p>If we were to go this route, we should use pre-existing IE special names. The generic detector should be called <code>_autodetect_all</code> and the .jp TLD-specific detector should be called <code>_autodetect</code>. (<a href="">IE got Japanese detection in IE4.</a> The generic detector was not in IE4 but was added by IE6 at the latest. Hence the Japanese case getting the shorter name.)</p>
  179. <p>In addition to exposing non-encoding-name values via <code>document.characterSet</code> and making detection spill over to the script and style loaders, this poses a problem similar to the earlier ASCII prefix problems: What if there’s a two-byte UTF-8 sequence, which on its own could be plausible as <a href="">two German windows-1252 characters</a> or as a single legacy CJK character, and then another long stretch of ASCII? For example, UTF-8 ®, which is reasonable in an English page title, maps to <span>庐</span> in GBK, <span>簧</span> in Big5, <span>速</span> in EUC-JP, and <span>짰</span> in EUC-KR. The characters land in the most common section (Level 1 Hanzi/Kanji or common Hangul) in each of the four encodings.</p>
  181. <p>So if UTF-8 ® stops ASCII passthrough and starts buffering, because the character alone isn’t a conclusive sign of UTF-8ness, it is easy to break incremental rendering, since on an English page buffering until more non-ASCII characters are found could end up reaching the end of the stream.</p>
  183. <h2>ASCII Pass-Through with Length-Limited Subsequent ASCII Runs</h2>
  185. <p>The problem could be alleviated in a way that doesn’t depend on timing or on buffer boundaries. If the page indeed is German in windows-1252 or Chinese, Japanese, or Korean in a legacy encoding, there should be more UTF-8 byte sequences at a shorter distance from the previous one than in UTF-8 English (or Dutch, etc.). The German non-ASCII sequences will be relatively far apart, but it’s very improbable that the next occurrence of windows-1252 non-ASCII will <i>also</i> constitute a valid UTF-8 byte sequence. GBK, Big5, EUC-JP, and EUC-KR can easily have multiple consecutive two-byte sequences that are also plausible UTF-8 byte sequences. However, once non-ASCII starts showing up, more non-ASCII is relatively close and at some point, there will be a byte sequence that’s not valid UTF-8.</p>
  187. <p>It should be possible to pick a number such that if the detector has seen non-ASCII but hasn’t yet decided UTF-8 vs. non-UTF-8, if it subsequently sees more ASCII bytes in a row than the chosen number, it decides UTF-8.</p>
  189. <h2>It’s a Design! Why Not Go Ahead and Ship It?</h2>
  191. <p>Apart from making the bet that exposing weird values from <code>document.characterSet</code> wouldn’t break the Web, the solution sketched above would involve behaviors that none of Gecko, Blink, or WebKit currently have. Just letting Web authors omit labeling UTF-8 does not seem like a good enough reason to introduce such complexity.</p>
  193. <h2>What about <code>text/plain</code>?</h2>
  195. <p><code>text/plain</code> can’t use <code>&lt;meta charset=utf-8&gt;</code> and doesn’t have the issue of re-running the side effects of JavaScript upon reload. How about making Firefox detect UTF-8 for <code>text/plain</code>?</p>
  197. <p>The case against doing this is less strong than in the HTML case. However, it’s a slippery slope. It would be bad for Firefox to do this unilaterally and to provoke Chrome to do more detection if it meant Chrome picking one of the easy-for-Chrome brittle options from the start of the above list instead of doing something robust and cross-vendor-agreed-upon.</p>
  199. </div></content></entry><entry><title type="xhtml"><div xmlns="">encoding_rs</div></title><summary type="xhtml"><div xmlns="">A Web-Compatible Character Encoding Library in Rust. (Used in Firefox.)</div></summary><link href=""></link><id></id><updated>2020-02-15T18:39:05Z</updated></entry><entry><title type="xhtml"><div xmlns="">IME Smoke Testing</div></title><summary type="xhtml"><div xmlns="">In early 2019, I found myself in a situation where I needed to check that I hadn’t broken IME integration code. Later in 2019, I needed to do it again and now I'm testing this again in 2020, so I’m writing this down.</div></summary><link href=""></link><id></id><updated>2020-02-14T09:16:44Z</updated></entry><entry><title type="xhtml"><div xmlns="">The HTML Parser</div></title><summary type="xhtml"><div xmlns="">An implementation of the HTML5 parsing algorithm in Java. (Used in Firefox by the means of automated translation to C++.)</div></summary><link href=""></link><id></id><updated>2020-02-11T13:44:04Z</updated></entry><entry><title type="xhtml"><div xmlns="">About the Hiragino Fonts with CSS</div></title><summary type="xhtml"><div xmlns="">A short document about a couple of observations on using the Hiragino fonts with CSS. (The Hiragino fonts come with Mac OS X.)</div></summary><link href=""></link><id></id><updated>2020-01-12T17:21:59Z</updated></entry><entry><title type="xhtml"><div xmlns="">It’s Time to Stop Adding New Features for Non-Unicode Execution Encodings in C++</div></title><summary type="xhtml"><div xmlns="">I think the C++ standard should adopt the approach of “Unicode-only internally” for <i>new</i> text processing facilities and should not support non-Unicode execution encodings in newly-introduced features. This allows new features to have less abstraction obfuscation for Unicode usage, avoids digging legacy applications deeper into non-Unicode commitment, and avoids the specification and implementation effort of adapting new features to make sense for non-Unicode execution encodings.</div></summary><link href=""></link><id></id><updated>2020-01-08T08:39:09Z</updated></entry><entry><title type="xhtml"><div xmlns="">Activating Browser Modes with Doctype</div></title><summary type="xhtml"><div xmlns="">A document about the essentials of the layout modes of newer browsers.</div></summary><link href=""></link><id></id><updated>2020-01-06T15:04:31Z</updated></entry><entry><title type="xhtml"><div xmlns="">Rust 2020</div></title><summary type="xhtml"><div xmlns="">It’s again the time of year when the Rust Core Team calls for blog posts for input into the next year’s roadmap. This is my contribution.</div></summary><link href=""></link><id></id><updated>2019-11-06T14:13:53Z</updated></entry><entry><title type="xhtml"><div xmlns="">The Last of the Parsing Quirks</div></title><summary type="xhtml"><div xmlns="">I implemented a single quirk for HTML5 parsing yesterday.</div></summary><link href=""></link><id></id><updated>2019-10-24T18:33:42Z</updated></entry><entry><title type="xhtml"><div xmlns="">About <code>about:blank</code></div></title><summary type="xhtml"><div xmlns=""><code><a href="about:blank">about:blank</a></code>
  200. is probably the hardest Web page to load. In fact, it is so hard that
  201. in order to turn the HTML5 parser on by default in Firefox last year,
  202. we decided to special-case <code>about:blank</code>
  203. to use the old parser in Firefox 4.</div></summary><link href=""></link><id></id><updated>2019-09-19T13:06:53Z</updated></entry><entry><title type="xhtml"><div xmlns="">It’s Not Wrong that <code>"🤦🏼‍♂️".length == 7</code></div></title><summary type="xhtml"><div xmlns="">From time to time, someone shows that in JavaScript the <code>.length</code> of a string containing an emoji results in a number greater than 1 (typically 2) and then proceeds to the conclusion that haha JavaScript is so broken. In this post, I will try to convince you that ridiculing JavaScript for this is less insightful than it first appears.</div></summary><link href=""></link><id></id><updated>2019-09-09T17:11:47Z</updated></entry><entry><title type="xhtml"><div xmlns="">Rust 2019</div></title><summary type="xhtml"><div xmlns="">The Rust team <a href="">encouraged</a> people to write blog posts reflecting on Rust in 2018 and proposing goals and directions for 2019. Here’s mine.</div></summary><link href=""></link><id></id><updated>2018-12-15T19:36:20Z</updated></entry><entry><title type="xhtml"><div xmlns="">encoding_rs: a Web-Compatible Character Encoding Library in Rust</div></title><summary type="xhtml"><div xmlns=""><a href="">encoding_rs</a> is a high-decode-performance, low-legacy-encode-footprint and high-correctness implementation of the WHATWG <a href="">Encoding Standard</a> written in Rust.</div></summary><link href=""></link><id></id><updated>2018-12-05T11:22:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">How I Wrote a Modern C++ Library in Rust</div></title><summary type="xhtml"><div xmlns="">Patterns that I used to make <a href="">encoding_rs</a> appear as a modern C++ library to C++ code.</div></summary><link href=""></link><id></id><updated>2018-12-05T11:20:42Z</updated></entry><entry><title type="xhtml"><div xmlns="">Using cargo-fuzz to Transfer Code Review of Simple Safe Code to Complex Code that Uses <code>unsafe</code></div></title><summary type="xhtml"><div xmlns=""><a href="rust2018/">#Rust2018</a></div></summary><link href=""></link><id></id><updated>2018-12-03T09:42:34Z</updated></entry><entry><title type="xhtml"><div xmlns="">A Rust Crate that
  204. Also Quacks Like
  205. a Modern C++ Library</div></title><summary type="xhtml"><div xmlns="">My RustFest Paris 2018 talk. (Slides about pointers in zero-length slices have been edited after RustFest to avoid spreading out-of-date information.) <a href="">Video is available</a>.</div></summary><link href=""></link><id></id><updated>2018-06-04T10:28:16Z</updated></entry><entry><title type="xhtml"><div xmlns="">#Rust2018</div></title><summary type="xhtml"><div xmlns="">The Rust team <a href="">encouraged</a> people to write blog posts reflecting on Rust in 2017 and proposing goals and directions for 2018. Here’s mine.</div></summary><link href=""></link><id></id><updated>2018-01-11T18:44:27Z</updated></entry><entry><title type="xhtml"><div xmlns="">No Namespaces in JSON, Please</div></title><summary type="xhtml"><div xmlns="">I think that experience from Namespaces in XML should lead to the conclusion not to repeat the same (or almost same) thing with JSON. I think the developer community as a whole should not pay the cost of the use cases of the part of the developer community that believes (out of the scope of this post if rightly or wrongly) that identifiers in data formats should fit into a global naming scheme and, more specifically, that naming scheme should make every identifier into a URI. Instead,  I think that the part of the developer community that believes that it needs to be able merge data thanks to identifiers being URIs should bear the cost of doing whatever name mangling it needs to do upon data ingest given the information of which format a given ingested piece of JSON was in.</div></summary><link href=""></link><id></id><updated>2017-05-31T07:14:40Z</updated></entry><entry><title type="xhtml"><div xmlns="">A Lecture about HTML5</div></title><summary type="xhtml"><div xmlns="">I was invited to give a lecture about HTML5 on a course titled <a href="">WWW Applications</a> at the Department of Media Technology of Helsinki University of Technology.</div></summary><link href=""></link><id></id><updated>2016-07-26T16:32:45Z</updated></entry><entry><title type="xhtml"><div xmlns="">Julkisesti luotettu varmenne ikidomainille TLS:ää (SSL:ää) varten</div></title><summary type="xhtml"><div xmlns="">Aiemmin <a href="">ikidomainille</a>,
  206. kuten <code></code>, on ollut vaikeaa saada julkisesti
  207. luotettua TLS-varmennetta. Uusi voittoa tavoittelematon varmentaja <a href="">Let’s Encrypt</a> tarkistaa
  208. isäntänimen (hostname) hallinnan ja mahdollistaa näin julkisesti luotetun varmenteen saamisen ikidomaineille. <span>(<i>English summary:</i> Previously it was
  209. impractical to get a publicly trusted TLS certificate for an iki domain (e.g.
  210. <code></code>). Thanks to Let’s Encrypt performing validation
  211. on a per-hostname basis, it’s now practical to get a publicly trusted
  212. certificate for an iki domain.)</span></div></summary><link href=""></link><id></id><updated>2016-04-02T12:20:12Z</updated></entry><entry><title type="xhtml"><div xmlns="">-webkit-HTML5</div></title><summary type="xhtml"><div xmlns="">Apple took some of their Safari Technology Demos from their
  213. developer site and published them at <a href=""></a>
  214. as an “HTML5 Showcase”. <a href="">Christopher
  215. Blizzard's blog post</a> about the subject says almost everything I'd
  216. have to say, so please read Blizzard's post. I'm posting just my
  217. diffs here.</div></summary><link href=""></link><id></id><updated>2015-07-14T11:26:36Z</updated></entry><entry><title type="xhtml"><div xmlns="">Lists in Attribute Values</div></title><summary type="xhtml"><div xmlns="">Whitespace-separation is good.</div></summary><link href=""></link><id></id><updated>2015-07-14T11:25:29Z</updated></entry><entry><title type="xhtml"><div xmlns="">The Sad Story of PNG Gamma “Correction”</div></title><summary type="xhtml"><div xmlns="">Why you might not want to use PNG images when you want image colors and CSS colors to match.</div></summary><link href=""></link><id></id><updated>2015-07-14T11:23:23Z</updated></entry><entry><title type="xhtml"><div xmlns="">If You Want Software Freedom on Phones, You Should Work on Firefox OS, Custom Hardware and Web App Self-Hostablility</div></title><summary type="xhtml"><div xmlns="">To achieve full-stack Software Freedom on mobile phones, I think it makes sense to focus on Firefox OS, commission custom hardware and develop self-hostable Free Software Web apps and an easy deployment platform for them.</div></summary><link href=""></link><id></id><updated>2015-01-24T10:04:16Z</updated></entry><entry><title type="xhtml"><div xmlns="">Character Encoding Menu in 2014</div></title><summary type="xhtml"><div xmlns="">This post is about a UI feature that I wish no one would have to use. Happily, it is indeed <i>almost</i> unused. Still, I made it more usable in the case when it <i>is</i> used. (The change was more driven by code removal than usability, though.)</div></summary><link href=""></link><id></id><updated>2014-12-05T10:22:46Z</updated></entry><entry><title type="xhtml"><div xmlns="">HTML5 Parser Improvements</div></title><summary type="xhtml"><div xmlns="">As <a href="test-html5-parsing/">mentioned</a> <a href="speculative-html5-parsing/">earlier</a>, there is an ongoing project for replacing Gecko’s old HTML parser with an <a href="">HTML5</a> parser. Significant improvements have landed lately, so if you’ve previously tried the HTML5 parser and turned it off due to crashiness or Web compatibility issues, now is a good time to turn it back on.</div></summary><link href=""></link><id></id><updated>2014-11-21T09:44:53Z</updated></entry><entry><title type="xhtml"><div xmlns="">ARIA in HTML5 Integration: Document Conformance (Draft, Take Two)</div></title><summary type="xhtml"><div xmlns="">Now a runnable suggestion.</div></summary><link href=""></link><id></id><updated>2014-11-21T09:37:07Z</updated></entry><entry><title type="xhtml"><div xmlns=""> and Pre-Existing Communities</div></title><summary type="xhtml"><div xmlns="">I have been reading tweets and blog posts expressing various
  218. levels of disappointment and unhappiness about not using
  219. RDFa, not using Microformats or not having been developed in the open
  220. with the community. Since other people’s perspectives differ from
  221. mine, I feel <a href="">compelled</a> to write
  222. down my take.</div></summary><link href=""></link><id></id><updated>2014-11-21T09:34:49Z</updated></entry><entry><title type="xhtml"><div xmlns="">Lowering memory requirements by replacing Schematron</div></title><summary type="xhtml"><div xmlns="">For long time, <a href="thesis/html5-conformance-checker#opt-schematron">I’ve said</a> is that the Schematron schema in the <a href="">HTML5 facet of</a> was merely a rapid prototype that should be replaced with custom Java code.</div></summary><link href=""></link><id></id><updated>2014-11-21T09:17:14Z</updated></entry><entry><title type="xhtml"><div xmlns="">HTML5 Parsing in Gecko: A Build</div></title><summary type="xhtml"><div xmlns="">The effort of putting an <a href="">HTML5
  223. parser</a> inside Gecko takes a step out of the vaporware land.</div></summary><link href=""></link><id></id><updated>2014-11-21T09:16:00Z</updated></entry><entry><title type="xhtml"><div xmlns="">Introducing SAX Tree</div></title><summary type="xhtml"><div xmlns="">I chose to write yet another XML tree package.</div></summary><link href=""></link><id></id><updated>2014-11-21T09:13:33Z</updated></entry><entry><title type="xhtml"><div xmlns="">NVDL Support in</div></title><summary type="xhtml"><div xmlns="">I enabled NVDL today.</div></summary><link href=""></link><id></id><updated>2014-11-21T09:11:12Z</updated></entry><entry><title type="xhtml"><div xmlns="">HOWTO Avoid Being Called a Bozo When Producing XML</div></title><summary type="xhtml"><div xmlns="">Dos and don’ts about producing XML programmatically.</div></summary><link href=""></link><id></id><updated>2014-11-21T09:08:37Z</updated></entry><entry><title type="xhtml"><div xmlns="">An Unofficial Q&amp;A about the Discontinuation of the XHTML2 WG</div></title><summary type="xhtml"><div xmlns="">Many of the comments on Zeldman’s
  224. post indicate that there are people who are badly misinformed about
  225. the matters surrounding this announcement. To help remedy that,
  226. here’s some quick Q&amp;A for getting informed.</div></summary><link href=""></link><id></id><updated>2014-11-21T09:03:57Z</updated></entry><entry><title type="xhtml"><div xmlns="">Thoughts on HTML5 Becoming a W3C Recommendation</div></title><summary type="xhtml"><div xmlns="">Since I’ve participated in the development of HTML5 for a decade now (since before it was commonly called “HTML5”), I’ve been asked for my thoughts about HTML5 becoming a W3C Recommendation. Hence, I figured I’d post something here.</div></summary><link href=""></link><id></id><updated>2014-10-26T19:45:55Z</updated></entry><entry><title type="xhtml"><div xmlns="">Four Finnish Banks Training Users to Give Banking Credentials to Another Site</div></title><summary type="xhtml"><div xmlns="">A person who turns to me for technical advice was logging in to government service using banking for a bank called Handelsbanken. However, the page that was asking for the Handelsbanken login credentials was not served from <code>https://*</code>!  After investigating what was going on, I decided to review how other banks  in Finland handle this. Here are my findings.</div></summary><link href=""></link><id></id><updated>2013-12-16T06:55:31Z</updated></entry><entry><title type="xhtml"><div xmlns="">Unimpressed by Leopard</div></title><summary type="xhtml"><div xmlns="">Sadly, Leopard is not a clear improvement over Tiger.</div></summary><link href=""></link><id></id><updated>2013-11-23T14:13:19Z</updated></entry><entry><title type="xhtml"><div xmlns="">Sergeant Semantics</div></title><summary type="xhtml"><div xmlns="">So the W3C launched a <a href="">logo for HTML5</a>. And not just for <a href="">HTML5-the-spec</a> but <a href="">for HTML5-the-buzzword</a>. Regardless of the logo itself or what it stands for, I find the choice of the ancillary visual elements weird.</div></summary><link href=""></link><id></id><updated>2013-11-23T14:11:28Z</updated></entry><entry><title type="xhtml"><div xmlns="">The Content Sink Inheritance Diagram – 2006-06-30</div></title><summary type="xhtml"><div xmlns="">I have discovered that my <a href="../content-sink/">previous diagram</a> showed only a part of the inheritance graph below <code>nsIContentSink</code>. There is more.</div></summary><link href=""></link><id></id><updated>2013-11-23T14:08:21Z</updated></entry><entry><title type="xhtml"><div xmlns="">An HTML5 Conformance Checker</div></title><summary type="xhtml"><div xmlns="">My master’s thesis</div></summary><link href=""></link><id></id><updated>2013-10-20T15:09:40Z</updated></entry><entry><title type="xhtml"><div xmlns="">What is EME?</div></title><summary type="xhtml"><div xmlns="">It was suggested at the Mozilla Summit that there isn’t good information around about what <a href="">Encrypted Media Extensions</a> (EME) actually is. Since I’m on the HTML working group and have been reading the email threads about EME there, I thought that I could provide an introduction that explains things that may not be apparent from the specification itself.</div></summary><link href=""></link><id></id><updated>2013-10-16T13:47:00Z</updated></entry><entry><title type="xhtml"><div xmlns="">About Points and Pixels as Units</div></title><summary type="xhtml"><div xmlns="">A document about points being often mistakenly though as pixel units. Points are not pixel units. Defining the font size in points on Web pages is considered harmful. <strong>This document needs to be updated.</strong></div></summary><link href=""></link><id></id><updated>2012-10-02T12:56:58Z</updated></entry><entry><title type="xhtml"><div xmlns="">The Performance Cost of the HTML Tree Builder</div></title><summary type="xhtml"><div xmlns="">I’ve been thinking about the performance gap between the
  227. HTML Parser and Xerces. What can be attributed to the
  228. “extra fix-ups” that an HTML parser has to do and what can be
  229. attributed to my code being worse than the Xerces code?</div></summary><link href=""></link><id></id><updated>2012-09-17T12:24:57Z</updated></entry><entry><title type="xhtml"><div xmlns="">Social Media Impression Management</div></title><summary type="xhtml"><div xmlns="">I asked if they had researched the
  230. image formation of social media sites. They hadn’t.</div></summary><link href=""></link><id></id><updated>2012-09-17T12:24:26Z</updated></entry><entry><title type="xhtml"><div xmlns="">The <code>spacer</code> Element Is Gone</div></title><summary type="xhtml"><div xmlns="">Today, I landed a <a href="">patch</a>
  231. that made the HTML5 parser in Gecko unaware of the HTML <code>spacer</code>
  232. element.</div></summary><link href=""></link><id></id><updated>2012-09-17T12:22:30Z</updated></entry><entry><title type="xhtml"><div xmlns="">Openmind 2006</div></title><summary type="xhtml"><div xmlns="">I attended <a href="">Openmind</a> 2006
  233. last week. Here are some notes.</div></summary><link href=""></link><id></id><updated>2012-09-17T12:19:16Z</updated></entry><entry><title type="xhtml"><div xmlns="">Performance Mistake</div></title><summary type="xhtml"><div xmlns="">In the spirit of documenting one’s mistakes…</div></summary><link href=""></link><id></id><updated>2012-09-17T12:17:14Z</updated></entry><entry><title type="xhtml"><div xmlns="">XHTML and Mobile Devices</div></title><summary type="xhtml"><div xmlns=""><a href="">Simon
  234. Pieters’ mobile XHTML test results</a> need more publicity.</div></summary><link href=""></link><id></id><updated>2012-09-17T12:16:32Z</updated></entry><entry><title type="xhtml"><div xmlns="">WebM-Enabled Browser Usage Share Exceeds H.264-Enabled Browser Usage Share on Desktop (in StatCounter Numbers)</div></title><summary type="xhtml"><div xmlns="">Looking at StatCounter stats, it occurred to me that they might not match the common narrative about H.264 market share. I decide to run some numbers using StatCounter stats.</div></summary><link href=""></link><id></id><updated>2012-09-17T12:15:57Z</updated></entry><entry><title type="xhtml"><div xmlns="">HTML5 Parser-Based View Source Syntax Highlighting</div></title><summary type="xhtml"><div xmlns="">A new implementation of the View Source HTML and XML syntax highlighting has landed in Firefox.</div></summary><link href=""></link><id></id><updated>2012-03-14T16:10:01Z</updated></entry><entry><title type="xhtml"><div xmlns="">Vendor Prefixes Are Hurting the Web</div></title><summary type="xhtml"><div xmlns="">I think vendor prefixes are hurting the Web. I think we (people developing browsers and Web standards) should stop hurting the Web.</div></summary><link href=""></link><id></id><updated>2012-02-10T13:15:55Z</updated></entry><entry><title type="xhtml"><div xmlns=""><code>Accept-Charset</code> Is No More</div></title><summary type="xhtml"><div xmlns="">Now that Firefox 10 has been released, <del>none of the major browsers send</del> <ins>only Chrome sends</ins> the <code>Accept-Charset</code> HTTP header.</div></summary><link href=""></link><id></id><updated>2012-02-07T06:56:01Z</updated></entry><entry><title type="xhtml"><div xmlns="">Dualroids</div></title><summary type="xhtml"><div xmlns="">A two-player asteroid shooting network game written in Java.</div></summary><link href=""></link><id></id><updated>2011-12-22T13:27:39Z</updated></entry><entry><title type="xhtml"><div xmlns="">Writing Structural Stylable Documents in Mozilla Editor</div></title><summary type="xhtml"><div xmlns="">The Mozilla Editor is designed around HTML 4 Transitional. If special steps aren’t taken, it is easy to produce presentational documents that lack stylable structure. This document describes some basic good authoring practices for the purpose of writing structural and stylable documents.</div></summary><link href=""></link><id></id><updated>2011-12-22T13:22:32Z</updated></entry><entry><title type="xhtml"><div xmlns="">ISO-8859-15 on haitallinen</div></title><summary type="xhtml"><div xmlns="">UTF-8 is the way to go. (In Finnish.)</div></summary><link href=""></link><id></id><updated>2011-12-22T13:18:09Z</updated></entry><entry><title type="xhtml"><div xmlns="">Hourglass</div></title><summary type="xhtml"><div xmlns="">Yet another ray tracing gallery page.</div></summary><link href=""></link><id></id><updated>2011-12-22T13:16:08Z</updated></entry><entry><title type="xhtml"><div xmlns="">The Scientific Method According to Hixie</div></title><summary type="xhtml"><div xmlns="">Quote of the week from the topic of #developers on</div></summary><link href=""></link><id></id><updated>2011-12-22T12:57:52Z</updated></entry><entry><title type="xhtml"><div xmlns="">Maemo Source Code</div></title><summary type="xhtml"><div xmlns="">To save others the trouble of requesting the source, here are the contents of the package called “2.2006.39-14-srcs”.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:57:07Z</updated></entry><entry><title type="xhtml"><div xmlns="">Karpelan lukkovertaus ontuu</div></title><summary type="xhtml"><div xmlns="">Anti-circumvention legislation does not make sense, and it is fallacious to compare circumventing DRM to breaking into an apartment. (In Finnish)</div></summary><link href=""></link><id></id><updated>2011-12-22T12:56:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Digitaalisesta arkistoinnista</div></title><summary type="xhtml"><div xmlns="">Documents about archiving digital documents (in Finnish)</div></summary><link href=""></link><id></id><updated>2011-12-22T12:51:35Z</updated></entry><entry><title type="xhtml"><div xmlns="">ARIA in HTML5 Integration: Document Conformance (Draft)</div></title><summary type="xhtml"><div xmlns="">This is not a spec and has not been endorsed by anyone.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:50:37Z</updated></entry><entry><title type="xhtml"><div xmlns="">XHTML—What’s the Point? (Draft, incomplete)</div></title><summary type="xhtml"><div xmlns="">This document is incomplete, but I put it on the Web in order to avoid retyping the same thing over and over again in newsgroup discussions.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Mac OS X Browser Comparison</div></title><summary type="xhtml"><div xmlns="">This document is a rough yes/no feature comparison of the Web browsers that run natively on Mac OS X. It does not cover browsers that run on the Classic VM or require an implementation of the X11 windowing system. <strong>Severely out of date. For historical reference only!</strong></div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">HOWTO Spot a Wannabe Web Standards Advocate</div></title><summary type="xhtml"><div xmlns="">I have seen this too often. (<a href="wannabe/fr/">Aussi disponible en français</a>;
  235. <a href="wannabe/de/">Auch vorhanden auf Deutsch</a>; <a href="wannabe/pl/">jest dostępny po polsku</a>)</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">An Idea About Intermediate Language Trees and Web UI Generation</div></title><summary type="xhtml"><div xmlns="">An idea about Web UI generation I had when I was studying compiler technology.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Thoughts on Using SSL/TLS Certificates as the Solution to Phishing</div></title><summary type="xhtml"><div xmlns="">Comments on <a href=""><cite>Staying Safe From
  236. Phishing With Firefox</cite></a>.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Bureaucracy Meets the Web</div></title><summary type="xhtml"><div xmlns="">Three things from the past week happened to be related to bureaucracy and the Web…</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Europe Day</div></title><summary type="xhtml"><div xmlns="">Tuesday 2006-05-09 was the Europe Day. I traveled to Tampere for a show debate.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">HOWTO Establish a 100% Literacy Rate</div></title><summary type="xhtml"><div xmlns="">This is one of my favorite pieces of West
  237. Wing script writing.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">What to Do with All These Photos?</div></title><summary type="xhtml"><div xmlns="">I have a lot of photos that aren’t shared properly, which makes
  238. them less useful than they could be. Considering that it has been
  239. possible to publish photos on the Web for over a decade, I find it
  240. interesting and annoying how many unsolved problems there still are.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Charmod Norm Checking</div></title><summary type="xhtml"><div xmlns=""><a href="">Charmod Norm</a> is
  241. still in the Working Draft state, but if it were to become a
  242. normative part of (X)HTML5, it would belong to the area of the
  243. conformance checking service that I am working on now, so I
  244. prototyped Charmod Norm enforcement as well.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Validator Web Service Interface Ideas</div></title><summary type="xhtml"><div xmlns="">I am just writing this down so I don’t forget it.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">DTDs Don’t Work on the Web</div></title><summary type="xhtml"><div xmlns="">Last weekend, Slashdot <a href="">linked</a>
  245. to an <a href="">article</a>
  246. that observed that Netscape had removed the <a href="">RSS
  247. 0.91 DTD</a>. I hope this episode has a silver
  248. lining and helps in making people realize that DTDs don’t belong on
  249. the Web.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">EFFI’s Day in Court</div></title><summary type="xhtml"><div xmlns=""><a href="bureaucracy-meets-the-web/">As
  250. mentioned earlier</a>, <a href="">Electronic
  251. Frontier Finland</a> (EFFI) was suspected of illegal fundraising. The
  252. case was tried today. I went to the court house to observe the
  253. proceedings.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Speaking at XTech</div></title><summary type="xhtml"><div xmlns="">I’ll be speaking at <a href="">XTech</a>.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Security Quote of the Day</div></title><summary type="xhtml"><div xmlns="">Cluelessness and incompetence of epic proportions.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Not Part of the Technology Stack</div></title><summary type="xhtml"><div xmlns="">At XTech 2006, I got a W3C brochure entitled <cite>Leading the Web
  254. to its Full Potential</cite> that had a diagram visualizing the W3C
  255. technology stack(s).</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Out of Context</div></title><summary type="xhtml"><div xmlns="">Last week on W3C mailing lists.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">The <code>html5.parser.enable</code> Pref is Gone</div></title><summary type="xhtml"><div xmlns="">Just a quick note to Firefox nightly testers and bug triagers: I pushed
  256. a patch that makes Firefox no longer honor the <code>html5.parser.enable</code> pref.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Miscellaneous Java Code</div></title><summary type="xhtml"><div xmlns="">Utility code.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Autozoom Extension for Firefox®</div></title><summary type="xhtml"><div xmlns="">When Autozoom is activated, the current document is analyzed for the
  257. dominant font size and the view is zoomed by the factor that makes
  258. the dominant size match your font size preference.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Älä käytä Creative Commons 1.0 -lisenssejä
  259. – käytä 2.5-sarjaa</div></title><summary type="xhtml"><div xmlns="">The Finland version of the Creative Commons
  260. suite of licenses is still at 1.0. The 1.0 series of CC licenses has
  261. three serious known bugs (in Finnish)</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Tag Soup: How Mac IE 5 and Safari handle &lt;x&gt; &lt;y&gt; &lt;/x&gt;
  262. &lt;/y&gt;</div></title><summary type="xhtml"><div xmlns="">What happens with the DOM in Safari and Mac IE 5 when the nesting of the markup is broken?</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:18Z</updated></entry><entry><title type="xhtml"><div xmlns="">Mustaa valkoisella</div></title><summary type="xhtml"><div xmlns="">A document request to the Ministry of Education. (In Finnish)</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Is Atom What We Really Need?</div></title><summary type="xhtml"><div xmlns="">Atom (formerly known as Pie, Echo and Necho) has been created as a cleaner and better-defined alternative to RSS 2.0, which is underspecified. But is a reformulated version of RSS 2.0 really what we need?</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">10 Safari 1.0 issues</div></title><summary type="xhtml"><div xmlns="">Hyatt requested lists like this.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Names of Browser Engines</div></title><summary type="xhtml"><div xmlns="">A table of browser names, engine names and script engine names.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Natural Hazards: NA</div></title><summary type="xhtml"><div xmlns="">Thoughts about nuclear power plants in stormy situations.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Who knows prefixed XHTML from a hole in the ground?</div></title><summary type="xhtml"><div xmlns="">Remember to test prefixed XHTML as well.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Aula 2006</div></title><summary type="xhtml"><div xmlns="">Yesterday, I went to listen to the public speeches that were part
  263. of <a href="">Aula 2006 – Movement</a>.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Charmod Checking</div></title><summary type="xhtml"><div xmlns="">Here’s how I have addressed the requirements of Charmod that
  264. apply to content (marked as [C] is Charmod).</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Printing Web Apps 1.0</div></title><summary type="xhtml"><div xmlns="">This is a quick guide for getting a dead-tree version of the Web
  265. Applications 1.0 spec.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns=""> Gets Out of the Java Trap</div></title><summary type="xhtml"><div xmlns="">This week, I upgraded the operating system on the <a href="">Xen</a>
  266. virtual machine that powers <code><a href=""></a></code>
  267. and <code><a href=""></a></code>
  268. to <a href="">Ubuntu</a> <a href="">Hardy</a>.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Browser Technology Stack</div></title><summary type="xhtml"><div xmlns="">I took a quick attempt at drawing a stack for Web browsing.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Thou Shalt Not Spec a Feature that Might Inadvertently Compete with RDF when Used Contrary to How It Is Designed to Be Used</div></title><summary type="xhtml"><div xmlns="">From the minutes of the TAG meeting on November 2<sup>nd</sup> 2009.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">SVG and MathML in <code>text/html</code> in Firefox and</div></title><summary type="xhtml"><div xmlns="">I enabled SVG and MathML-related stuff recently on both
  269. mozilla-central and on</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">What Could Microsoft Do about IE6?</div></title><summary type="xhtml"><div xmlns="">Microsoft has started a <a href="">campaign
  270. to drive down the market share of IE6</a>. Getting rid of IE6 is a
  271. righteous goal. Microsoft’s proposed solution isn’t righteous, though.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">UTF-8 to Code Point Array Converter in PHP</div></title><summary type="xhtml"><div xmlns="">This package contains a PHP include file which provides two functions for converting between UTF-8 strings and arrays of ints representing Unicode code points.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">HTML Syntax Checker in PHP</div></title><summary type="xhtml"><div xmlns="">An HTML linter written in PHP.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">SaxCompiler</div></title><summary type="xhtml"><div xmlns="">SaxCompiler is a tool for recording SAX <a href=""><code>ContentHandler</code></a>
  272. events as Java code that can play back the events without parsing
  273. XML.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Photo Group Feed</div></title><summary type="xhtml"><div xmlns=""><a href="">Flickr</a> doesn’t provide feeds
  274. for private groups. It doesn’t provide feeds for comments on photos
  275. in a group, either. It is reasonable to want such feeds, so here’s
  276. a script that generates them on your HTTP server.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Photo and <em>Metadata</em> Backup for Flickr</div></title><summary type="xhtml"><div xmlns="">This is a photo and <em>metadata</em> backup utility for Flickr
  277. written as a <em>self-contained</em> Java command line tool. The
  278. metadata is written is an XML file whose format is an aggregation of
  279. the response data from the Flickr API.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Thoughts About a Print <abbr title="User Interface">UI</abbr> for Mozilla</div></title><summary type="xhtml"><div xmlns="">Some thoughts about printing from a Web browser.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:17Z</updated></entry><entry><title type="xhtml"><div xmlns="">Oops! I broke MathML – 2006-07-05</div></title><summary type="xhtml"><div xmlns="">Or, well, one could argue that it was already broken but my
  280. content sink changes and a suitably crafted test case just exposed
  281. the layout issues that were already there.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:16Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 35</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 35.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:16Z</updated></entry><entry><title type="xhtml"><div xmlns="">Natural Hazards Again</div></title><summary type="xhtml"><div xmlns="">Looking across the street, I can see that there’s something
  282. extra in the air between where I sit and the house on the other side
  283. of the street.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:16Z</updated></entry><entry><title type="xhtml"><div xmlns="">CMS Stuff</div></title><summary type="xhtml"><div xmlns="">Papers and code related to a CMS project.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:16Z</updated></entry><entry><title type="xhtml"><div xmlns="">Assembling Web Pages Using Document Trees</div></title><summary type="xhtml"><div xmlns="">A paper about a template engine that operates on XML document trees. (<a href="cms/">Source code available.</a>)</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:16Z</updated></entry><entry><title type="xhtml"><div xmlns="">Kesäkoodi Starting – 2006-05-23</div></title><summary type="xhtml"><div xmlns="">So what’s this <a href="">Kesäkoodi</a>
  284. thing about?</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">DOM Traversal Performance – 2006-05-26</div></title><summary type="xhtml"><div xmlns="">But there is a problem. My JavaScript implementation is slow.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 21</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 21.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 22</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 22.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Planning the XML Content Sink Incrementalization Work – 2006-06-10</div></title><summary type="xhtml"><div xmlns="">I’ve been researching the problem area of <a href="">bug
  285. 18333</a>.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 23</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 23.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 24</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 24.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 25</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 25.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Eclipse CDT – 2006-06-27</div></title><summary type="xhtml"><div xmlns="">After working in TextWrangler (and a bit in XCode) for a couple of
  286. weeks, I really started to miss Eclipse. </div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 26</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 26.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Builds! – 2006-07-06</div></title><summary type="xhtml"><div xmlns="">Now there is something to test. I am providing builds with my
  287. preliminary patches for four target platforms.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Builds, Take Two – 2006-07-07</div></title><summary type="xhtml"><div xmlns="">The <a href="">builds</a>
  288. have been respun with fixes for interrupting Expat properly.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 27</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 27.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 30</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 30.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 31</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 31.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 32</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 32.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 33</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 33.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Speaking Gig – 2006-08-28</div></title><summary type="xhtml"><div xmlns="">I have been booked to speak at the Openbyte pre-conference of the
  289. <a href="">Openmind 2006</a> event in Tampere
  290. Hall on 2006-10-24. </div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Week 34</div></title><summary type="xhtml"><div xmlns="">The weekly report for week 34.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">On Clipboard Formats – 2006-09-15</div></title><summary type="xhtml"><div xmlns="">This stuff is so underdocumented that it isn’t even funny. This
  291. document is written so that others might find something when they
  292. search the Web.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Kesäkoodi Wrap-Up – 2006-09-19</div></title><summary type="xhtml"><div xmlns="">The last week of Kesäkoodi stretched to two sparse weeks.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:15Z</updated></entry><entry><title type="xhtml"><div xmlns="">Outlining the “Ultimate” Blogging Server</div></title><summary type="xhtml"><div xmlns="">I’ve been thinking what a really
  293. good blogging system or a news site content management system would
  294. be like. Here’s my attempt at outlining the “ultimate”
  295. blogging server.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:14Z</updated></entry><entry><title type="xhtml"><div xmlns="">How Not to Advertise an Election Candidate</div></title><summary type="xhtml"><div xmlns="">On Sunday and Monday elections were held at the local congregation in order to select a new vicar. I didn’t like the campaigning.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:14Z</updated></entry><entry><title type="xhtml"><div xmlns="">Unused Icons</div></title><summary type="xhtml"><div xmlns="">Unhelpful Microsoft wizardiness</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:14Z</updated></entry><entry><title type="xhtml"><div xmlns="">Comedy is the Real News</div></title><summary type="xhtml"><div xmlns="">An observation I made last year when watching TV in the U.S.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:14Z</updated></entry><entry><title type="xhtml"><div xmlns="">Need a Taxi at a Taxi Station? You Lose!</div></title><summary type="xhtml"><div xmlns="">A taxi station is the worst place to be in Helsinki when you need a taxi (unless there’s one already there).</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:14Z</updated></entry><entry><title type="xhtml"><div xmlns="">Reality Distortion Fields</div></title><summary type="xhtml"><div xmlns="">Where Joel Spolsky’s analysis of the IE version targeting issue goes wrong.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:14Z</updated></entry><entry><title type="xhtml"><div xmlns="">XTech 2006</div></title><summary type="xhtml"><div xmlns="">I went to the <a href="">XTech 2006</a>
  296. conference last week.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:13Z</updated></entry><entry><title type="xhtml"><div xmlns="">Built-in Accessibility Roles in HTML5</div></title><summary type="xhtml"><div xmlns="">A quick table of <a href="">WAI-ARIA</a> roles and what <a href="">HTML 5</a> provides natively for each role as of July 2007.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:13Z</updated></entry><entry><title type="xhtml"><div xmlns=""> Downtime</div></title><summary type="xhtml"><div xmlns=""> was down last week.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:13Z</updated></entry><entry><title type="xhtml"><div xmlns="">I Want an Affordable Snapshot-Saving Crypto-Backupping RAID NAS</div></title><summary type="xhtml"><div xmlns="">This week, I lost over one potential work day to HFS+. And it
  297. wasn’t the first time I’ve lost time to HFS+. I want to
  298. make arrangements to avoid losing time to HFS+ in the future.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:13Z</updated></entry><entry><title type="xhtml"><div xmlns="">SVG Filter Effects in HTML without External References</div></title><summary type="xhtml"><div xmlns="">The project of putting an <a href="html5-gecko-build/">HTML5
  299. parser inside Gecko</a> has progressed. I merged in code from the
  300. trunk in order to experiment with cool new stuff such as <a href="">SVG
  301. filter effects for HTML</a>.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:13Z</updated></entry><entry><title type="xhtml"><div xmlns="">HTML5 Script Execution Changes in Firefox 4 Beta 7</div></title><summary type="xhtml"><div xmlns="">In Firefox 4 beta 7, script execution changed to be more
  302. HTML5-compliant than before. This means that in some cases sites that
  303. sniff for Firefox or Gecko may break. <i>If your site/app works
  304. cross-browser without browser sniffing, you don’t need to read
  305. further.</i> (However, if you triage bugs on, you might still want to read on.)</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:13Z</updated></entry><entry><title type="xhtml"><div xmlns="">Vihreiden tekijänoikeuslinja ja teosten tekijöiden eläketurva</div></title><summary type="xhtml"><div xmlns="">Vihreät julkaisivat äskettäin <a href="">tekijänoikeuslinjapaperin</a>.
  306. On positiivista, että puolue kiinnittää huomiota aihepiiriin niin
  307. paljon, että siitä julkaistaan erillinen linjapaperi. Minua
  308. kuitenkin häiritsee paperissa suhtautuminen teosten tekijöiden
  309. eläketurvaan. <span>(<i>English summary:</i> I’m unhappy that the newly
  310. released copyright policy paper of the Finnish Green Party suggests
  311. that authors of copyrighted works should get royalties for the
  312. commercial use of the works they have created long after the creation
  313. of the work in order to get money in the pensioner age.)</span></div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:13Z</updated></entry><entry><title type="xhtml"><div xmlns="">Windows 8 App Support Matrix</div></title><summary type="xhtml"><div xmlns="">Over the last few days, there’s been quite a bit of speculation about whether Windows 8 on ARM will ship the desktop environment and allow recompiled code written to the legacy Win32 APIs run.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:13Z</updated></entry><entry><title type="xhtml"><div xmlns="">Regular Expressions, Computer Science and Practice</div></title><summary type="xhtml"><div xmlns="">Disregard of computer science can crash your app.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:12Z</updated></entry><entry><title type="xhtml"><div xmlns="">Almost Precedent</div></title><summary type="xhtml"><div xmlns="">Why the Gecko Almost Standards Mode shouldn’t be used to justify IE engine version targeting.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:12Z</updated></entry><entry><title type="xhtml"><div xmlns="">Access Blocked</div></title><summary type="xhtml"><div xmlns="">I followed a link from a message to a spec in the <a href="">/TR/</a>
  314. space on <a href=""></a>.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:12Z</updated></entry><entry><title type="xhtml"><div xmlns="">Extended Uncertainty</div></title><summary type="xhtml"><div xmlns="">I use <a href="">myvidoop</a> as my OpenID
  315. delegate. They used to have an <a href="">EV
  316. certificate</a>. Yesterday, they didn’t.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:12Z</updated></entry><entry><title type="xhtml"><div xmlns="">View Originl Bookmarklet</div></title><summary type="xhtml"><div xmlns="">It takes way too many clicks to get from a Flickr photo page to the original JPEG file. I wrote a bookmarklet that does it with just one click.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:12Z</updated></entry><entry><title type="xhtml"><div xmlns="">Things to Take into Account When Moving to Standards-Compliant HTML and CSS Authoring</div></title><summary type="xhtml"><div xmlns="">This is a mixed collection of a few issues that are worth taking into account when writing Web pages according to the W3C Recommendations.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:11Z</updated></entry><entry><title type="xhtml"><div xmlns="">Makasiinit</div></title><summary type="xhtml"><div xmlns="">So the <span>Makasiinit</span> burned today.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:11Z</updated></entry><entry><title type="xhtml"><div xmlns="">Imitating Reflective Caustics in POV-Ray</div></title><summary type="xhtml"><div xmlns="">A tutorial on imitating reflective caustics in the official distribution of POV-Ray</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">RFC 2119 Key Words in Management Textbooks</div></title><summary type="xhtml"><div xmlns="">Just a random observation about the vocabulary of management textbooks.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">Atom Feed</div></title><summary type="xhtml"><div xmlns="">I now have an Atom 1.0 feed.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">ISO Opens Up a Little</div></title><summary type="xhtml"><div xmlns="">It turns out that ISO now has some standards on the Web. That’s
  317. good, but putting all of them there in a Web-friendly format would be
  318. even better.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">Table Integrity Checker</div></title><summary type="xhtml"><div xmlns="">The first non-schema checker prototype is a table integrity checker.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">Three Styles</div></title><summary type="xhtml"><div xmlns="">Well, four styles if you count the original.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">Thesis Defense on XForms</div></title><summary type="xhtml"><div xmlns="">On Friday 2007-01-12, I went to listen to the thesis defense of
  319. <a href="">Mikko Honkala</a>.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">IM Logs</div></title><summary type="xhtml"><div xmlns="">Quote of the week.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">Browser Sniffing History in the Chrome UA String</div></title><summary type="xhtml"><div xmlns=""><a href="">Google Chrome</a> has the following cruft in the HTTP <code>User-Agent</code> header.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">Speculative HTML5 Parsing Landed</div></title><summary type="xhtml"><div xmlns="">As mentioned earlier, there is an ongoing project for replacing Gecko’s old HTML parser with an HTML5 parser. Today, a significant milestone landed: off-the-main-thread speculative HTML5 parsing.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">The Old HTML Fragment Parser is Gone</div></title><summary type="xhtml"><div xmlns="">Just a quick note to Firefox nightly testers and bug triagers.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:10Z</updated></entry><entry><title type="xhtml"><div xmlns="">Big Brother EU</div></title><summary type="xhtml"><div xmlns="">On Tuesday 2005-11-22, I went to a public discussion event titled “Big Brother EU”.</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:09Z</updated></entry><entry><title type="xhtml"><div xmlns="">Can Anti-DRM Clauses in Content Licenses be Free?</div></title><summary type="xhtml"><div xmlns="">Are anti-DRM clauses a good idea? Are the current clauses merely badly drafted and an anti-DRM clause in general could be free? Or is any anti-DRM clause inherently non-free?</div></summary><link href=""></link><id></id><updated>2011-12-22T12:43:09Z</updated></entry><entry><title type="xhtml"><div xmlns="">An Introduction to Unicode</div></title><summary type="xhtml"><div xmlns="">PDF slides about Unicode.</div></summary><link href=""></link><id></id><updated>2005-07-27T17:07:37Z</updated></entry><entry><title type="xhtml"><div xmlns="">W3C DOM -esittely</div></title><summary type="xhtml"><div xmlns="">An introduction to the W3C DOM (in Finnish).</div></summary><link href=""></link><id></id><updated>2002-06-28T17:59:02Z</updated></entry><entry><title type="xhtml"><div xmlns="">Testing HTML5 Parsing</div></title><summary type="xhtml"><div xmlns="">I have been using a browser with an HTML5 parser for both my work
  320. and leisure browsing for a bit over a week now. I think in-browser
  321. HTML5 parsing is now ready to be tested by others as well.</div></summary><link href=""></link><id></id><updated>1970-01-01T00:00:00Z</updated></entry><entry><title type="xhtml"><div xmlns="">Help Test HTML5 Parsing in Gecko</div></title><summary type="xhtml"><div xmlns="">The HTML5 parsing algorithm is meant to demystify HTML parsing and
  322. make it uniform across implementations in a backwards-compatible way.
  323. The algorithm has had “in the lab” testing, but so far it hasn’t
  324. been tested inside a browser by a large number of people. <em>You</em>
  325. can help change that now!</div></summary><link href=""></link><id></id><updated>1970-01-01T00:00:00Z</updated></entry><entry><title type="xhtml"><div xmlns=""></div></title><summary type="xhtml"><div xmlns="">Validation 2.0.</div></summary><link href=""></link><id></id><updated>1970-01-01T00:00:00Z</updated></entry></feed>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid Atom 1.0" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda