<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://coffeeonthekeyboard.com/wp-atom.php">
	<title type="text">Coffee on the Keyboard</title>
	<subtitle type="text">from James Socol</subtitle>

	<updated>2009-11-03T01:53:00Z</updated>
	<generator uri="http://wordpress.org/" version="2.8.6">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://coffeeonthekeyboard.com" />
	<id>http://coffeeonthekeyboard.com/feed/atom/</id>
	

			<link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-sa/3.0/" /><link rel="self" href="http://feeds.feedburner.com/coffeeonthekeyboard" type="application/atom+xml" /><feedburner:emailServiceId>coffeeonthekeyboard</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoffeeonthekeyboard" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoffeeonthekeyboard" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoffeeonthekeyboard" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/coffeeonthekeyboard" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoffeeonthekeyboard" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcoffeeonthekeyboard" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcoffeeonthekeyboard" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[Mistakes: Importing Data with MySQL]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/y7sRUwoFZ_U/" />
		<id>http://coffeeonthekeyboard.com/?p=309</id>
		<updated>2009-11-03T01:53:00Z</updated>
		<published>2009-11-03T01:53:00Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" /><category scheme="http://coffeeonthekeyboard.com" term="cli" /><category scheme="http://coffeeonthekeyboard.com" term="command line" /><category scheme="http://coffeeonthekeyboard.com" term="learn from me" /><category scheme="http://coffeeonthekeyboard.com" term="mistake" /><category scheme="http://coffeeonthekeyboard.com" term="MySQL" /><category scheme="http://coffeeonthekeyboard.com" term="pipe viewer" /><category scheme="http://coffeeonthekeyboard.com" term="pv" />		<summary type="html"><![CDATA[I blew most of the day trying to load data into MySQL because I didn't read. Hopefully my trials with 'max_allowed_packet' will help you avoid the same fate.]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/mistakes-importing-data-with-mysql-309/">&lt;p&gt;I spent the better part of today trying to import—in various attempts—between 800 MB and 3.1 GB of data into a local MySQL server. The whole time I was Doing It Wrong™. Now I feel like &lt;a href="http://www.flickr.com/photos/zachklein/54389823/"&gt;this&lt;/a&gt;:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img class="aligncenter size-full wp-image-310" title="Image by Zach Klein" src="http://coffeeonthekeyboard.com/wp-content/uploads/2009/11/frustrated.jpg" alt="frustrated" width="240" height="160" /&gt;&lt;/p&gt;
