<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Owl&#039;s Portfolio</title>
	<atom:link href="http://www.owlfolio.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.owlfolio.org</link>
	<description></description>
	<lastBuildDate>Sun, 29 Aug 2010 06:17:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Data theft with CSS</title>
		<link>http://www.owlfolio.org/htmletc/css-data-theft/</link>
		<comments>http://www.owlfolio.org/htmletc/css-data-theft/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 23:54:07 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[HTML &c]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=818</guid>
		<description><![CDATA[Mozilla has released security updates to Firefox 3.5 and 3.6 that include defenses for an old, little-known, but serious security hole: cross-site data theft using CSS. These defenses have a small but significant chance of breaking websites that rely on &#8230; <a href="http://www.owlfolio.org/htmletc/css-data-theft/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Mozilla has released security updates to Firefox 3.5 and 3.6 that include defenses for an old, little-known, but serious security hole: cross-site data theft using CSS.  These defenses have a small but significant chance of breaking websites that rely on &#8220;<a href="http://www.quirksmode.org/css/quirksmode.html">quirks mode</a>&#8221; rendering <em>and</em> use a server in another DNS domain (e.g. a <a href="http://en.wikipedia.org/wiki/Content_delivery_network">CDN</a>) for their style sheets.</p>

<p>In this article I&#8217;ll describe the attack, what we&#8217;re doing about it, how you can ensure that your site will continue to work, and how you can protect your users who have not upgraded their browsers yet.</p>

<p><span id="more-818"></span></p>

<h2>The attack</h2>

<p>In a traditional <a href="http://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29">cross-site scripting</a> (XSS) attack, the attacker finds a way to inject JavaScript code fragments into a web page that they can&#8217;t read.  When a legitimate user of the targeted site loads the page, the attacker&#8217;s code executes.  It might send information back to the attacker&#8217;s servers, or it might forge commands to the targeted site.  CSS data theft also involves injecting strings into a page that the attacker can&#8217;t read, but this time, the strings are fragments of a style sheet. </p>

<p><a href="http://www.owlfolio.org/media/2010/06/steps.png"><img src="http://www.owlfolio.org/media/2010/06/steps.png" alt="Diagram of network traffic in a CSS data theft attack." title="Diagram of network traffic in a CSS data theft attack.  Click for full size." class="aligncenter"></a></p>

<p>The diagram above shows the course of a CSS data theft attack, from the perspective of a network hub that can see all the traffic.  Before the attack begins, a victim user (the laptop in the middle) logs into their favorite website, Clockworks (mockup icon, on the right).  Clockworks sends down a session cookie.</p>

<p>Some time later, while the victim is still logged into Clockworks, they click on an ad for dancing hamsters, and get sent to the attacker&#8217;s website (Badenov, on the left).  The attacker&#8217;s website sends down an innocent-looking webpage that contains a <code>&lt;link&gt;</code> tag whose URL points to the victim&#8217;s private-messages page at Clockworks.</p>

<p>The victim&#8217;s browser duly requests the private-messages page from Clockworks; since the victim is still logged in, it sends the session cookie, so the reply will include information meant only for the victim. The query string, chosen by the attacker, causes Clockworks&#8217; server to inject strings into the HTML on either side of an interesting piece of secret information.</p>

<p>Because the <em>attacker</em>&#8217;s website is being rendered in quirks mode, the victim&#8217;s browser ignores the <code>Content-Type</code> header and feeds HTML to the CSS parser.  Of course, the very first HTML tag in the file causes a CSS syntax error, but CSS has predictable, lenient rules for recovering from syntax errors.  The attacker&#8217;s injected strings make the CSS parser ignore most of the target page, and capture the secret as the value of the CSS <code>background</code> property.</p>

<p>Finally, since the <code>background</code> property applies to the <code>body</code> tag, the browser needs to download the image it specifies in order to render the attacker&#8217;s website.  The image URL has been wrapped around the secret information that the attacker wants.  So the browser sends that secret to the attacker&#8217;s server as a query string.</p>

<hr>

<p>This attack has been known for some time. The earliest public description I have found was <a href="http://www.greymagic.com/security/advisories/gm004-ie/">by GreyMagic Corporation in 2002</a>.  It has been rediscovered at least twice since then: <a href="http://www.hacker.co.il/security/ie/css_import.html">by Matan Gillon in 2005</a>, and <a href="http://d.hatena.ne.jp/ofk/20081111/1226407593">by pseudonymous blogger &#8216;ofk&#8217; in 2008</a> (article in Japanese).  There are many variations, some of which no longer work, and some of which only work in IE.  The variation I&#8217;ve described works everywhere that hasn&#8217;t deployed a defense; <a href="http://websec.sv.cmu.edu/">security researchers at CMU</a> were able to use this attack to steal the contents of private messages from a bulletin board and two different webmail providers, with victims using unpatched versions of all the popular browsers.</p>

<p>Since the attack relies on the CSS parser&#8217;s error recovery behavior, sites may be immune because of accidental properties of their page structure.  For instance, most browsers do not allow newlines in <code>url()</code> literals.  If there had been a newline in the middle of the secret information in the diagram, just because that&#8217;s the way Clockworks generates its HTML, the attack would only work against victims using IE.</p>

<h2>Browser-side defense</h2>

<p>This attack works because a webpage in quirks mode can load <em>anything</em> as a style sheet, even if it&#8217;s really a HTML page coming from someone else&#8217;s server.  If the attacker&#8217;s page were in standards mode, the browser would pay attention to the HTTP <code>Content-Type</code> header on the target page, declaring it not to be CSS, and refuse to load it as a style sheet.</p>

<p>The attacker, of course, controls whether their page is in quirks mode.  But the attacker&#8217;s page is on a different server than the target page, which means the attack can be blocked by an extension of the <a href="http://taossa.com/index.php/2007/02/08/same-origin-policy/">same-origin policy</a>.   Even if a page is in quirks mode, it&#8217;s not allowed to load a style sheet with a <code>Content-Type</code> header declaring it to be something other than CSS, unless that sheet comes from the same origin.  <a href="http://blog.mozilla.com/blog/2010/05/10/firefox-4-vision-fast-powerful-and-empowering/">Firefox 4</a> and <a href="http://ie.microsoft.com/testdrive/">IE 9</a> will implement this rule.</p>

<p>Unfortunately, there are a few websites out there that are rendered in quirks mode, and load their style sheets from a different origin, and put a <code>Content-Type</code> header on those style sheets that says they&#8217;re not CSS.  These sites aren&#8217;t common&#8212;the aforementioned CMU security researchers found 62 in the Alexa top 100,000, and most of those have been fixed already&#8212;but Firefox 4 and IE 9 will break them.</p>

<p>To give folks more time to fix their sites, while blocking the attack as soon as possible, we implemented a more lenient rule in <a href="http://releases.mozilla.org/pub/mozilla.org/firefox/releases/latest-3.5/">Firefox &ge;3.5.11</a> and <a href="http://releases.mozilla.org/pub/mozilla.org/firefox/releases/latest-3.6/">&ge;3.6.7</a>.  If a page is in quirks mode, loads a style sheet cross-origin, and that sheet has the wrong <code>Content-Type</code>, we&#8217;ll start parsing it as CSS anyway &#8230; but we&#8217;ll stop and throw the sheet away if we encounter a syntax error before the first complete rule has been parsed.  HTML tags cause CSS syntax errors, so unless the attacker can inject text at the very beginning of a page, they won&#8217;t be able to make the attack work.  Safari, Google Chrome, and Opera have also adopted this rule.</p>

<p>It&#8217;s possible that this rule could break sites too.  For instance, if a style sheet begins with an <code>@</code>-rule that Firefox 3.5 does not understand, that will count as a syntax error, and the sheet will be discarded.</p>

<p><strong><em>UPDATE: August 28:</em></strong> The <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#link-type-stylesheet">HTML5 spec for <code>&lt;link rel="stylesheet"&gt;</code></a> now requires the strict rule adopted by Firefox 4 and IE 9 (see <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=9834">HTML5 defect report 9834</a>).</p>

<h2>Fixing your website</h2>

<p>You only have to worry about your site being broken by the defense if you load your style sheets from a different server than the HTML <em>and</em> you use quirks mode.  If your site works with a <a href="http://releases.mozilla.org/pub/mozilla.org/firefox/releases/4.0b2/">Firefox 4 beta</a>, you&#8217;re fine.  Current versions of Firefox 3.5 and 3.6 will warn you in the <a href="https://developer.mozilla.org/en/error_console">error console</a> when they see a site that will break in Firefox 4, so you can also test that way.  (Unfortunately, due to limitations of our translation process, part of this warning will always be in English.)</p>

<p>If your site breaks, all you have to do to fix it is make sure that your style sheets are being served with <code>Content-Type: text/css</code> in the HTTP headers.  Please also consider switching to standards-mode rendering.  If you cannot fix your website, <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&#038;component=Style+System+%28CSS%29&#038;blocked=524223">we want to hear from you</a>.</p>

<h2>Protecting your users</h2>

<p>If a browser tries to load a style sheet, and the HTTP response it gets has no <code>Content-Type</code> header, it will just assume that it has been sent some CSS, even if it&#8217;s a cross-origin load.  Therefore, your users are not fully safe from the attack, even if they all have browsers with the defense, unless your servers put Content-Type headers on <strong>all content requiring authentication</strong>.  Check your web services as well as human-readable content.</p>

<p>You should also make sure that those headers are correct.  Most importantly, ensure that if your server can&#8217;t figure out what Content-Type to put on a response, it falls back to <code>application/&#8203;octet-stream</code> or <code>text/&#8203;plain</code>.  Certain other possibilities (for instance, <code>*/*</code> and <code>application/&#8203;x-unknown-content-type</code>) may be treated the same as if you hadn&#8217;t sent a <code>Content-Type</code> at all.</p>

<p>It is also vital to provide an accurate <code>charset=</code> option in your <code>Content-Type</code> headers for all textual data.  If you don&#8217;t, an attacker can <a href="http://openmya.hacker.jp/hasegawa/security/utf7cs.html">bypass your XSS filters</a> by encoding injected strings in UTF-7.  Declaring the charset in a <code>meta</code> tag or <code>&lt;?xml...?&gt;</code> instruction is <strong>not enough</strong> to defend against a CSS data theft attack encoded in UTF-7; the CSS parser doesn&#8217;t pay any attention to them.</p>

<p>To protect users that are still using browsers that have no defense against CSS data theft, you should block this attack in your filters for user-submitted content.  All you have to do is add <code>{</code>, <code>}</code>, and <code>@</code> to the set of characters that get replaced with equivalent HTML entities (<code>&amp;#123</code>, <code>&amp;#125</code>, and <code>&amp;#64;</code>, respectively).  If you can&#8217;t be sure that you are always producing <code>Content-Type</code> headers with the correct <code>charset=</code> option, you should also entity-encode <code>+</code> to <code>&amp;#43;</code>.</p>

<h2>More information</h2>

<p><a href="http://scarybeastsecurity.blogspot.com/2009/12/generic-cross-browser-cross-domain.html">Chris Evans rediscovered this exploit in late 2009</a> and has been instrumental in getting it fixed.  He has <a href="http://scarybeastsecurity.blogspot.com/2010/07/firefox-fixes-css-based-cross-origin.html">two other</a> <a href="http://scarybeastsecurity.blogspot.com/2010/08/internet-explorer-considered-harmful.html">blog posts</a> that go into more detail.  <a href="http://mayscript.com/blog/collinj/end-near-cross-origin-css-attacks">Collin Jackson</a> and his team at CMU have also been very helpful in understanding the full scope of the attack and ensuring all major browsers fixed it.  <a href="http://websec.sv.cmu.edu/css/css.pdf">Their paper</a> will appear at the <a href="http://www.sigsac.org/ccs/CCS2010/">ACM Computer and Communications Security conference</a> in October.</p>

<p>For technical details of the fixes, see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=524223">Mozilla bug 524223</a>, <a href="http://code.google.com/p/chromium/issues/detail?id=9877">Chromium bug 9877</a>, and <a href="https://bugs.webkit.org/show_bug.cgi?id=29820">Webkit bug 29820</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/htmletc/css-data-theft/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>the great 2010 ceramic objects giveaway</title>
		<link>http://www.owlfolio.org/ceramics/the-great-2010-ceramic-objects-giveaway/</link>
		<comments>http://www.owlfolio.org/ceramics/the-great-2010-ceramic-objects-giveaway/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 05:37:10 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Ceramics]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=810</guid>
		<description><![CDATA[My SO and I are moving. We have a whole lot of ceramic objects that we made. We would like to send them to people rather than find a new home for a giant stack of pottery in our new &#8230; <a href="http://www.owlfolio.org/ceramics/the-great-2010-ceramic-objects-giveaway/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm5.static.flickr.com/4005/4662273362_45c3efc8cc.jpg"> <img src="http://farm5.static.flickr.com/4031/4661652921_45a91191cc.jpg"></p>

<p>My SO and I are moving.  We have a whole lot of ceramic objects that we made. We would like to send them to people rather than find a new home for a giant stack of pottery in our new apartment. Please let us know what you want and we&#8217;ll send it to you!</p>

<p>Hers: <a href="http://www.flickr.com/photos/pamgriffith/sets/72157624185501258/">http://www.flickr.com/photos/pamgriffith/sets/72157624185501258/</a><br />
Mine: <a href="http://www.flickr.com/photos/zackw/sets/72157624186453266/">http://www.flickr.com/photos/zackw/sets/72157624186453266/</a></p>

<p>(Please post requests <i>on the Flickr pages for the objects you want</i>, if at all possible.)</p>

<p><b>[EDIT 23 Jun 2010:</b> This offer is no longer open. We have donated what hadn&#8217;t already been claimed to the San Jose chapter of <a href="http://www.emptybowls.net/">Empty Bowls</a>.<b>]</b></p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/ceramics/the-great-2010-ceramic-objects-giveaway/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>More on SSL errors</title>
		<link>http://www.owlfolio.org/htmletc/more-ssl-errors/</link>
		<comments>http://www.owlfolio.org/htmletc/more-ssl-errors/#comments</comments>
		<pubDate>Tue, 25 May 2010 23:11:52 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[HTML &c]]></category>

		<guid isPermaLink="false">http://www.owlfolio.org/?p=806</guid>
		<description><![CDATA[I got some great responses to my ideas for SSL errors and I thought I&#8217;d make a new post to talk about them, since that post is old enough that you can&#8217;t comment on it anymore. I should probably emphasize &#8230; <a href="http://www.owlfolio.org/htmletc/more-ssl-errors/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I got some great responses to my <a href="http://www.owlfolio.org/htmletc/ssl-errors/">ideas for SSL errors</a> and I thought I&#8217;d make a new post to talk about them, since that post is old enough that you can&#8217;t comment on it anymore.  I should probably emphasize up front that I&#8217;m not on Firefox&#8217;s UX team, I don&#8217;t know if they&#8217;re listening to my suggestions, and anyway they were meant as a starting point rather than completely finished designs.</p>

<p><a href="http://davidbolton.info/">David Bolton</a> wanted to know why some of the error screens asked the user to visit other sites manually, rather than doing checks behind the scenes.  The main reason, honestly, is that that made a good example thing the user could do next.  In practice we probably <em>would</em> want to do at least some checks in the background.  Right now, another reason would be that error pages do not have &#8220;chrome&#8221; privileges so they can&#8217;t do anything of the sort (this is part of why the certificate error screen pops up a separate dialog box if you say you want to add an exception) but we may be able to get around that in a real implementation.</p>

<p><a href="http://www.johnjbarton.com/">John Barton</a>, in email, points out that SSL errors often come up in practice because of server-side configuration changes that ought to have been transparent to users, but a sysadmin goofed.  I&#8217;ve been using the <a href="https://addons.mozilla.org/en-US/firefox/addon/6415/">Certificate Patrol</a> extension, which brings up warnings when a site&#8217;s cert changes in any way; this reveals that cert handling mistakes happen even on very popular and well-staffed sites (recently, for instance, <code>mail.google.com</code> flipped back and forth between its own cert and the generic <code>*.google.com</code> cert several times in one day).  Of course <em>that</em> would have been invisible to most people, but it&#8217;s not much harder to make mistakes that do trigger warnings in a stock browser.</p>

<p>My general feeling on that is, yes, it is way too hard to administer an SSL-encrypted web site, and I would wholeheartedly support an initiative to make it easier, especially for sites that carry information of only moderate sensitivity (e.g. the plethora of Bugzilla instances with self-signed certs out there in the wild).  I don&#8217;t think that should stop us from raising the visibility of SSL administration mistakes, as long as we improve the presentation and advice on those mistakes so we are not just training people to click through the errors.</p>

<p>John also points out that most people won&#8217;t have any idea what &#8220;<a href="http://www.herdict.org/">Herdict</a>&#8221; is or why they are trustworthy.  The explicit mention of Herdict was mainly because I was riffing off Boriss&#8217; earlier <a href="http://jboriss.wordpress.com/2010/01/04/herdict-and-its-tasty-anonymized-aggregated-data/">proposal to use Herdict information to improve page not found errors</a>.  Indeed, we should probably put it more like &#8220;Other people who try to visit this website get (something) which (is/isn&#8217;t) what you got.&#8221;  We should credit whatever service we use for that information, but it doesn&#8217;t have to be as prominent as I made it.</p>

<p>Someone else (whose name I have lost; sorry, whoever you were!) pointed me at the <a href="http://www.cs.cmu.edu/~perspectives/">Perspectives</a> extension, which is said to do more or less exactly what I proposed, as far as comparing certificates seen by the user with those seen by &#8220;notaries&#8221; at other network locations.  I like the use of the term &#8220;notary&#8221; and the proof of concept; unfortunately, Perspectives seems not to be actively maintained at the moment, and doesn&#8217;t work with Firefox 3.6.  Also, for privacy, we want to make the queries to the notaries as uninformative as possible to an adversary that can observe network traffic.  Reusing the same system that is used for &#8220;is this site down?&#8221; requests would help there.  (Ideally, the <em>notaries</em> would also be unable to tell which users are asking what about which sites, but that might not be tractable.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/htmletc/more-ssl-errors/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Another site redesign</title>
		<link>http://www.owlfolio.org/administrivia/another-site-redesign/</link>
		<comments>http://www.owlfolio.org/administrivia/another-site-redesign/#comments</comments>
		<pubDate>Mon, 24 May 2010 23:46:15 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Administrivia]]></category>

		<guid isPermaLink="false">http://owl-folio.nfshost.com/?p=800</guid>
		<description><![CDATA[This site is now running on WordPress rather than the creaky combination of Ikiwiki and comment software of my own invention. Things generally look nicer, in my opinion, and should also be more reliable. I apologize in advance if this &#8230; <a href="http://www.owlfolio.org/administrivia/another-site-redesign/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This site is now running on <a href="http://wordpress.org/">WordPress</a> rather than the creaky combination of <a href="http://ikiwiki.info">Ikiwiki</a> and comment software of my own invention.  Things generally look nicer, in my opinion, and should also be more reliable.</p>

<p>I apologize in advance if this causes the RSS feed to spew old posts all over <a href="http://planet.mozilla.org">Planet Mozilla</a> or your feed reader.  I hope it won&#8217;t, but you never know with RSS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/administrivia/another-site-redesign/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Twit Cleaner</title>
		<link>http://www.owlfolio.org/uncat/twitcleaner/</link>
		<comments>http://www.owlfolio.org/uncat/twitcleaner/#comments</comments>
		<pubDate>Tue, 11 May 2010 03:41:33 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://owl-folio.nfshost.com/?p=3</guid>
		<description><![CDATA[(notes on behavioral categorization of Twitter accounts) I don&#8217;t follow a lot of people on Twitter, but I still sometimes have trouble deciding whether the accounts I&#8217;m following are worth it. Folks with much longer follow lists presumably have even &#8230; <a href="http://www.owlfolio.org/uncat/twitcleaner/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>(notes on behavioral categorization of Twitter accounts)</h2>

<p>I don&#8217;t follow a lot of people on Twitter, but I still sometimes have
trouble deciding whether the accounts I&#8217;m following are worth it.
Folks with much longer follow lists presumably have even harder going.</p>

<p>Enter <a href="http://thetwitcleaner.com/">The Twit Cleaner</a>, a service that scans your follow list and
automatically categorizes the behavior of everyone on it.  They have
some straightforward heuristics for deciding whether someone is worth
following, mostly documented in <a href="http://thetwitcleaner.com/faq.php">their FAQ</a>:</p>

<blockquote>
  <p><strong>Q.</strong> How are the (potential) bad guys broken down?</p>
  
  <p><strong>A.</strong> The possible categories are:<br>
  <strong>Dodgy</strong> &#8211; spam phrases, @ spamming, duplicate links etc<br>
  <strong>Absent</strong> &#8211; No updates in a month, or fewer than 10 tweets.<br>
  <strong>Repetitive</strong> &#8211; High numbers of duplicate tweets or links<br>
  <strong>Flooding</strong> &#8211; So high volume you can&#8217;t see anyone else<br>
  <strong>Non-Responsive</strong> &#8211; No interaction &#038; those that follow back &lt; 10%<br>
  <strong>Little New Content</strong> &#8211; Retweeting lots or just posting quotes</p>
</blockquote>

<p>This is generally a good scheme, but its focus on conversational use
of Twitter means that it misidentifies a few types of legitimate
account as unsavory.  I think a few special case categories would go a
long way to making the service&#8217;s advice more useful.</p>

<h3>Announcement channels</h3>

<p>These are the Twitter equivalent of a news ticker&#8212;they broadcast
announcements related to something, but they don&#8217;t converse with
people (as a general rule).  The Cleaner dings them as &#8220;dodgy
behavior: tweeting the same links all the time&#8221; and/or &#8220;not
interactional: hardly follow anyone.&#8221;  Examples include
<a href="http://twitter.com/NBCOlympics">@NBCOlympics</a>, <a href="http://twitter.com/CDCemergency">@CDCemergency</a>, <a href="http://twitter.com/asym">@asym</a>, <a href="http://twitter.com/Astro_Soichi">@Astro_Soichi</a>, and
(ironically) <a href="http://twitter.com/TheTwitCleaner">@TwitCleaner</a> itself (the problem here appears to be
public &#8220;@somebody, your report is ready at <url>&#8221; directed tweets when
direct messages fail).</p>

<p>These can probably be machine-identified as extreme outliers in
follower-to-followed ratio.  <a href="http://twitter.com/asym">@asym</a> and <a href="http://twitter.com/Astro_Soichi">@Astro_Soichi</a> don&#8217;t
follow <em>anyone</em>; <a href="http://twitter.com/NBCOlympics">@NBCOlympics</a> and <a href="http://twitter.com/CDCemergency">@CDCemergency</a> follow less
than 0.1% of their follower numbers.  <a href="http://twitter.com/TheTwitCleaner">@TwitCleaner</a> likes to follow
users of the service, though; maybe they should just whitelist
themselves?  Also, if <a href="https://twitter.com/help/verified">Twitter-verified users</a> are not already
whitelisted (I wasn&#8217;t able to tell from my own report), perhaps they
should be.</p>

<h3>Lurkers</h3>

<p><a href="http://en.wikipedia.org/wiki/Lurker">Lurkers</a> are the opposite of announcement channels: they just read
Twitter, they never post anything.  Lurking is a time-honored
tradition on the Internet and people shouldn&#8217;t be penalized for it.  I
have several lurkers on my follow list just on the off chance that
they might start posting in the future.</p>

<p>Accounts that have never posted at all should be distinguished from
accounts that post rarely.  (The latter are often spammers.  Lately
Twitter itself has gotten a lot better about finding and banning
spammers, but they still turn up now and then.)</p>

<h3>Fictional character accounts</h3>

<p>There are any number of fictional characters who regularly use Twitter&#8212;that
is, their authors write and post tweets under their names,
usually to provide a bonus story line, or to implement the <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/FourthWallMailSlot">fourth
wall mail slot</a>.  Examples include <a href="http://twitter.com/Othar">@Othar</a> of <a href="http://www.girlgeniusonline.com/">Girl Genius</a> and
the <a href="http://twitter.com/jephjacques/qccast/">entire cast</a> (caution: mildly NSFW; @pintsize0101 consistently
links to egregiously NSFW images of the &#8220;where&#8217;s my brain bleach&#8221;
variety) of <a href="http://www.questionablecontent.net/">Questionable Content</a>.  Fictional characters may absent
themselves for long periods because the bonus story line is on hold
(Othar recently didn&#8217;t post anything for four months but is now back)
and might not follow anyone but other characters from the same
fictional world (the QC cast does this); both things get them unfairly
dinged by the Cleaner.</p>

<p>It probably isn&#8217;t possible to identify fictional accounts in a
mechanical way.  However, you could pick out <a href="http://en.wikipedia.org/wiki/Clique_%28graph_theory%29">cliques</a> in the
follow graph, sets of accounts that are followed by many but that
follow no one but each other, as deserving human attention.  If
Twitter implemented some sort of account-labeling scheme that would
let the people behind the curtain mark accounts as fictional
characters, that would be awesome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/uncat/twitcleaner/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Review of Brütal Legend</title>
		<link>http://www.owlfolio.org/game/brutal-legend/</link>
		<comments>http://www.owlfolio.org/game/brutal-legend/#comments</comments>
		<pubDate>Sat, 01 May 2010 00:00:57 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://owl-folio.nfshost.com/?p=7</guid>
		<description><![CDATA[Here we go with another entry in the occasional series of reviews of games that everyone has already played (because I refuse to pay more than US$20 for a game, and new releases cost $60 these days). This time, it&#8217;s &#8230; <a href="http://www.owlfolio.org/game/brutal-legend/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here we go with another entry in the occasional series of reviews of
games that everyone has already played (because I refuse to pay more
than US$20 for a game, and new releases cost $60 these days).  This
time, it&#8217;s <a href="http://kotaku.com/5380416/brutal-legend-review-testing-its-metal">Brütal Legend</a>, Tim Schafer&#8217;s epic about love, justice,
and the power of rock and roll, set in the land of all album covers,
starring Jack Black and a whole bunch of heavy metal musicians as
themselves.</p>

<p>This game is worth playing just for the chance to drive the
protagonist&#8217;s hot rod around and see all the epic scenery.  The art
department had <em>fun</em> with this game.  So did the character modelers.
They licensed about a hundred classic metal tracks for the background
music, which means it&#8217;s thematically appropriate, and never gets
repetitive enough to earworm you.  (The magical guitar solos, on the
other hand, I got a bit tired of.)  The gameplay itself is a little
spotty, but I think that&#8217;s been well covered elsewhere.  My main beef
was with poor integration of the side quests into the story line&#8212;you
don&#8217;t benefit much from doing them, even though they could have added
quite a bit of interest and strategic ramification.  The up side of
that, though, is that I never felt like I was being forced to
level-grind.  There was one infuriating point where me and Pam spent
<em>three hours</em> losing one stage battle over and over again, but that
was because we were doing it wrong.</p>

<p>So that&#8217;s all good, but now I want to complain, at length, about the
storyline.</p>

<p><span id="more-7"></span></p>

<h2>I am about to spoil the ENTIRE PLOT.  You have been warned.</h2>

<p>Problem numero uno is, of course, that the entire Drowning Doom arc
could have been avoided if Eddie hadn&#8217;t picked up the <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/IdiotBall">idiot ball</a>
upon overhearing Doviculus in the ruins of Lionwhyte&#8217;s castle.  Eddie
is genre-savvy enough that he should have assumed Doviculus knew they
were there and was deliberately trying to deceive them.  (I think
Doviculus doesn&#8217;t ever <em>lie</em> in the technical sense, but I think we
all know just how little that means.)  Eddie is level-headed enough to
be head roadie for a boyband whose members are all too dumb to live.
Eddie is perfectly aware that Lita is wound way too tight, has issues
with Ophelia, and has just had to watch her brother get killed.  Eddie
isn&#8217;t the kind of asshole who claims to trust someone when nobody else
does, in order to get them into bed.  Ditching Ophelia was way the
hell out of character.  Yeah, she&#8217;s clearly not telling him something
important, but I see his in-character reaction as something like &#8220;Now
is not the time for this, but when we get somewhere safe, you and me
and Lita are going to sit down and have a long talk.  I still trust
you, but I need you to trust me with the whole story.&#8221;  This does take
away Doviculus&#8217; big reveal at the end, but screw him, why should the
antagonist always get the big reveal?</p>

<p>It&#8217;s not like there was no other way to arrange for the &#8220;Metal versus
Goth&#8221; battles, either.  The most obvious fix would be for the
protagonists to decide they have to have the power of the Sea of Black
Tears to stand a chance against the Tainted Coil.  It&#8217;s Ophelia who
has the best odds of being able to control it, but at first she can&#8217;t,
and they have to fight her a bit.  Or else it&#8217;s Lita who loses it and
throws herself into the Sea.  Either way, this probably couldn&#8217;t have
been dragged out as far as the as-written storyline did, but the
Tainted Coil deserved a bit more screen time as the immediate enemy,
anyway.  And would it not have been <em>even more awesome</em> if Ironheade
and the Drowning Doom could have teamed up?</p>

<p>I was also disappointed in the, um, complete lack of closure at the
end of the game.  Okay, Drowned Ophelia was a doppelganger created by
the Sea of Black Tears, and now we have the real one back, but it was
the real Ophelia who got ditched in the snow outside the ruined,
demon-infested castle.  I&#8217;d expect her to be more than a little angry
and hurt, still.  The antagonist leaders are all dead but all four
armies still have squads running around the map attacking each other,
with no explanation given. In the closing sequence Eddie drives off
into the sunset, without Ophelia (wtf?), we see her shed one black
tear (I have to assume this is a sequel hook because otherwise it
makes no sense), and after that all the protagonists are off in their
own corners of the map and you can have a little wordless scene with
each one, but that&#8217;s it.  Yeah, they&#8217;re giving you a chance to drive
around and finish up side-quests, ok.  Still not <em>satisfying</em>, and I
cannot be bothered to get to 100% completion just to see if there&#8217;s
another cutscene.  (Might be different if someone assured me there
<em>was</em> another cutscene, although maybe I should just go find it on
Youtube.)</p>

<p>Even if these small-scale plot problems were resolved, it doesn&#8217;t seem
to me that the story that the game tells is the story it should have
told.  Is the ultimate metal epic really just about how generic
bondage demons manipulate power metal musicians into fighting first
their hair metal counterparts and then some goths?  I don&#8217;t <em>think</em>
so.  It&#8217;s not about subgenres of rock fighting each other, it&#8217;s not
about rock and roll versus the blues, it&#8217;s not both of those versus
country and western, it&#8217;s not even about electric versus acoustic.
(Although it certainly could <em>appear</em> to be about each of these in
turn, as we peel back layer upon layer of manipulative level bosses.)
The ultimate metal epic ought to be about nothing less than good music
versus bad music; to be precise, Music With Rocks In versus Extruded
Music Product.  Eddie, Ophelia, Lars, and Lita travel the land
assembling a motley crew (pun intended) of every kind of musician who
ever played, because no lesser force can stand against the ultimate
evil.  And what could that be but &#8230; the record industry?  (It occurs
to me that this is the plot of <em><a href="http://www.wwry-london.co.uk/index.php?page=general-info">We Will Rock You</a></em>, and that&#8217;s just
about right.)</p>

<p>I&#8217;m not sure there&#8217;s a place for the Tainted Coil in a game that&#8217;s
telling that story, but you know, I&#8217;m okay with that.  They weren&#8217;t
that interesting.  I&#8217;d rather have had more shout-outs to the great
heroes of music, anyway.  Where were Freddie Mercury and Janis Joplin
and John Lennon and Bob Marley? Buddy Holly? B.B. King? Heck, where
was Leo Fender?  (Okay, Leo Fender was probably one of the Titans.
BUT STILL.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/game/brutal-legend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mozilla Co. conference rooms</title>
		<link>http://www.owlfolio.org/htmletc/moco-conf-rooms/</link>
		<comments>http://www.owlfolio.org/htmletc/moco-conf-rooms/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 00:00:08 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[HTML &c]]></category>

		<guid isPermaLink="false">http://owl-folio.nfshost.com/?p=10</guid>
		<description><![CDATA[The Mozilla Corporation&#8217;s new(ish) office in downtown Mountain View has all its third-floor conference rooms named after Internet memes, except those that are named after rooms aboard the starship Enterprise. I&#8217;d like to share them with you now. Small conference &#8230; <a href="http://www.owlfolio.org/htmletc/moco-conf-rooms/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.mozilla.com">Mozilla Corporation</a>&#8217;s new(ish) office in
downtown Mountain View has all its third-floor conference rooms named
after Internet memes, except those that are named after rooms aboard
the <a href="http://www.startrek.com/startrek/view/library/ships/article/70377.html">starship Enterprise</a>.
I&#8217;d like to share them with you now.</p>

<h2>Small conference rooms (memes)</h2>

<ul>
<li><a href="http://www.youtube.com/watch?v=qItugh-fFgg">All your base</a></li>
<li><a href="http://bikeshed.com/">Bike</a> <a href="http://en.wikipedia.org/wiki/Parkinson%27s_Law_of_Triviality">shed</a> (used as a storage area for a while)</li>
<li><a href="http://www.chucknorrisfacts.com/">Chuck Norris</a></li>
<li><a href="http://www.burningpixel.com/baby/babymus1.htm">Dancing Baby</a></li>
<li><a href="http://www.albinoblacksheep.com/flash/end">End of the World</a></li>
<li><a href="http://failblog.org/">Fail</a></li>
<li><a href="http://babychoppa.ytmnd.com/">Get to da choppa</a></li>
<li><a href="http://www.webhamster.com/">Hampster Dance</a></li>
<li><a href="http://icanhascheezburger.com/2007/01/11/i-can-has-cheezburger-3/">Icanhascheezburger</a></li>
<li><a href="http://sendables.jibjab.com/">Jibjab</a></li>
<li><a href="http://www.youtube.com/watch?v=J---aiyznGQ">Keyboard Cat</a></li>
<li><a href="http://www.youtube.com/watch?v=LkCNJRfSZBU">Leeroy Jenkins</a></li>
<li><a href="http://www.ebaumsworld.com/pictures/view/80663982/">Mullets Galore</a></li>
<li><a href="http://www.newgrounds.com/portal/view/206373">Numa Numa</a></li>
<li><a href="http://www.hjo3.net/orly/gallery1.htm">Orly</a></li>
<li><a href="http://www.youtube.com/watch?v=s8MDNFaGfT4">Peanut butter jelly</a></li>
<li><a href="http://www.urbandictionary.com/define.php?term=QQ">Q</a><a href="http://www.qq.com/">Q</a></li>
<li><a href="http://www.youtube.com/watch?v=oHg5SJYRHA0">Rick</a><a href="http://xkcd.com/524/">roll</a></li>
<li><a href="http://www.homestarrunner.com/sbemail.html">Strong Bad</a></li>
<li><a href="http://www.tronguy.net/">Tron Guy</a></li>
<li><a href="http://www.albinoblacksheep.com/flash/showdown">Ultimate</a></li>
<li><a href="http://en.wikipedia.org/wiki/Very_good_very_mighty">Very good, very mighty</a></li>
<li><a href="http://failblog.org/">Win</a></li>
<li><a href="http://www.newgrounds.com/collection/xiaoxiao">Xiao Xiao</a></li>
<li><a href="http://www.youtube.com/watch?v=rW6M8D41ZWU">Yatta</a></li>
<li><a href="http://www.zombo.com/">Zombocom</a></li>
</ul>

<h2>Large conference rooms (Star Trek)</h2>

<ul>
<li><a href="http://memory-alpha.org/wiki/Ten_Forward">10 Forward</a> (break room)</li>
<li><a href="http://memory-alpha.org/wiki/Holodeck">Holodeck</a></li>
<li><a href="http://memory-alpha.org/wiki/Bridge">The Bridge</a></li>
<li><a href="http://memory-alpha.org/wiki/Warp_core">Warp core</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/htmletc/moco-conf-rooms/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Switching comment systems</title>
		<link>http://www.owlfolio.org/administrivia/switching-comment-systems/</link>
		<comments>http://www.owlfolio.org/administrivia/switching-comment-systems/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 17:53:02 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Administrivia]]></category>

		<guid isPermaLink="false">http://owl-folio.nfshost.com/?p=736</guid>
		<description><![CDATA[I&#8217;m switching Owl&#8217;s Portfolio over to a new comment system of my own invention, which will allow me to turn comments back on without (I hope) immediately being inundated with spam. For the next few hours, though, all of the &#8230; <a href="http://www.owlfolio.org/administrivia/switching-comment-systems/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m switching Owl&#8217;s Portfolio over to a new comment system of my own
invention, which will allow me to turn comments back on without (I hope)
immediately being inundated with spam.  For the next few hours, though,
all of the comments made with the old system will temporarily vanish.</p>

<p>The management hopes this is not a horrible inconvenience for the two or
three people still reading this site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/administrivia/switching-comment-systems/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Better SSL error screens</title>
		<link>http://www.owlfolio.org/htmletc/ssl-errors/</link>
		<comments>http://www.owlfolio.org/htmletc/ssl-errors/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 21:11:41 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[HTML &c]]></category>

		<guid isPermaLink="false">http://owl-folio.nfshost.com/?p=745</guid>
		<description><![CDATA[Right now, when you visit a website that uses encryption in Firefox and there&#8217;s anything at all wrong with the encrypted connection, you get this screen: This is a big block of jargon which doesn&#8217;t do anything to tell the &#8230; <a href="http://www.owlfolio.org/htmletc/ssl-errors/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Right now, when you visit a website that uses encryption in Firefox
and there&#8217;s anything at all wrong with the encrypted connection, you
get this screen:</p>

<p><a href="http://owl-folio.nfshost.com/media/2010/05/mockup-current.html"><img src="http://owl-folio.nfshost.com/media/2010/05/mockup-current-300x169.png" alt="The current SSL warning screen, which is generic and uninformative unless you know how to read SSL certificates already" title="Current SSL warning" width="300" height="169" class="aligncenter size-medium wp-image-749" /></a></p>

<p>This is a big block of jargon which doesn&#8217;t do anything to tell the
user how big the risk actually is, or help them distinguish a minor
problem from a major one. If you click on &#8220;technical details&#8221; you get
a little bit more information about what went wrong, but it still
doesn&#8217;t make any effort to give advice.</p>

<p>The Firefox UI team has been talking about using <a href="http://www.herdict.org/web/">Herdict</a> or a
similar service to <a href="http://jboriss.wordpress.com/2010/01/04/herdict-and-its-tasty-anonymized-aggregated-data/">improve network error screens</a>,
especially the <a href="http://www.toolness.com/wp/?p=772">site not found screen</a>.  I think we
could get a lot of mileage out of that for SSL errors as well.  We
should also make use of the user&#8217;s history with the site, and pay
attention to what exactly is wrong with the credential.  Here are some
examples.</p>

<p><a href="http://owl-folio.nfshost.com/media/2010/05/mockup-selfsigned.html"><img src="http://owl-folio.nfshost.com/media/2010/05/mockup-selfsigned-300x210.png" alt="Proposed warning screen for a website with a self-signed certificate" title="Self-signed certificate" width="300" height="210" class="aligncenter size-medium wp-image-747" /></a></p>

<p>The only problem with self-signed certificates is they <em>haven&#8217;t</em> been
signed by a trusted third party.  The connection is secure, but you
might not be talking to who you think you are.  In the first section,
we emphasize that the concern here is with identity, and we use
Herdict information to deduce that this is probably <em>not</em> a hijacked
site, because lots of people get the same credential.  (&#8220;The same
credential&#8221; means <em>exactly</em> the same, not just some self-signed cert,
but we needn&#8217;t bother people with that unless they want to see the
details.)</p>

<p>In the &#8220;What should I do?&#8221; section, we give some examples of things
that might be unsafe to trust this site with, but we <strong>go ahead and
let them visit the site</strong>, automatically storing the self-signed cert
and marking it valid for this site only.  We implement <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=251407">bug 251407</a>,
so we can promise to notify the user if the site&#8217;s credentials change
in the future.</p>

<p>I&#8217;ve front-loaded the information that used to be in the &#8220;technical
details&#8221; section, so it has been replaced with &#8220;Inspect the
Credentials&#8221;.  If you open that area up, it shows the certificate, but
in a more user-friendly way than the existing certificate dialog box
does.  Especially important here is to reveal the interesting parts
immediately, highlight suspicious things, and deemphasize the jargon
and the long hexadecimal numbers.</p>

<p>&#8220;I understand the risks&#8221; is still there, but in this case, it&#8217;s for
people who didn&#8217;t read the rest of the page.  It&#8217;s meant to make
people stop, slow down, and reread.  If you click on it you get
another link to the page.</p>

<p><a href="http://owl-folio.nfshost.com/media/2010/05/mockup-tampering.html"><img src="http://owl-folio.nfshost.com/media/2010/05/mockup-tampering-300x204.png" alt="Proposed warning screen when connection tampering has been detected" title="Connection tampering detected" width="300" height="204" class="aligncenter size-medium wp-image-746" /></a></p>

<p>There are exploits in the wild that take over your WiFi hub, or your
cable modem.  Once they&#8217;ve done that, they are in a position to tamper
with all your Internet traffic.  I ran into one of these for reals
last week; I was in a café and getting certificate errors on <em>every</em>
secure site I tried to visit, including Mozilla&#8217;s mail server.  (The
theory is that you&#8217;ll just click through the error messages because
you want to get your email, or whatever; one of the staff at the café
did just that when I complained.)  Here&#8217;s where Herdict could really
come in handy: if <em>you</em> are getting certificate errors but nobody else
is, we can deduce a problem near your computer.</p>

<p>Again, the first section tries to be clear and specific about the
problem: we suspect that someone is tampering with your Internet
connection, and here is why.  The second section underlines how big a
deal this is: &#8220;Do not log into any site or buy anything online.&#8221;  It
then suggests a test: visit another secure website and see if the
problem persists.  This scenario should put the whole browser into a
paranoid mode, where it will not load saved passwords and continues to
try to work out whether there&#8217;s something wrong with the local router.
Ultimately, we should advise people in this boat to factory-reset
their WiFi hub and/or contact their ISP for help, but we should take
care to be certain in our diagnosis first.</p>

<p>In this scenario, the &#8220;I understand the risks&#8221; section gives you
access to the certificate-exception dialogs, as it does now.</p>

<p><a href="http://owl-folio.nfshost.com/media/2010/05/mockup-hijack.html"><img src="http://owl-folio.nfshost.com/media/2010/05/mockup-hijack-300x204.png" alt="Proposed warning screen for a website whose server may have been hijacked" title="Hijacked server" width="300" height="204" class="aligncenter size-medium wp-image-748" /></a></p>

<p>Finally, here&#8217;s what it looks like in the comparatively rare scenario
that SSL certificates were originally intended to defend against: the
server has been hijacked (but the attackers do not have access to the
cert).  We can tell from browser history that the cert has changed,
and we can tell from Herdict that it has changed for everyone.  We
tell the user not to visit <em>this</em> website, and again, suggest trying
another secure site.  (We need to take care to distinguish this case
from an expired or legitimately changed cert.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/htmletc/ssl-errors/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Print-on-demand mugs are not dishwasher safe</title>
		<link>http://www.owlfolio.org/ceramics/podmug/</link>
		<comments>http://www.owlfolio.org/ceramics/podmug/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 18:54:31 +0000</pubDate>
		<dc:creator>Zack Weinberg</dc:creator>
				<category><![CDATA[Ceramics]]></category>

		<guid isPermaLink="false">http://owl-folio.nfshost.com/?p=738</guid>
		<description><![CDATA[This mug was designed by Steven Frank and printed by Zazzle. The top part of the design was much darker six months ago. Zazzle&#8217;s process appears to involve shrink-wrapping a layer of plastic over the mug and then printing on &#8230; <a href="http://www.owlfolio.org/ceramics/podmug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/zackw/4264349109/"><img
src="http://farm5.static.flickr.com/4070/4264349109_5cece54246_m.jpg"
width="240" height="234" alt="Photo of faded print-on-demand mug"></a></p>

<p>This mug was designed by <a href="http://www.zazzle.com/stevenfrank">Steven Frank</a> and printed by <a href="http://www.zazzle.com/">Zazzle</a>.
The top part of the design was much darker six months ago.  Zazzle&#8217;s
process appears to involve shrink-wrapping a layer of plastic over the
mug and then printing on that; you can&#8217;t see it in the photo, but the
plastic has started to peel off near the top of the handle.  I have
another such mug, printed using a different process in 2003 for the
<a href="http://www.stanford.edu/group/sfs/">Stanford Film Society</a>&#8217;s &#8220;Film Our Way&#8221; festival; it didn&#8217;t fade
nearly as fast, and there wasn&#8217;t any plastic to peel off, but after
seven years of use the design is almost gone.</p>

<p>The problem with these mugs is, the design is printed on top of the
glaze.  Truly permanent decorations on ceramic are either done with
the glaze itself, or are inked directly on the unglazed piece and then
covered by transparent glaze.  Either way, the decoration happens
<em>before</em> the glaze firing.  Unfortunately, glaze kilns are typically
designed to process hundreds of pieces per batch, and take several
days to go through a complete cycle.  That&#8217;s not practical for a
print-on-demand outfit.</p>

<p>I think you could design a much smaller kiln, with space for just a
few mugs, though.  It&#8217;d be lined with fiberglass instead of firebrick,
to reduce the thermal mass; since there&#8217;s no need for a reduction
phase with clear glazes, it could use electric heat.  It&#8217;s not
possible to do a stoneware firing in less than about 24 hours start to
finish, because the clay will crack if you heat or cool it too fast
(this is why <a href="http://en.wikipedia.org/wiki/Raku_ware">raku</a>-glaze pieces are often fragile) but there would
be no need for several days&#8217; worth of cooling time as is typical for
large batch kilns.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owlfolio.org/ceramics/podmug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
