2013-09-07T16:35:48ZThis rationale is written in defence of a technically sound and reasoned approach to dealing with the Content-Language pragma directive issue within the HTML Working Group. This rationale is written in defence of a technically sound and reasoned approach to dealing with the Content-Language pragma directive issue within the HTML Working Group. ISSUE-88 is a request for permitting multiple language tags to be used as the value of the Content-Language pragma directive. This article argues that this change proposal is unsupported by logic or reason, and resolving in its favour will have an overall negative effect for both authors and implementers. Summary This summary is presented as an overview of the arguments presented throughout this article. The supporting rationale in favour of these arguments is presented later. The change proposal is based upon the false premise that the Content-Language HTTP header and pragma directive are equivalent. The HTTP header is used to declare the languages of the intended audience; the only defined function of the pragma directive is to be used as a fallback language in the absence of the lang attribute. The use of the pragma directive as part of server configuration is out of scope of HTML. Specific server side implementation choices need not affect the conformance definition. The pragma directive only fulfils its purpose of providing a fallback language when one language tag is specified. Multiple language tags are, by definition of the implementation requirements, not useful or beneficial. There are no reasons given for why it is beneficial to leave the pragma directive in the document when the lang attribute is present on the root element. Failing to offer a warning about its presence in all cases would continue to mislead the author about its legitimacy. The inconsistency of when warnings are issued would be confusing to authors. It is better to offer a consistent warning about the presence of a redundant feature. The defined effect, per the implementation requirements, of declaring multiple language tags is identical to that of omitting the pragma directive entirely. No reasons are given to explain why declaring multiple language tags is useful. The syntax of the Content-Language HTTP header field is not affected by the definition of the distinct Content-Language pragma directive in HTML, with which it only shares a common name and does not share significant functionality. It is reasonable for this distinct feature to use a distinct conforming syntax that is suitable for its purpose. No reason is given explaining why only emitting the warning under specific circumstances, as opposed to the current specification requirement, would serve better in encouraging authors to use the lang attribute instead. The proposed replacement specification text contains unjustified changes, inconsistencies, unimplementable requirements and is overall inappropriate for use in the specification. The claimed positive benefits effects are unsupported by evidence and, in several cases, blatantly incorrect. In practice, very few authors use multiple language tags in the pragma directive, and doing so is not useful. Restricting the syntax to one language would not have a significant negative impact. Difference Between Content-Language HTTP Header and Pragma Directive This premise of the change proposal is that the Content-Language HTTP header field is functionally equivalent to the Content-Language pragma directive using the meta element. This premise is used to support the idea that that both should share the same syntax and client side processing requirements. However, this premise is demonstrably wrong, and thus the chang[...]
2013-09-07T16:36:00ZToday, Google, in co-operation witt Opera, Mozilla, CoreCodec (Matroska developers) and a range of other companies, have announced at Google I/O 2010 that WebM is the new royalty free video codec for the web. Earlier this year, Google purchased On2, the company that developed of a range of video codecs including VP3, VP6, VP7 and … Continue reading Introducing WebM →Today, Google, in co-operation witt Opera, Mozilla, CoreCodec (Matroska developers) and a range of other companies, have announced at Google I/O 2010 that WebM is the new royalty free video codec for the web. Earlier this year, Google purchased On2, the company that developed of a range of video codecs including VP3, VP6, VP7 and VP8. VP3 is a well known codec that formed the basis of Theora. VP6 is a codec supported by Adobe Flash, VP7 is used by Skype for video conferencing. Their latest offering, VP8, now forms the basis of the new WebM video format. The code for the VP8 codec has been released royalty free under the BSD licence. WebM, which stands for Web Media, is a format based on 3 technologies: Container: A variation of Matroska called WebM. Video codec: VP8. Audio codec: Vorbis. The Container Format Matroska is a widely supported container format, which is able to contain a wide range of codecs, including, among others, h.264, VC-1, Theora, AAC, AC3 and Vorbis. This is due to the high degree of flexibility inherent in the design of Matroska. Matroska itself if based on a binary markup language called EBML, the design of which was inspired by XML. In short, EBML files contain a header that declares the DocType and version information, followed by a tree of elements and data, marked up using a special binary notation. The Matroska specification defines a range of elements, and their binary notation, that can be used for marking up the data in Matroska files. The WebM format is a subset of Matroska, which has been optimised for streaming over HTTP. WebM, which uses the DocType “webm”, can be distinguished from Matroska, which uses the DocType “matroska”. Technically speaking, a valid WebM version 1 file supports a subset of elements from Matroska version 1, and WebM version 2 supports those in addition to some of the additional elements from Matroska version 2. To further optimise WebM for use on the WebM, some additional formatting guidelines are imposed upon WebM files, over and above the Matroska counterpart. These guidelines include plaicing the indexing information at the beginning of the file, and keyframes stored at the beginning of clusters. The WebM container is only permitted to contain the codecs VP8 and Vorbis, and browsers will not support any other codecs within WebM – not even Theora or h.264. Although there are no technical limitations with WebM that inherently prevent such codecs from being used, this was an intentional decision to improve the usability of WebM. The idea being that if you have a player that supports WebM, you can be more confiden that the file will play without having to install additional codecs. This is a problem that has plagued container formats like AVI for years. You can’t easily determine what it contains until you start playing it. Some AVI files may contain DivX, Xvid, h.264 or a wide range of other codecs. Benefits of Matroska Matroska presented some nice benefits over competing container formats, sucha s MP4, commonly used with h.264, or even Ogg, which is supported by Opera, Firefox and Chrome for Theora and Vorbis. Like Ogg, Matroska is publicly specified and available to use freely, unlike, for example, MP4. The main benefit of Matroska over Ogg is that the seeking information can be placed at the beginning, making it significantly easier to seek in a WebM file being transferred over HTTP. When the user tries to seek, if that part of the video hasn’t yet downloaded, then the browser needs to request that [...]
2013-09-07T16:36:58ZA relatively new editor’s draft entitled HTML 5: The Markup Language has been proposed in the HTML working group as an attempt to define the vocabulary and syntax of HTML, without any implementation conformance criteria or associated DOM APIs.A relatively new editor’s draft entitled HTML 5: The Markup Language has been proposed by Mike Smith. This draft is an attempt to define the vocabulary and syntax of HTML, without any implementation conformance criteria or associated DOM APIs. It’s being positioned as a replacement, normative definition of the language over the existing HTML 5 spec, and its proponents claim that it’s better for authors. But don’t be deceived; this draft isn’t what it claims to be, and is not really beneficial for the vast majority of web developers. About the Draft The document itself is largely generated from two primary sources, with some additional explanatory material included manually. It incorporates selected statements and conformance criteria from the spec itself, which is fine. This is a useful technique to help ensure that it and the spec stay relatively in sync with each other. But it also incorporates the RelaxNG schemas and regular expressions that are being developed for the HTML 5 Validator. This is part of the source code from one particular validator implementation, and it’s important to note that this code was not primarily written for human consumption, but rather machine processing. Yet, despite this, it is being pushed as a suitable, human readable method for describing the conforming syntax and element content models of HTML. In a sense, it’s analogous to the DTDs used within the HTML 4.01 specification, except that it’s more difficult to read. From past experience, we know that many web developers were not comfortable reading the DTD syntax, and preferred to check reference guides, tutorials, or ask others on mailing lists or forums to explain things. So the notion that such a document would be useful for the majority of web developers is, frankly, absurd. But don’t just take my word for it. Let’s take a look at some examples of this notation and see for ourselves. This is the regular expression that describes the conforming DOCTYPE syntax: doctype = If that’s not scary enough, how about this which defines the conforming values for the target attribute: browsing-context-or-keyword = ()|([^_].*)|(_[bB][lL][aA][nN][kK])|(_[sS][eE][lL][fF])|(_[pP][aA][rR][eE][nN][tT])|(_[tT][oO][pP]) To be fair, it is accompanied by a plain text list of examples of the four predefined values, but simply looking at the examples alone doesn’t the reader anything about case insensitivity, nor indicate that other custom values are not allowed to begin with an underscore. The only way to deduce that is from the above RegExp. Finally, take a look at the definition of the a element, or any other, and see if you can understand what it means. Personally, I know how the a element is defined in the spec, but even I can’t easily figure out what that schemas are trying to say. The a element’s content model is actually defined as Transparent in the spec, which you can think of as basically meaning that its content model is inherited from the parent element. (This is a slight over simplification of its actual meaning, but we can ignore the subtleties for now.) i.e. When it’s included as a child of an element that only permits phrasing content, that applies to the a element too. But when it’s parent permits flow content, so does the a element. If you were able to decipher that on your own from the proposed draft, then well done. I couldn’t. By now, you may be asking, if this proposal isn’t really suitable for web developers, then who is it suitab[...]
2013-09-07T16:37:09ZGoogle’s new favicon is horrible!
(image) The final icon
According to the Google blog, the icon was based on a submission from André Resende, which I think looks better than the final version. However, I still think both are absolutely horrible.
(image) André Resende’s original submission
As you can see, Google shifted the ‘g’ from the centre to the far left making it look unbalanced. Overall, I find it rather displeasing to the eye. I guess I will have to find some way to either block the icon entirely or make my browser use a custom icon instead.
2013-09-07T16:37:19ZSelectors API has been published as a Last Call for the second time and will proceed to Candidate Recommendation shortly.
Selectors API was again published as a Last Call on 14 November. For anyone who hasn’t heard about this before, this is an API designed for selecting elements in the DOM by querying using Selectors, as used in CSS.
This is expected to be the last round before proceeding to Candidate Recommendation around mid-December. If you have any further comments to make, you have until 12 December to send them in, preferably to firstname.lastname@example.org and to ensure I don’t miss it, please include [selectors-api] in the subject.
2013-09-07T16:37:33ZThe story of how I became so vehemently opposed to religion.The idea of an invisible, omniscient, omnipotent and omnipresent supernatural being, who was supposedly responsible for the creation of the universe, has never really seemed plausible to me. From a young age, barely old enough to actually comprehend the ludicrous notions being taught in scripture, I rejected it and all the mythology that came with it. I couldn’t, and still can’t, understand why people have to resort to explaining the origin of the universe by saying “god did it”, and yet be content with having no explanation of where this so-called “god” came from. It made no sense to me then, and it still makes no sense to me now. My disdain for religion began as a young schoolboy, of no more than about 7 or 8, possibly younger. It’s difficult to be more specific than that. Thankfully, I was never forced into religion by my parents, neither of whom are overly religious themselves. Mum seems quite indifferent to the whole thing and while Dad still attends church every weekend, he rejects fundamentalist dogma and biblical literalism, like any rational person should. Luckily, I attended a public school and so I didn’t have it forced down my throat there either. However, students were still sent to scripture for about half an hour a week, for part of the year, separated into groups by denomination. Unfortuantely, the separation of church and state in Australia isn’t quite as clear cut as it’s supposed to be in the USA, and so some religion is still allowed in public schools. I wasn’t overly happy about that arrangement. I didn’t want to go just to be taught stories I didn’t believe. As far as I know, there was no alternative available for non-believers; or if there was, I don’t know why I wasn’t sent there. So I did what any rebellious kid would do. I acted out in various ways; not always, but frequently enough. Unfortunately, the details of my exploits mostly elude me. It’s hard to remember that far back. But on one occasion that I do remember, we were given some kind of work sheet to fill out, with various questions about the fables being read to us. I remember repeatedly scrawling phrases like “GOD DOES NOT EXIST!!!” and “JESUS WAS NOT THE SON OF GOD!!!” as my answers. I haven’t a clue what the questions were. I then spent the remaining time filling up the rest of the page with exclamation points as my way of emphasising the fact that I didn’t believe any of that nonsense and really didn’t want to be there. Sadly, I can’t recall the response of the minister when he saw it. I’m sure it wasn’t particularly positive. So in a sense, I took The Blasphemy Challenge about a decade and half before it was considered cool, and well before I knew it meant my eternal damnation! But hey, now that I do, I have something to look forward to. That was by no means my only form of protest during school scriptures. Other times were a little more disruptive. But it was around this time that I vowed, when I grew up, I would fight to have all religion abolished from public schools. I still hope that this will happen one day. Anyway, this may seem odd for a kid as young as I was back then to be so vehemently opposed to religious dogma. I certainly knew of no other in my position—at least none of my friends were—and there was no-one else in my life from whom my blasphemous anti-religious sentiments spawned. But the fact is, I was an atheist long before I even knew what the word meant, let alone knew of anyone else who shared my disbelief. To be honest, I believed in Santa Claus and the Easter Bunny longer than I believed in a god. Of course, all of this was well before I knew anything about the scientific explanations for the origin of life, the universe and everything. I knew nothing of the Big Bang Theory, Evolution, nor anything else in between[...]
2013-09-07T16:37:43ZThe internets really is a series of tubes!
Many people didn’t believe Senator Ted Stevens when he said that the Internet was a series of tubes. Well now, thanks to Google, there is proof that he was right! In Google Chrome, if you have it, visit
about:internets. This provides a graphical illustration of the internet which looks very much like a series of tubes to me.
It appears to based upon the Windows 3D Pipes screensaver. It uses the mixed joints, but I’m not sure if it also includes the teapots, like the real screensaver. If you see one, let me know.
2013-09-07T16:38:10ZGoogle Chrome has been announced as Google's new web browser.
The rumours have been going around the web for years about the possibility of the Google browser, with some rather wild speculation about what exactly it would be like. John Rhodes seems to be one of the earliest to float the idea of the Google Client in September 2001, and in August 2004, based on Google’s relationship with Mozilla at the time, Kottke predicted a Mozilla-based Google browser.
In February this year, it was reported that Google had assembled a team to work on on a WebKit based browser, then known as GBrowser. Now just over 7 months later, all the rumours and predictions have finally been realised. Google Blogoscoped announced and leaked a comic book entitled Google Chrome earlier today describing many of the innovative features developed for the new browser. Shortly afterwards, the official Google blog admitted that it was mistakenly released a day early.
It should be noted that the concept also includes a few ideas based on features in other browsers, such as Opera’s Speed Dial, and both Firefox and Opera’s address bar (a.k.a. Awesome bar), called omnibox.
The comic was drawn and created by Scott McCloud and has been released under a Creative Commons by-nc-nd 2.5 licence.
The comic has currently been taken down due to server load , but I have published a copy of the whole comic here for you to see it, if you haven’t already. You can also download a tarball of all the images.
2013-09-07T16:38:31ZInternet Explorer 8 beta 2 released, and demonstrating a solution to run multiple versions of IE simultaneiously.
A few days ago, the 2nd beta of IE8 was released. Although I haven’t had much time to play with it and find out what it does and doesn’t support, I have come across a few bugs with it.
But one of the big problems we still have with IE is the inability to run several versions side by side. The one solution continually offered by Microsoft is the ability to download virtual machines, which are set to expire after a limited amount of time. The problem with this is that you still need a separate virtual machine for each version of IE you want to run, and after they expire, you need to get a new one.
Anyway, I have a found an even better solution. One that lets me run IE6, IE7, IE8b1 and IE8b2 side by side, all within the same copy of Windows XP, which I also have running in a single virtual machine on Mac OS X. I don’t have time to elaborate on the solution now, but I will try to do so over the next few days. For now, here’s a screenshot showing them all running together, with each demonstrating how badly they fail Acid 3.
2013-09-07T16:38:22ZBoagworld is a web design and development podcast based in the UK. In today’s episode, they interview me about HTML5. In it, we discuss the current state of HTML5, some of the new features that are currently, or are being implemented, and what we can expect in the future.
Boagworld is a web design and development podcast based in the UK. In today’s episode, they interview me about HTML5. In it, we discuss the current state of HTML5, some of the new features that are currently, or are being implemented, and what we can expect in the future.