&lt;p&gt;I was using &lt;a href="http://spindrop.us/2009/09/16/getting-started-with-pipe-viewer/"&gt;pipe viewer&lt;/a&gt;, which obscured the error for most of the day. (If there&amp;#8217;s a way to stop &lt;code&gt;pv&lt;/code&gt; from eating messages to stderr, please let me know!) But eventually I figured out it was hitting the &lt;code&gt;max_allowed_packet&lt;/code&gt; limit and my import was dying. I was using the MySQL docs as my reference point, and &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/using-system-variables.html"&gt;they imply&lt;/a&gt; that the following should work:&lt;/p&gt;
&lt;pre&gt;$ mysql --max_allowed_packet=32M db &amp;lt; data.sql&lt;/pre&gt;
&lt;p&gt;I know now that this does not work. And I feel like a moron. If you read carefully, which I did not, you&amp;#8217;ll see that they&amp;#8217;re talking about server startup, not client startup, even though the example uses &amp;#8220;mysql&amp;#8221; instead of &amp;#8220;mysqld&amp;#8221;.&lt;/p&gt;
&lt;p&gt;When I stopped using pipe viewer, I got this series of errors:&lt;/p&gt;
&lt;pre&gt;$ mysql --max_allowed_packet=16M db &amp;lt; data.sql
ERROR 1153 (08501) at line 175458: Got a packet \
    bigger than 'max_allowed_packet' bytes
$ mysql --max_allowed_packet=128M db &amp;lt; data.sql
ERROR 1153 (08501) at line 175458: Got a packet \
    bigger than 'max_allowed_packet' bytes
$ mysql --max_allowed_packet=256M db &amp;lt; data.sql
ERROR 1153 (08501) at line 175458: Got a packet \
    bigger than 'max_allowed_packet' bytes
$ mysql --max_allowed_packet=1G db &amp;lt; data.sql
ERROR 1153 (08501) at line 175458: Got a packet \
    bigger than 'max_allowed_packet' bytes&lt;/pre&gt;
&lt;p&gt;Now here&amp;#8217;s the thing, data.sql was just shy of 80 MB. So obviously something was wrong.&lt;/p&gt;
&lt;p&gt;A quick edit to &lt;code&gt;/etc/my.cnf&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;[mysqld]
...
max_allowed_packet=32M
...&lt;/pre&gt;
&lt;p&gt;Then all I had to do was restart mysqld, and the next time I tried:&lt;/p&gt;
&lt;pre&gt;mysql db &amp;lt; data.sql&lt;/pre&gt;
&lt;p&gt;It finished without a problem.&lt;/p&gt;
&lt;p&gt;7 hours and a massive facepalm later&amp;#8230; I hope this keeps someone from wasting the same amount of time I did on such a dumb mistake.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=y7sRUwoFZ_U:w8Gx7wPV6NQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=y7sRUwoFZ_U:w8Gx7wPV6NQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=y7sRUwoFZ_U:w8Gx7wPV6NQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=y7sRUwoFZ_U:w8Gx7wPV6NQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=y7sRUwoFZ_U:w8Gx7wPV6NQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=y7sRUwoFZ_U:w8Gx7wPV6NQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=y7sRUwoFZ_U:w8Gx7wPV6NQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=y7sRUwoFZ_U:w8Gx7wPV6NQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=y7sRUwoFZ_U:w8Gx7wPV6NQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=y7sRUwoFZ_U:w8Gx7wPV6NQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/y7sRUwoFZ_U" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/mistakes-importing-data-with-mysql-309/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/mistakes-importing-data-with-mysql-309/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/mistakes-importing-data-with-mysql-309/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[Getting Involved with Mozilla Web Dev]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/EnaeugDtWoA/" />
		<id>http://coffeeonthekeyboard.com/?p=306</id>
		<updated>2009-10-12T21:09:53Z</updated>
		<published>2009-10-12T21:09:53Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" />		<summary type="html"><![CDATA[We&#8217;ve got a new page on the Mozilla Web Dev blog about getting involved.
On it, you&#8217;ll find information about some of our biggest projects, including Addons and Support. There are links to the project pages on the Mozilla Wiki, names of people to contact including IRC handles, and links to the source, tests and bug [...]]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/getting-involved-with-mozilla-web-dev-306/">&lt;p&gt;We&amp;#8217;ve got a new page on the Mozilla Web Dev blog about &lt;a href="http://blog.mozilla.com/webdev/get-involved/"&gt;getting involved&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On it, you&amp;#8217;ll find information about some of our biggest projects, including &lt;a href="http://addons.mozilla.org/"&gt;Addons&lt;/a&gt; and &lt;a href="http://support.mozilla.com/"&gt;Support&lt;/a&gt;. There are links to the project pages on the &lt;a href="http://wiki.mozilla.org/"&gt;Mozilla Wiki&lt;/a&gt;, names of people to contact including IRC handles, and links to the source, tests and bug lists.&lt;/p&gt;
&lt;p&gt;This page is a starting point. At the bottom you&amp;#8217;ll find a link to a list of (hopefully) &lt;a href="https://wiki.mozilla.org/Websites"&gt;all the websites we maintain&lt;/a&gt;.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=EnaeugDtWoA:FCdF9qiGPYc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=EnaeugDtWoA:FCdF9qiGPYc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=EnaeugDtWoA:FCdF9qiGPYc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=EnaeugDtWoA:FCdF9qiGPYc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=EnaeugDtWoA:FCdF9qiGPYc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=EnaeugDtWoA:FCdF9qiGPYc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=EnaeugDtWoA:FCdF9qiGPYc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=EnaeugDtWoA:FCdF9qiGPYc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=EnaeugDtWoA:FCdF9qiGPYc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=EnaeugDtWoA:FCdF9qiGPYc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/EnaeugDtWoA" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/getting-involved-with-mozilla-web-dev-306/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/getting-involved-with-mozilla-web-dev-306/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/getting-involved-with-mozilla-web-dev-306/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[Mozilla Web Development is Open Source]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/iCAH47jE9RM/" />
		<id>http://coffeeonthekeyboard.com/?p=303</id>
		<updated>2009-09-29T04:28:17Z</updated>
		<published>2009-09-29T04:28:17Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" /><category scheme="http://coffeeonthekeyboard.com" term="contribute" /><category scheme="http://coffeeonthekeyboard.com" term="mozilla" /><category scheme="http://coffeeonthekeyboard.com" term="open source" /><category scheme="http://coffeeonthekeyboard.com" term="webdev" />		<summary type="html"><![CDATA[At Mozilla, our web development projects are open source, publicly available, and interested in community contributions.
This is one of those things that makes absolute sense when you hear it, but you may have never heard, or thought, of it before.
It&#8217;s not terribly well-publicized—that&#8217;s something Mike Morgan and I are going to start working on this [...]]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/mozilla-web-development-is-open-source-303/">&lt;p&gt;At Mozilla, our web development projects are open source, publicly available, and interested in community contributions.&lt;/p&gt;
&lt;p&gt;This is one of those things that makes absolute sense when you hear it, but you may have never heard, or thought, of it before.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s not terribly well-publicized—that&amp;#8217;s something &lt;a href="http://morgamic.com/"&gt;Mike Morgan&lt;/a&gt; and I are going to start working on this week—but there are ways you can get involved:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There&amp;#8217;s &lt;a href="https://wiki.mozilla.org/Webdev"&gt;info about most, if not all, our current projects on the Mozilla Wiki&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An &lt;a href="https://bugzilla.mozilla.org/query.cgi?format=advanced"&gt;advanced search in Bugzilla&lt;/a&gt; can tell you a lot about what&amp;#8217;s going on.&lt;/li&gt;
&lt;li&gt;You can find web dev people &lt;a href="http://irc.mozilla.org/"&gt;on IRC&lt;/a&gt; in #webdev, #sumodev, and a few others. (I&amp;#8217;m jsocol on irc.mozilla.org.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Why would you want to contribute to Mozilla web development projects?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You &lt;a href="http://www.flickr.com/groups/owdposter/"&gt;care about the web&lt;/a&gt;, and making it better.&lt;/li&gt;
&lt;li&gt;Our websites are used by &lt;a href="http://blog.mozilla.com/metrics/"&gt;millions of people&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Because of that, we work at scales most developers don&amp;#8217;t usually get to see.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hopefully I&amp;#8217;ll have something to add by the end of the week, but in the meantime, come on over and say &amp;#8220;hi&amp;#8221; on IRC!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=iCAH47jE9RM:ixl4XtLrynI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=iCAH47jE9RM:ixl4XtLrynI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=iCAH47jE9RM:ixl4XtLrynI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=iCAH47jE9RM:ixl4XtLrynI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=iCAH47jE9RM:ixl4XtLrynI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=iCAH47jE9RM:ixl4XtLrynI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=iCAH47jE9RM:ixl4XtLrynI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=iCAH47jE9RM:ixl4XtLrynI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=iCAH47jE9RM:ixl4XtLrynI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=iCAH47jE9RM:ixl4XtLrynI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/iCAH47jE9RM" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/mozilla-web-development-is-open-source-303/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/mozilla-web-development-is-open-source-303/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/mozilla-web-development-is-open-source-303/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[(Don&#8217;t) Close Firefox with Last Tab]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/qodUjszaYSI/" />
		<id>http://coffeeonthekeyboard.com/?p=296</id>
		<updated>2009-09-25T07:04:55Z</updated>
		<published>2009-09-25T07:01:46Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" /><category scheme="http://coffeeonthekeyboard.com" term="about:config" /><category scheme="http://coffeeonthekeyboard.com" term="config" /><category scheme="http://coffeeonthekeyboard.com" term="firefox" /><category scheme="http://coffeeonthekeyboard.com" term="tip" />		<summary type="html"><![CDATA[Prior to Firefox 3.5, the default behavior of closing the last tab was to leave a blank tab. That changed in Firefox 3.5, and the default behavior is now to close the whole window with the last tab. If you&#8217;re on Windows or tend to close tabs with Ctrl-W, like me, this can be pretty [...]]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/dont-close-firefox-with-last-tab-296/">&lt;p&gt;Prior to Firefox 3.5, the default behavior of closing the last tab was to leave a blank tab. That changed in Firefox 3.5, and the default behavior is now to close the whole window with the last tab. If you&amp;#8217;re on Windows or tend to close tabs with Ctrl-W, like me, this can be pretty annoying if you forget about it, what with reopening the browser and all.&lt;/p&gt;
&lt;p&gt;Fortunately, it&amp;#8217;s easy to change.&lt;/p&gt;
&lt;p&gt;Venture into about:config. Go to the address bar and enter &amp;#8220;about:config&amp;#8221; and press enter. You&amp;#8217;ll see a long list and at the top, a text box called &amp;#8220;Filter:&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;img class="aligncenter size-full wp-image-297" title="closewindowwithlasttab" src="http://coffeeonthekeyboard.com/wp-content/uploads/2009/09/closewindowwithlasttab.png" alt="closewindowwithlasttab" width="250" height="182" /&gt;&lt;strong&gt;Buyer Beware here&lt;/strong&gt;. You probably saw a warning when you tried to go to about:config. That&amp;#8217;s because you can significantly alter the behavior of Firefox here, and you need to be either very careful about what you change, or very confident in your ability to fix it.&lt;/p&gt;
&lt;p&gt;Enter &amp;#8220;tabs&amp;#8221; into the filter and you&amp;#8217;ll see a list like the picture above. There may be more items depending on the &lt;a href="http://addons.mozilla.com/"&gt;addons&lt;/a&gt; you have installed. Now look for &amp;#8220;browser.tabs.closeWindowWithLastTab&amp;#8221; and double click it. It should turn bold, and in the right columns it will say &amp;#8220;user set&amp;#8221; &amp;#8220;boolean&amp;#8221; &amp;#8220;false&amp;#8221;.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s it!&lt;/p&gt;
&lt;p&gt;Of course, if you&amp;#8217;re not comfortable mucking about in about:config, or you also want to restore the &lt;em&gt;close&lt;/em&gt; button to that last tab, there&amp;#8217;s an &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/12991"&gt;addon&lt;/a&gt;* for that.&lt;/p&gt;
&lt;p&gt;* Of course, I haven&amp;#8217;t used, and can&amp;#8217;t vouch for, that addon, but it&amp;#8217;s there.&lt;/p&gt;
&lt;div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 125px; width: 1px; height: 1px;"&gt;&lt;img src="file:///C:/Users/James/AppData/Local/Temp/moz-screenshot-2.png" alt="" /&gt;&lt;/div&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=qodUjszaYSI:aI1mnxQaD4Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=qodUjszaYSI:aI1mnxQaD4Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=qodUjszaYSI:aI1mnxQaD4Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=qodUjszaYSI:aI1mnxQaD4Y:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=qodUjszaYSI:aI1mnxQaD4Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=qodUjszaYSI:aI1mnxQaD4Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=qodUjszaYSI:aI1mnxQaD4Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=qodUjszaYSI:aI1mnxQaD4Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=qodUjszaYSI:aI1mnxQaD4Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=qodUjszaYSI:aI1mnxQaD4Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/qodUjszaYSI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/dont-close-firefox-with-last-tab-296/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/dont-close-firefox-with-last-tab-296/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/dont-close-firefox-with-last-tab-296/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[Upgrade Flash in Firefox]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/74_Ufba0F_Y/" />
		<id>http://coffeeonthekeyboard.com/?p=289</id>
		<updated>2009-09-23T03:23:05Z</updated>
		<published>2009-09-23T03:22:47Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" /><category scheme="http://coffeeonthekeyboard.com" term="firefox" /><category scheme="http://coffeeonthekeyboard.com" term="flash" /><category scheme="http://coffeeonthekeyboard.com" term="security" /><category scheme="http://coffeeonthekeyboard.com" term="upgrade" />		<summary type="html"><![CDATA[If you upgraded Firefox lately, you might have seen a message on the start page urging you to upgrade Flash. As of yesterday, something like 12 million people had clicked through to upgrade. That&#8217;s a great number.
However, when you got to the Adobe site, and clicked the &#8220;Agree and Install&#8221; button, instead just saving an [...]]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/upgrade-flash-in-firefox-289/">&lt;p&gt;If you &lt;a href="http://www.mozilla.com/"&gt;upgraded Firefox&lt;/a&gt; lately, you might have seen a message on the start page &lt;a href="http://www.mozilla.com/en-US/firefox/3.5.3/whatsnew/"&gt;urging you to upgrade Flash&lt;/a&gt;. As of yesterday, &lt;a href="http://blog.mozilla.com/metrics/2009/09/16/helping-people-upgrade-flash/"&gt;something like 12 million people&lt;/a&gt; had clicked through to upgrade. That&amp;#8217;s a great number.&lt;/p&gt;
&lt;p&gt;However, when you got to the Adobe site, and clicked the &amp;#8220;Agree and Install&amp;#8221; button, instead just saving an installer file, you might have seen this:&lt;/p&gt;
&lt;p&gt;&lt;img class="aligncenter size-full wp-image-290" title="update-flash-1" src="http://coffeeonthekeyboard.com/wp-content/uploads/2009/09/update-flash-1.png" alt="update-flash-1" width="402" height="166" /&gt;Right there? That&amp;#8217;s enough to deter me from this whole process, so I can definitely understand if it scared you off. But this is an important update, a security update, so you need to do it.&lt;/p&gt;
&lt;p&gt;Fortunately, it&amp;#8217;s very easy to get around this annoying development in Flash. (Their hearts are in the right place, automatic updates, but their implementation leaves something to be desired. Of course, the Adobe Updater makes you quit Firefox to update Photoshop, so this clearly isn&amp;#8217;t their strong suit.)&lt;/p&gt;
&lt;p&gt;For starters, head to &lt;a href="http://get.adobe.com/flashplayer" target="_blank"&gt;Adobe&amp;#8217;s Get Flash&lt;/a&gt; page. If you see that annoying bar, click on the [x] in the right corner:&lt;/p&gt;
&lt;p&gt;&lt;img class="aligncenter size-full wp-image-291" title="update-flash-2" src="http://coffeeonthekeyboard.com/wp-content/uploads/2009/09/update-flash-2.png" alt="update-flash-2" width="191" height="114" /&gt;Now, more towards the middle of the page, look for a link that says &amp;#8220;&lt;a href="http://fpdownload.adobe.com/get/flashplayer/current/install_flash_player.exe"&gt;click here to download&lt;/a&gt;.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;img class="aligncenter size-full wp-image-292" title="update-flash-3" src="http://coffeeonthekeyboard.com/wp-content/uploads/2009/09/update-flash-3.png" alt="update-flash-3" width="397" height="231" /&gt;That will start downloading the normal installer we&amp;#8217;ve come to know and love. Yeah, you&amp;#8217;ll still have to restart Firefox, but you were going to need to do that, anyway.&lt;/p&gt;
&lt;p&gt;There you have it, avoiding Adobe&amp;#8217;s strange new extra software and getting Flash up-to-date with the latest (really, &lt;strong&gt;really important&lt;/strong&gt;) security fixes.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=74_Ufba0F_Y:-K_x9zEWWfw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=74_Ufba0F_Y:-K_x9zEWWfw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=74_Ufba0F_Y:-K_x9zEWWfw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=74_Ufba0F_Y:-K_x9zEWWfw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=74_Ufba0F_Y:-K_x9zEWWfw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=74_Ufba0F_Y:-K_x9zEWWfw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=74_Ufba0F_Y:-K_x9zEWWfw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=74_Ufba0F_Y:-K_x9zEWWfw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=74_Ufba0F_Y:-K_x9zEWWfw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=74_Ufba0F_Y:-K_x9zEWWfw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/74_Ufba0F_Y" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/upgrade-flash-in-firefox-289/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/upgrade-flash-in-firefox-289/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/upgrade-flash-in-firefox-289/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[NextUp]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/UKGe4OwcrAM/" />
		<id>http://coffeeonthekeyboard.com/?p=282</id>
		<updated>2009-09-02T04:30:20Z</updated>
		<published>2009-09-02T04:01:17Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" />		<summary type="html"><![CDATA[I never properly introduced my latest(?) little side project: NextUp.info.

NextUp is a very straightforward app that helps you create an agenda, then stick to it. You enter a list of topics (or, say, speakers) and how long they&#8217;re allowed to run. When you create the agenda and start the meeting, the topics count down, much [...]]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/nextup-282/">&lt;p&gt;I never properly introduced my latest(?) little side project: &lt;a href="http://nextup.info/"&gt;NextUp.info&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://nextup.info/"&gt;&lt;img class="aligncenter size-full wp-image-283" title="NextUp" src="http://coffeeonthekeyboard.com/wp-content/uploads/2009/09/nextup.png" alt="NextUp" width="300" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id="more-282"&gt;&lt;/span&gt;NextUp is a very straightforward app that helps you create an agenda, then stick to it. You enter a list of topics (or, say, speakers) and how long they&amp;#8217;re allowed to run. When you create the agenda and start the meeting, the topics count down, much like &lt;a href="http://sports.espn.go.com/espnradio/show?showId=pti"&gt;PTI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The back story is pretty simple: I was on a project with at least four distinct teams, so we had weekly &amp;#8220;status update&amp;#8221; meetings. These really should have run for no more than 20 minutes, but we were lucky to get out in under two hours. So, NextUp came to mind.&lt;/p&gt;
&lt;p&gt;The name was, essentially, the only relevant domain available. Don&amp;#8217;t lie, you&amp;#8217;ve probably picked a title based on available domains. It&amp;#8217;s becoming a real problem.&lt;/p&gt;
&lt;p&gt;It wasn&amp;#8217;t very pretty or usable until recently, when my friend &lt;a href="http://sphericalthinking.com/"&gt;Ben&lt;/a&gt; (no, not &lt;a href="http://coffeeonthekeyboard.com/what-time-is-it-there-273/" title="that one"&gt;that one&lt;/a&gt;) stepped up and helped me out with a UI and design. IE users will not get the pretty text shadows, and I&amp;#8217;m pretty sure it&amp;#8217;s just broken in IE6. Sorry, upgrade, or tell your IT department to do it.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=UKGe4OwcrAM:NqmHktf2GYU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=UKGe4OwcrAM:NqmHktf2GYU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=UKGe4OwcrAM:NqmHktf2GYU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=UKGe4OwcrAM:NqmHktf2GYU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=UKGe4OwcrAM:NqmHktf2GYU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=UKGe4OwcrAM:NqmHktf2GYU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=UKGe4OwcrAM:NqmHktf2GYU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=UKGe4OwcrAM:NqmHktf2GYU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=UKGe4OwcrAM:NqmHktf2GYU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=UKGe4OwcrAM:NqmHktf2GYU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/UKGe4OwcrAM" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/nextup-282/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/nextup-282/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/nextup-282/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[Excitement about HTML5: Forms]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/-C0gkADfFEo/" />
		<id>http://coffeeonthekeyboard.com/?p=278</id>
		<updated>2009-08-22T17:38:50Z</updated>
		<published>2009-08-22T17:38:50Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" /><category scheme="http://coffeeonthekeyboard.com" term="forms" /><category scheme="http://coffeeonthekeyboard.com" term="Front-end" /><category scheme="http://coffeeonthekeyboard.com" term="html5" /><category scheme="http://coffeeonthekeyboard.com" term="ua" /><category scheme="http://coffeeonthekeyboard.com" term="ui" /><category scheme="http://coffeeonthekeyboard.com" term="ux" />		<summary type="html"><![CDATA[I shouldn&#8217;t imply that I don&#8217;t like HTML5. I don&#8217;t like certain parts of it—the redundant new elements that add no functionality and are of little use except to A List Apart. But other parts of the spec are very exciting. Forms, in particular, are getting a much-needed facelift.
Forms will be able to require the [...]]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/excitement-about-html5-forms-278/">&lt;p&gt;I shouldn&amp;#8217;t imply that &lt;a href="http://coffeeonthekeyboard.com/reservations-about-html5-271/" title="I don&amp;#8217;t like HTML5"&gt;I don&amp;#8217;t like HTML5&lt;/a&gt;. I don&amp;#8217;t like certain parts of it—the redundant new elements that add no functionality and are of little use except to &lt;a href="http://www.alistapart.com/"&gt;A List Apart&lt;/a&gt;. But other parts of the spec are very exciting. &lt;a href="http://www.w3.org/TR/html5/forms.html"&gt;Forms&lt;/a&gt;, in particular, are getting a much-needed facelift.&lt;/p&gt;
&lt;p&gt;Forms will be able to require the user-agent to do &lt;a href="http://www.w3.org/TR/html5/forms.html#constraints"&gt;pre-submission validation&lt;/a&gt;. Obviously we can&amp;#8217;t rely on this for security reasons, but it will save us from writing JavaScript validation scripts and give users a better experience with our forms.&lt;/p&gt;
&lt;p&gt;And the validation is fairly robust. &lt;code&gt;&amp;lt;input/&amp;gt;&lt;/code&gt; elements gain an attribute called &lt;code&gt;&lt;a href="http://www.w3.org/TR/html5/forms.html#attr-input-pattern"&gt;pattern&lt;/a&gt;&lt;/code&gt;, which accepts a simple regular expression, like &lt;code&gt;"[A-E][0-9]{7}"&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;But you probably won&amp;#8217;t need the &lt;code&gt;pattern&lt;/code&gt; attribute very often, since there is a whole slew of new &lt;a href="http://www.w3.org/TR/html5/forms.html#attr-input-type"&gt;&lt;code&gt;type&lt;/code&gt;s&lt;/a&gt; that the UA will be expected to provide controls for, and validate. Crucial types, like &lt;code&gt;email&lt;/code&gt; and &lt;code&gt;url&lt;/code&gt;, and &lt;em&gt;difficult&lt;/em&gt; types like &lt;code&gt;datetime-local&lt;/code&gt; and &lt;code&gt;color&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://jqueryui.com/"&gt;jQuery UI&lt;/a&gt; is great, but it doesn&amp;#8217;t compare to this kind of power.&lt;/p&gt;
&lt;p&gt;I only realized the sorry state of our current form controls very recently, after getting an iPhone. Built-in form fields on the iPhone can trigger different input methods. A field, like ZIP code, that accepts only numbers, opens the keyboard to the numbers first. A field that wants a URL can open a keyboard with a &lt;code&gt;.com&lt;/code&gt; button to save time. But web pages can&amp;#8217;t do this. They can only say that an input accepts arbitrary &lt;code&gt;text&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For mobile or touch-enabled UAs, knowing that you can open a keypad instead of a full keyboard is a great step forward. For everyone, having date and color pickers built into the UA means saving both developers&amp;#8217; and users&amp;#8217; time. Less time to build and less time to download, consistent experience in the UA across web sites.&lt;/p&gt;
&lt;p&gt;Forms also get a new event, &lt;a href="http://www.w3.org/TR/html5/forms.html#event-input-input"&gt;&lt;code&gt;input&lt;/code&gt;&lt;/a&gt;, which is a little like the current &lt;code&gt;change&lt;/code&gt; event, except you don&amp;#8217;t need to wait for the element to lose focus for the event to fire. That&amp;#8217;s just useful.&lt;/p&gt;
&lt;p&gt;Controls get new methods, &lt;a href="http://www.w3.org/TR/html5/forms.html#dom-input-stepup"&gt;&lt;code&gt;stepUp()&lt;/code&gt;&lt;/a&gt; and &lt;code&gt;stepDown()&lt;/code&gt;, to enable, for example, very fast forward/backward selection on a &lt;code&gt;date&lt;/code&gt; input.&lt;/p&gt;
&lt;p&gt;The last fun addition I&amp;#8217;ll mention (go read the links, they&amp;#8217;re all to the same page) is the &lt;a href="http://www.w3.org/TR/html5/forms.html#resulting-autocompletion-state"&gt;&lt;code&gt;autocomplete&lt;/code&gt;&lt;/a&gt; attribute. It doesn&amp;#8217;t do what you hope it does. What it does is specify to the UA that it should not remember and suggest values for this input. It lets the UX designer decide whether to use Firefox or IE&amp;#8217;s built-in autocomplete on a per-field basis. Useful. (Not as useful as, say, an &lt;code&gt;autocompleteUrl&lt;/code&gt; attribute that could load some JSON or XML, but still useful.)&lt;/p&gt;
&lt;p&gt;Building forms is going to be so, so much better once these are widely support.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=-C0gkADfFEo:GkylV-XLmuc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=-C0gkADfFEo:GkylV-XLmuc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=-C0gkADfFEo:GkylV-XLmuc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=-C0gkADfFEo:GkylV-XLmuc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=-C0gkADfFEo:GkylV-XLmuc:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=-C0gkADfFEo:GkylV-XLmuc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=-C0gkADfFEo:GkylV-XLmuc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=-C0gkADfFEo:GkylV-XLmuc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=-C0gkADfFEo:GkylV-XLmuc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=-C0gkADfFEo:GkylV-XLmuc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/-C0gkADfFEo" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/excitement-about-html5-forms-278/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/excitement-about-html5-forms-278/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/excitement-about-html5-forms-278/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[What Time Is It There?]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/l1Z7t6NXEgw/" />
		<id>http://coffeeonthekeyboard.com/?p=273</id>
		<updated>2009-08-11T04:57:08Z</updated>
		<published>2009-08-11T04:57:08Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" />		<summary type="html"><![CDATA[We just pushed an update to What Time Is It There?, so I thought I&#8217;d take the time to mention it here, since I&#8217;ve already done so on Twitter. You can now link to a time.
What Time Is It There?, or WTIIT, is a quick, visual reference card for US time zones. It&#8217;s a collaborative [...]]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/what-time-is-it-there-273/">&lt;p&gt;&lt;a href="http://twitter.com/n0s0ap"&gt;We&lt;/a&gt; just pushed an update to &lt;a href="http://whattimeisitthere.info/"&gt;What Time Is It There?&lt;/a&gt;, so I thought I&amp;#8217;d take the time to mention it here, since I&amp;#8217;ve already done so on &lt;a href="http://twitter.com/jamessocol"&gt;Twitter&lt;/a&gt;. You can now &lt;a href="http://whattimeisitthere.info/#at-1-pacific"&gt;link to a time&lt;/a&gt;.&lt;span id="more-273"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;What Time Is It There?, or WTIIT, is a quick, visual reference card for US time zones. It&amp;#8217;s a collaborative effort of  &lt;a href="http://benlew.com/"&gt;Ben Lew&lt;/a&gt; and I. And when I say &amp;#8220;collaboration,&amp;#8221; I mean it was 100% Ben&amp;#8217;s idea, and I refactored some JavaScript for him.&lt;/p&gt;
&lt;p&gt;Ben&amp;#8217;s original version showed you the current time in six time zones. &lt;a href="http://benlew.com/blog/2009/07/what-time-is-it-there-update/"&gt;My first update&lt;/a&gt; completely rewrote the JavaScript and added the ability to specify a time, say &amp;#8220;at 9:15pm eastern&amp;#8221; or &amp;#8220;in 2 hours 30 minutes&amp;#8221;. Let&amp;#8217;s call that version 1.0, release to the wild.&lt;/p&gt;
&lt;p&gt;Rather quickly I noticed a bug causing problems with when &amp;#8220;PM&amp;#8221; was capitalized and there was no space before it (eg: &amp;#8220;at 5PM&amp;#8221; instead of &amp;#8220;at 4pm&amp;#8221; or &amp;#8220;at 1 PM&amp;#8221;). So I sent him a patched version that also changed the behavior when no &amp;#8220;am&amp;#8221; or &amp;#8220;pm&amp;#8221; was given. Version 1.0.1 assumed that hours between 12 and 6 were in the afternoon unless you told it otherwise, while 7-11 are assumed to be morning.&lt;/p&gt;
&lt;p&gt;Last night I sent Ben a new patch, version 1.0.2, that adds what I think is an important new feature: you can now &lt;a href="http://whattimeisitthere.info/#at-1-pacific"&gt;link to a time&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img class="aligncenter size-full wp-image-274" title="What Time Is It There? lets you link to a time." src="http://coffeeonthekeyboard.com/wp-content/uploads/2009/08/wtiit-1.0.2.gif" alt="What Time Is It There? lets you link to a time." width="545" height="139" /&gt;&lt;/p&gt;
&lt;p&gt;When you enter a time and hit enter or click outside the box, the URL is updated with that time. If you copy the URL, you can save or send it and when you return to that URL, the page will start off with whatever time you saved.&lt;/p&gt;
&lt;p&gt;WTIIT 1.0.2 includes two additional changes. &amp;#8220;a&amp;#8221; and &amp;#8220;p&amp;#8221; now work if you don&amp;#8217;t like typing the &amp;#8220;m&amp;#8221;, and—finally!—the pesky 12 noon/midnight bug is squashed. Previous behavior with 12 o&amp;#8217;clock was, shall we say, wonky at best, and often plain wrong. (It could literally display the opposite of what you typed.) Now, &lt;a href="http://whattimeisitthere.info/#at-12-mountain"&gt;it parses noon and midnight correctly&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Just thought I&amp;#8217;d share.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l1Z7t6NXEgw:8x68k_8UNpI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l1Z7t6NXEgw:8x68k_8UNpI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=l1Z7t6NXEgw:8x68k_8UNpI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l1Z7t6NXEgw:8x68k_8UNpI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l1Z7t6NXEgw:8x68k_8UNpI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l1Z7t6NXEgw:8x68k_8UNpI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=l1Z7t6NXEgw:8x68k_8UNpI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l1Z7t6NXEgw:8x68k_8UNpI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l1Z7t6NXEgw:8x68k_8UNpI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=l1Z7t6NXEgw:8x68k_8UNpI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/l1Z7t6NXEgw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/what-time-is-it-there-273/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/what-time-is-it-there-273/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/what-time-is-it-there-273/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[Reservations about HTML5]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/1DumkNw4Cnw/" />
		<id>http://coffeeonthekeyboard.com/?p=271</id>
		<updated>2009-08-08T23:21:22Z</updated>
		<published>2009-08-08T23:21:22Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" /><category scheme="http://coffeeonthekeyboard.com" term="extensibility" /><category scheme="http://coffeeonthekeyboard.com" term="html5" /><category scheme="http://coffeeonthekeyboard.com" term="role" /><category scheme="http://coffeeonthekeyboard.com" term="spec" /><category scheme="http://coffeeonthekeyboard.com" term="suggestions" /><category scheme="http://coffeeonthekeyboard.com" term="whatwg" /><category scheme="http://coffeeonthekeyboard.com" term="xhtml5" />		<summary type="html"><![CDATA[A day or so ago, Adrian Bateman, from Microsoft&#8217;s IE team, posted his team&#8217;s thoughts on the current draft of the HTML5 spec.
Reading it is brutal. Bateman takes issue with basically everything added since HTML4. He goes through and individually criticizes many of the new tags, sometimes with extremely detailed, multi-paragraph critiques. I guess this [...]]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/reservations-about-html5-271/">&lt;p&gt;A day or so ago, &lt;a href="http://adrianba.net/"&gt;Adrian Bateman&lt;/a&gt;, from &lt;a href="http://blogs.msdn.com/ie/default.aspx"&gt;Microsoft&amp;#8217;s IE team&lt;/a&gt;, posted his team&amp;#8217;s &lt;a href="http://bit.ly/1TNzYU"&gt;thoughts on the current draft&lt;/a&gt; of the &lt;a href="http://dev.w3.org/html5/spec/Overview.html"&gt;HTML5 spec&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Reading it is brutal. Bateman takes issue with basically everything added since HTML4. He goes through and individually criticizes many of the new tags, sometimes with extremely detailed, multi-paragraph critiques. I guess this is what happens when you&amp;#8217;re not sufficiently involved at the beginning.&lt;/p&gt;
&lt;p&gt;Of course, there is still plenty of time to complain, since &lt;a href="http://www.webmonkey.com/blog/HTML_5_Won_t_Be_Ready_Until_2022DOT_Yes__2022DOT"&gt;the HTML5 spec won&amp;#8217;t reach its final stage until 2022&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bateman and the IE team, even while sounding like they don&amp;#8217;t even &lt;em&gt;want&lt;/em&gt; HTML5, do bring up a few things that have been bothering me about the spec.&lt;/p&gt;
&lt;p&gt;Let me be very clear: I think new tags like &lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; are wonderful. Breaking the Adobe monopoly is great. There are still some issues (refusing to specify a codec meaning you can&amp;#8217;t build support into the browser, for instance) but those types of tags are going to help push the web to a better place.&lt;/p&gt;
&lt;p&gt;The parts that bother me are the new, highly touted &amp;#8220;&lt;a href="http://microformatique.com/?p=83"&gt;structural&lt;/a&gt;&amp;#8221; tags, like &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, and worst, &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt;.&lt;span id="more-271"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;My issue is that all of these tags are perfect semantic additions, &lt;em&gt;if all you want to do is put magazine articles on the web&lt;/em&gt;. These are tags that represent a &lt;em&gt;current&lt;/em&gt; prevailing paradigm in &lt;em&gt;text-focused&lt;/em&gt; web design that has been strongly influenced by &lt;em&gt;print design and layout&lt;/em&gt;. They all have a use on &lt;a href="http://www.alistapart.com/"&gt;A List Apart&lt;/a&gt;, and on most blogs, but besides &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;—or possibly &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;—can you see any of them in &lt;a href="http://gmail.com"&gt;Gmail &lt;/a&gt;or &lt;a href="http://www.google.com/calendar"&gt;Google Calendar&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ryandoherty.net/"&gt;Ryan Doherty&lt;/a&gt; already demonstrated a &lt;a href="http://www.ryandoherty.net/2009/03/23/426/"&gt;semantic version of Gmail&lt;/a&gt;, and didn&amp;#8217;t need a single HTML5 tag to do it. (But please, &lt;em&gt;please&lt;/em&gt;, don&amp;#8217;t assume I&amp;#8217;m putting words in Ryan&amp;#8217;s mouth about HTML5. He&amp;#8217;s also used the &lt;code&gt;&amp;lt;audio&amp;gt;&lt;/code&gt; tag to &lt;a href="http://ryandoherty.net/clouserwsoundboard/"&gt;great effect&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;Issues with &lt;a href="http://www.zeldman.com/2009/07/13/html-5-nav-ambiguity-resolved/"&gt;the ambiguity of certain new tags&lt;/a&gt; aside, these tags privilege, even codify, a certain paradigm in design. For lack of a better word, the &amp;#8220;wall of text&amp;#8221; style. To that end, I worry that (a) they do nothing to help the cause of &lt;del datetime="2009-08-08T20:49:35+00:00"&gt;emerging&lt;/del&gt; &lt;ins datetime="2009-08-08T20:49:35+00:00"&gt;hell already mainstream&lt;/ins&gt; web application development—the &lt;a href="http://en.wikipedia.org/wiki/Rich_Internet_application"&gt;Rich Internet Application&lt;/a&gt;— and (b) they may &lt;em&gt;actively discourage&lt;/em&gt; designers from trying new, paradigm breaking ideas.&lt;/p&gt;
&lt;p&gt;I imagine a conversation between a designer and the developer tasked with implementing the design. Maybe this isn&amp;#8217;t a &amp;#8220;great&amp;#8221; developer, but honestly, how many of those are there? The conversation ends: &amp;#8220;Well, there just isn&amp;#8217;t a tag for that.&amp;#8221; Back to the drawing board.&lt;/p&gt;
&lt;p&gt;What I like about the &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; are their flexibility. By themselves, they&amp;#8217;re nearly meaningless, just a block-level or inline element, respectively. What makes them work is the way we&amp;#8217;ve developed the use of the &lt;code&gt;id&lt;/code&gt; and &lt;code&gt;class&lt;/code&gt; attributes.&lt;/p&gt;
&lt;p&gt;What HTML5&amp;#8217;s new tags lack is &lt;em&gt;extensibility&lt;/em&gt;, just like HTML4. They freeze us at a moment in time (about 5 years ago) and in design. To that end, I reiterate &lt;a href="http://microformatique.com/"&gt;John Allsopp&lt;/a&gt;&amp;#8217;s &lt;a href="http://www.alistapart.com/articles/semanticsinhtml5"&gt;call for new attributes&lt;/a&gt;, like &lt;a href="http://www.w3.org/TR/xhtml-role/"&gt;&lt;code&gt;role&lt;/code&gt; from XHTML&lt;/a&gt;, rather than new tags. Do we really need five new block-level elements? Or should we allow some sort of extensible mechanism to create, in effect, an infinite number of new block-level elements?&lt;/p&gt;
&lt;p&gt;Since I suggested it, here&amp;#8217;s how I imagine it working: let&amp;#8217;s say HTML5 adopts the &lt;code&gt;role&lt;/code&gt; attribute, and it&amp;#8217;s applicable to everything. Now, instead of XHTML&amp;#8217;s short list of values for &lt;code&gt;role&lt;/code&gt;, let&amp;#8217;s define a list of values, but allow that list to be extended. So, our common values—like &lt;code&gt;header&lt;/code&gt;, &lt;code&gt;footer&lt;/code&gt;, &lt;code&gt;navigation&lt;/code&gt;, &lt;code&gt;menu&lt;/code&gt;, &lt;code&gt;section&lt;/code&gt;, &lt;code&gt;article&lt;/code&gt;, &lt;code&gt;frame&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;, &lt;code&gt;banner&lt;/code&gt;, posssibly &lt;code&gt;data&lt;/code&gt; and &lt;code&gt;interactive&lt;/code&gt;, I&amp;#8217;m sure we could come up with far more even now—have some defined meaning, but they are not the only possible values.&lt;/p&gt;
&lt;p&gt;The tricky part is: how do we go about defining a &lt;em&gt;new&lt;/em&gt; role? The simple, naïve solution is allowing people to use anything, and then use CSS selectors and JavaScript to make it work. While this opens up the extensibility to the greatest number of people, it also makes it fairly meaningless, and doesn&amp;#8217;t really expand on the &lt;code&gt;id&lt;/code&gt;/&lt;code&gt;class&lt;/code&gt; system we have now.&lt;/p&gt;
&lt;p&gt;The other end of the spectrum is requiring all roles to have a definition that is somehow meaningful to the user-agent. The XML way to do this would be roughly to allow the role attribute to exist in any namespace and still be interpreted, providing a definition for the UA somewhere on the web. Something like this:&lt;/p&gt;
&lt;pre&gt;&amp;lt;html ... u:xmlns="http://my.dtd/url"&amp;gt;
...
&amp;lt;div u:role="mycustomrole" role="interactive"&amp;gt;&lt;/pre&gt;
&lt;p&gt;This, of course, limits the number of people who can create, and host, definitions for roles. It is also incompatible with the HTML-style variant of HTML5 (as opposed to XHTML5, the XML-style variant). So let&amp;#8217;s throw this out now.&lt;/p&gt;
&lt;p&gt;The other method I can see off the top of my head is a hybrid, and puts much of the onus on the UA to be smart, and on the community to share.&lt;/p&gt;
&lt;p&gt;There will need to be a lot of discussion among browser vendors on what &amp;#8220;meaningful to the UA&amp;#8221; means, and what kind of definitions are necessary from that, but let&amp;#8217;s assume that they&amp;#8217;ve all come to some sort of consensus—or, since I&amp;#8217;ve always thought the consensus model was flawed, that some common format has emerged. There is a file format that can be placed on the web.&lt;/p&gt;
&lt;p&gt;This is a hybrid scheme: if all I want is to label some elements with a new role, I can put anything in there. But if I want something meaningful to the UA, with a definition file, I can add it as a &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; element in the header.&lt;/p&gt;
&lt;pre&gt;&amp;lt;link rel="roles" type="application/role+xml" href="http://mysite.com/myroles"/&amp;gt;&lt;/pre&gt;
&lt;p class="aside"&gt;MIME-types and formats are left as exercises to the reader.&lt;/p&gt;
&lt;p&gt;Now, here&amp;#8217;s where the sharing comes in. Let&amp;#8217;s say my friend or follower wants to use a similar role, and thinks mine is close enough. He can then put the same &lt;code&gt;&amp;lt;link/&amp;gt;&lt;/code&gt; tag. Hopefully, a smart UA, would have cached the definition file, do a conditional &lt;code&gt;GET&lt;/code&gt; request, get a &lt;code&gt;304 Not Modified&lt;/code&gt; from my server. If my definition file gets too popular for my server to handle, I could perhaps move it over to Google Code and have my server issue a &lt;code&gt;301 Moved Permanently&lt;/code&gt;, which would hopefully convince UAs to stop pinging me.&lt;/p&gt;
&lt;p&gt;There is some question about conflicting role definitions. What makes a &amp;#8220;unique key,&amp;#8221; is it a combination of a role and a URL? Can I define multiple roles per URL, or only one? If there are multiple roles per URL, can I, as a developer, mix and match? Which definition would take precedence? These are not trivial questions, and would have to go up for debate in &lt;a href="http://www.whatwg.org/"&gt;WHATWG&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is just one idea for an extensible method of building on HTML that doesn&amp;#8217;t lock us into a single design paradigm. What I don&amp;#8217;t like about the current HTML5 spec is that a lot of is is neither extensible nor forward-thinking. I don&amp;#8217;t know how many of you plan to keep making the same old blogs and webzines for the next 13 years, but I, for one, would like to move forward.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=1DumkNw4Cnw:RH_hu6Gwlqo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=1DumkNw4Cnw:RH_hu6Gwlqo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=1DumkNw4Cnw:RH_hu6Gwlqo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=1DumkNw4Cnw:RH_hu6Gwlqo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=1DumkNw4Cnw:RH_hu6Gwlqo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=1DumkNw4Cnw:RH_hu6Gwlqo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=1DumkNw4Cnw:RH_hu6Gwlqo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=1DumkNw4Cnw:RH_hu6Gwlqo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=1DumkNw4Cnw:RH_hu6Gwlqo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=1DumkNw4Cnw:RH_hu6Gwlqo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/1DumkNw4Cnw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/reservations-about-html5-271/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/reservations-about-html5-271/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/reservations-about-html5-271/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>James</name>
						<uri>http://jamessocol.com/</uri>
					</author>
		<title type="html"><![CDATA[EzGz: WordPress GZip Plugin]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/coffeeonthekeyboard/~3/l3F2M08seZ4/" />
		<id>http://coffeeonthekeyboard.com/?p=268</id>
		<updated>2009-07-27T15:33:44Z</updated>
		<published>2009-07-20T03:52:28Z</published>
		<category scheme="http://coffeeonthekeyboard.com" term="Articles" /><category scheme="http://coffeeonthekeyboard.com" term="download" /><category scheme="http://coffeeonthekeyboard.com" term="plugin" /><category scheme="http://coffeeonthekeyboard.com" term="WordPress" />		<summary type="html"><![CDATA[By default, WordPress (at least in the current generation, 2.8) does not enable any kind of compression on its output. Some plugins, like WP Super Cache, add gzip compression, but that&#8217;s an awfully big plugin if all you want is compressed output.
So I wrote EzGz this afternoon. It is, by far, the simplest plugin I&#8217;ve [...]]]></summary>
		<content type="html" xml:base="http://coffeeonthekeyboard.com/ezgz-wordpress-gzip-plugin-268/">&lt;p&gt;By default, WordPress (at least in the current generation, 2.8) does not enable any kind of compression on its output. Some plugins, like &lt;a href="http://wordpress.org/extend/plugins/wp-super-cache/"&gt;WP Super Cache&lt;/a&gt;, add gzip compression, but that&amp;#8217;s an awfully big plugin if all you want is compressed output.&lt;/p&gt;
&lt;p&gt;So I wrote &lt;a href="http://jamessocol.com/projects/ezgz.php"&gt;EzGz&lt;/a&gt; this afternoon. It is, by far, the simplest plugin I&amp;#8217;ve ever written. The actual source is probably two orders of magnitude smaller than the comments (plugin details and &lt;a href="http://www.opensource.org/licenses/mit-license.php"&gt;the license&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;All EzGz does is enable the &lt;a href="http://www.php.net/ob_gzhandler"&gt;built-in PHP gzip/deflate handler&lt;/a&gt;. This does require output buffering, so it&amp;#8217;s not right for everyone. Some themes or other plugins may already do this.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve tried using the &lt;var&gt;zlib.output_compression&lt;/var&gt; ini setting, but on my server, with zlib working otherwise correctly, the setting had no effect. So I stuck with the output buffering.&lt;/p&gt;
&lt;p&gt;You can &lt;a href="http://jamessocol.com/projects/files/ezgz.zip"&gt;download it&lt;/a&gt;, or check it out of &lt;a href="svn://jamessocol.com/ezgz/trunk"&gt;svn&lt;/a&gt;, then turn it on and &lt;a href="http://www.whatsmyip.org/http_compression/"&gt;see if it works&lt;/a&gt;.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l3F2M08seZ4:-g3FbSVnFsI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l3F2M08seZ4:-g3FbSVnFsI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=l3F2M08seZ4:-g3FbSVnFsI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l3F2M08seZ4:-g3FbSVnFsI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l3F2M08seZ4:-g3FbSVnFsI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l3F2M08seZ4:-g3FbSVnFsI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=l3F2M08seZ4:-g3FbSVnFsI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l3F2M08seZ4:-g3FbSVnFsI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?a=l3F2M08seZ4:-g3FbSVnFsI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/coffeeonthekeyboard?i=l3F2M08seZ4:-g3FbSVnFsI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/coffeeonthekeyboard/~4/l3F2M08seZ4" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://coffeeonthekeyboard.com/ezgz-wordpress-gzip-plugin-268/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://coffeeonthekeyboard.com/ezgz-wordpress-gzip-plugin-268/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://coffeeonthekeyboard.com/ezgz-wordpress-gzip-plugin-268/</feedburner:origLink></entry>
	</feed>
