<?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>K-Squared Ramblings &#187; webdev</title>
	<atom:link href="http://www.hyperborea.org/journal/tag/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hyperborea.org/journal</link>
	<description>Sci-fi, comics, humor, photos...it&#039;s all fair game.</description>
	<lastBuildDate>Sat, 04 Feb 2012 06:27:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Webkit display:table-cell Problem</title>
		<link>http://www.hyperborea.org/journal/2010/05/webkit-displaytable-cell-problem/</link>
		<comments>http://www.hyperborea.org/journal/2010/05/webkit-displaytable-cell-problem/#comments</comments>
		<pubDate>Wed, 05 May 2010 02:30:00 +0000</pubDate>
		<dc:creator>Kelson</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.hyperborea.org/journal/?p=8025</guid>
		<description><![CDATA[I recently tried to retrofit a mobile layout onto an old table-based site using CSS. It was a fairly simple layout: A banner across the top, two columns, and a footer. I figured I&#8217;d use CSS to &#8220;unwrap&#8221; the table &#8230; <a href="http://www.hyperborea.org/journal/2010/05/webkit-displaytable-cell-problem/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hyperborea.org/journal/wp-content/uploads/2010/05/testcase-table.jpg"><img src="http://www.hyperborea.org/journal/wp-content/uploads/2010/05/testcase-table-150x150.jpg" alt="" title="Testcase: Unmodified Table" width="150" height="150" class="alignleft size-thumbnail wp-image-8037" /></a>I recently tried to retrofit a mobile layout onto an old table-based site using CSS.  It was a fairly simple layout: A banner across the top, two columns, and a footer.  I figured I&#8217;d use CSS to &#8220;unwrap&#8221; the table and make the sidebar and main content area into full-width sections instead of side-by-side columns.</p>
<p><a href="http://www.hyperborea.org/journal/wp-content/uploads/2010/05/testcase-block-firefox.jpg"><img src="http://www.hyperborea.org/journal/wp-content/uploads/2010/05/testcase-block-firefox-150x150.jpg" alt="" title="Testcase: Block / Firefox" width="150" height="150" class="alignright size-thumbnail wp-image-8036" /></a>In theory this should be simple: CSS handles tables by using the <code>display</code> property and assigning it <code>table</code>, <code>table-row</code> and <code>table-cell</code> for the <code>&lt;table&gt;</code>, <code>&lt;tr&gt;</code> and <code>&lt;td&gt;</code> elements.  You can assign these properties to other elements and make them act as tables, or you can assign <code>block</code> or <code>inline</code> to these elements and make the table act like a series of paragraphs.</p>
<p><a href="http://www.hyperborea.org/journal/wp-content/uploads/2010/05/testcase-block-chrome.jpg"><img src="http://www.hyperborea.org/journal/wp-content/uploads/2010/05/testcase-block-chrome-150x150.jpg" alt="" title="Testcase: Block (Chrome)" width="150" height="150" class="alignleft size-thumbnail wp-image-8031" /></a>Initial testing worked perfectly in Firefox&nbsp;3.6 and Opera&nbsp;10.5x.  Internet Explorer&nbsp;8, as expected, ignored the changes entirely.  Chrome, however, did something very strange, and Safari reacted the same way: The banner shrank, and the columns changed from a narrow sidebar to a 50/50 split&#8230;making it actually <em>worse</em> for small screens.</p>
<p>Clearly WebKit didn&#8217;t like something I was doing.  Unfortunately, WebKit powers the exact platforms I was targeting: the iPhone and Android!</p>
<p>I dug around with the developer tools a bit to see if I could figure out what was going on. Was the browser not applying the property? Were the table cells inheriting the &#8220;original&#8221; property from somewhere else? Did I need to change properties on <code>thead</code> and <code>tbody</code> as well?</p>
<p><a href="http://www.hyperborea.org/journal/wp-content/uploads/2010/05/testcase-inline-chrome.jpg"><img src="http://www.hyperborea.org/journal/wp-content/uploads/2010/05/testcase-inline-chrome-150x150.jpg" alt="" title="Testcase: Inline / Chrome" width="150" height="150" class="alignright size-thumbnail wp-image-8033" /></a>What I found was that WebKit did recognize the <code>display:block</code> I had added, but somehow the computed style was reverting to <code>display:table-cell</code>.  This only applied to <code>table</code> and <code>td</code>, though.  Table rows actually did what I told them to, which was why the result ended up looking bizarre.</p>
<p>If it hadn&#8217;t changed anything, I probably would have chalked it up to the capability just not being implemented yet.  But since it worked on table rows, but not on cells, I decided to treat it as a bug in WebKit and went looking for the best way to report it. I ended up creating a WebKit Bugzilla account and reporting it as <a href="https://bugs.webkit.org/show_bug.cgi?id=38527">bug 38527</a>.<br />
<strong><br />
Check out the <a href="http://www.hyperborea.org/journal/wp-content/uploads/2010/05/tabletest.html">testcase</a></strong> in Firefox&nbsp;3.6 or Opera&nbsp;10.5 to see what it <em>should</em> look like, then take a look in Chrome&nbsp;4 or 5 or Safari&nbsp;4.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hyperborea.org/journal/2010/05/webkit-displaytable-cell-problem/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Comic-Con Hotels 2010: Reviewing the Reservation Form</title>
		<link>http://www.hyperborea.org/journal/2010/03/cci2010-hotel-form/</link>
		<comments>http://www.hyperborea.org/journal/2010/03/cci2010-hotel-form/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 17:01:08 +0000</pubDate>
		<dc:creator>Kelson</dc:creator>
				<category><![CDATA[Comic Con 2010]]></category>
		<category><![CDATA[Comics]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Comic Con]]></category>
		<category><![CDATA[cons]]></category>
		<category><![CDATA[Long]]></category>
		<category><![CDATA[reservation]]></category>
		<category><![CDATA[San Diego]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.hyperborea.org/journal/?p=7795</guid>
		<description><![CDATA[It was fast. Anticlimactic, really. It took a few reloads to get the Comic-Con International home page up, but once I could click on the reservation link, everything went smoothly. I was done by 9:05. The reservation page was actually &#8230; <a href="http://www.hyperborea.org/journal/2010/03/cci2010-hotel-form/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://comic-con.org/cci/"><img alt="" src="http://www.hyperborea.org/journal/wp-content/uploads/2010/03/comic_con_21.png" title="Comic-Con International" class="alignright" width="77" height="95" /></a>It was fast. Anticlimactic, really.  It took a few reloads to get the <a href="http://www.comic-con.org/cci/">Comic-Con International</a> home page up, but once I could click on the reservation link, everything went smoothly. I was done by 9:05.</p>
<p>The reservation page was actually optimized!</p>
<ul>
<li>Just one image: a banner across the top.</li>
<li>Everything was on one page, including the list of hotels, the personal info, and the hotel choices.</li>
<li>Hotel selection was done by client-side scripting, so there was no wait for processing between selections (and no risk of typos confusing their processing system later today).</li>
</ul>
<p>This is a huge deal, especially compared to Travel Planners&#8217; <a href="http://www.hyperborea.org/journal/2008/02/cci-hotel/">horribly overdesigned 2008 forms</a> &#8212; yes, forms, plural &#8212; that kept bogging down. (I never even <em>saw</em> last year&#8217;s, though I tried for an hour and a half to get in.)</p>
<p>On the downside, that one page does load a half-dozen script files, but that doesn&#8217;t seem to have slowed it down much.</p>
<p>In case none of your 12 choices were available, they asked for a maximum price you&#8217;d be willing to pay for another hotel that&#8217;s not on your list. I vaguely recall this being a feature of the old fax forms, but I don&#8217;t remember being asked this on the phone last year.</p>
<p>I was surprised to find that they didn&#8217;t want credit card info immediately, but that&#8217;s good from a streamlining perspective as well.  The hotel choices, room type, and contact info are critical in order to make the reservation in the first place.  Payment <em>can</em> be done later, so in a rushed situation like this, it&#8217;s better to handle it later. Plus, not asking for credit card information means that they could run the site without encryption, speeding things up a bit more.</p>
<p>I would have liked to have gotten a confirmation number for the request, or an email, just so that I could be <em>sure</em> that I was in their queue.  And to be sure that I entered the right email address.  And the right start and end dates. And&#8230;well, you get the idea.  I&#8217;m a little paranoid about the process at the moment.</p>
<p>Here&#8217;s hoping that the back end of the process, and sending out confirmations, goes as smoothly as the front end did.</p>
<p><b>Update:</b> Short answer: it didn&#8217;t.  Long answer: I&#8217;ve written up <a href="http://www.hyperborea.org/journal/2010/03/cci2010-hotels-aftermath/">what went wrong</a>, at least from the guests&#8217; point of view.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hyperborea.org/journal/2010/03/cci2010-hotel-form/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>HTML Validator Trouble</title>
		<link>http://www.hyperborea.org/journal/2008/12/validator-trouble/</link>
		<comments>http://www.hyperborea.org/journal/2008/12/validator-trouble/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 07:59:59 +0000</pubDate>
		<dc:creator>Kelson</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Tweets]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.hyperborea.org/journal/archives/2008/12/12/line-items-for-2008-12-12/</guid>
		<description><![CDATA[The W3C Validators are in trouble: apparently running the tools is hideously expensive and they&#8217;re low on funds. # I usually use the WDG Offline Validator as a first line, but the W3C&#8217;s tools are incredibly useful. #]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.molly.com/2008/12/11/w3c-validators-in-jeopardy/">W3C Validators are in trouble</a>: apparently running the tools is hideously expensive and they&#8217;re low on funds. <a href="http://twitter.com/KelsonV/statuses/1053810148" class="aktt_tweet_time">#</a></p>
<p>I usually use the <a href="http://www.htmlhelp.com/tools/validator/offline/">WDG Offline Validator</a> as a first line, but the W3C&#8217;s tools are incredibly useful. <a href="http://twitter.com/KelsonV/statuses/1053819922" class="aktt_tweet_time">#</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hyperborea.org/journal/2008/12/validator-trouble/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What’s Dynamic About It?</title>
		<link>http://www.hyperborea.org/journal/2008/03/whats-dynamic/</link>
		<comments>http://www.hyperborea.org/journal/2008/03/whats-dynamic/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 03:22:35 +0000</pubDate>
		<dc:creator>Kelson</dc:creator>
				<category><![CDATA[Comics]]></category>
		<category><![CDATA[Site Updates]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.hyperborea.org/journal/archives/2008/03/14/whats-dynamic/</guid>
		<description><![CDATA[In my post on Webslices, I mentioned that the home page of my Flash site uses server-side includes instead of a static HTML file. But it doesn&#8217;t really update that often: maybe 3 or 4 times a month. Is it &#8230; <a href="http://www.hyperborea.org/journal/2008/03/whats-dynamic/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://www.hyperborea.org/journal/2008/03/webslices-and-microsummaries/">post on Webslices</a>, I mentioned that the home page of my <a href="http://www.hyperborea.org/flash/">Flash site</a> uses server-side includes instead of a static HTML file.  But it doesn&#8217;t really update that often: maybe 3 or 4 times a month.  Is it really worth building that file dynamically?  Should I switch from SSI to something more powerful, like PHP, that will let me add headers so that repeat visitors won&#8217;t have to re-download the whole page except when it&#8217;s <em>actually different</em>?  Or should I switch to a static file, with the same benefits but simpler?  <strong>What am I actually building, anyway?</strong></p>
<p>Looking through the code, I find:</p>
<p><strong>Browser upgrade banners.</strong>  People using old versions of Firefox (currently 1.5 or older) or Internet Explorer (currently 5.5 or older) get an &#8220;Upgrade to Firefox&nbsp;2&#8243; banner instead of the thumbnail of the current issue of the comic.  This is just as easily done with JavaScript&#8212;and <em>is</em> done with JS elsewhere on the site.  (I used to make some minor adjustments for other versions of IE, but I converted them all to <a href="http://www.quirksmode.org/css/condcom.html">conditional comments</a> a while back.)</p>
<p><strong>Last-modified date</strong> in the footer, pulled from the actual file.  I&#8217;ve already got a script to update this in the static files, so it&#8217;s just a matter of adding it to my general update script.  A two-minute, one-time change and I&#8217;ll never notice the difference.</p>
<p><strong>Latest posts from this blog.</strong>  Probably better done with an iframe, or maybe using AJAX.  Drawback: either method would mean an extra request from the client.  On the plus side, repeat visitors would be able to re-use the rest of the page, and only download the 5-item list.</p>
<p><strong>Unique-per-day spamtrap addresses</strong>, hidden where harvesters might pick them up.  But only a few of them still accept mail and feed it to filters.  Mostly, they just waste spammers&#8217; resources.  I could easily either get rid of them or change the script to generate a new address with each update instead of each day.</p>
<p>So really, there isn&#8217;t much stopping me from using a static file for the most-viewed page on the site, with all the attendant savings in system resources, bandwidth, etc.</p>
<p>On the other hand, I keep contemplating switching to a database-driven system for the whole thing, which would make any changes now meaningless.  But since I&#8217;ve been thinking about that since around 2000 or so, and haven&#8217;t changed it yet, that&#8217;s not exactly a blocker!</p>
<p><b>Update (March 30):</b> I&#8217;ve made the conversion to a static file.  The blog posts and browser upgrade banners are now done client-side (and run after the rest of the page is loaded), the last-modified date is part of the pre-processing script, and I just removed the daily spamtrap addresses.  Now to see whether it actually improves performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hyperborea.org/journal/2008/03/whats-dynamic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webslices and Revisiting Microsummaries</title>
		<link>http://www.hyperborea.org/journal/2008/03/webslices-and-microsummaries/</link>
		<comments>http://www.hyperborea.org/journal/2008/03/webslices-and-microsummaries/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 03:59:07 +0000</pubDate>
		<dc:creator>Kelson</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[webslices]]></category>

		<guid isPermaLink="false">http://www.hyperborea.org/journal/archives/2008/03/13/webslices-and-microsummaries/</guid>
		<description><![CDATA[When the first Firefox 2 beta was released, I looked into Microsummaries, a feature that enables bookmarks to automatically update their titles with information. I concluded they were useful, but not for anything I was doing. The main application would &#8230; <a href="http://www.hyperborea.org/journal/2008/03/webslices-and-microsummaries/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When the first Firefox 2 beta was released, I looked into <a href="https://wiki.mozilla.org/Microsummaries">Microsummaries</a>, a feature that enables bookmarks to automatically update their titles with information.  I <a href="http://www.hyperborea.org/journal/2006/07/microsummaries/">concluded</a> they were useful, but not for anything I was doing.  The main application would be my <a href="http://www.hyperborea.org/flash/">Flash site</a>, but it already had an RSS feed for updates, and a microsummary could only really include the most recent item.</p>
<p>Now the first IE8 beta supports <a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/webslices.mspx">Webslices</a>.  They&#8217;re similar in concept, but can include formatted data (not just plain text) and use microformat-like markup on the web page instead of a &lt;link&gt; element in the head.</p>
<p>I figured with two browsers supporting the concept, I&#8217;d give it a shot.  I adapted the script I use to generate the RSS feed so that it will also take everything on the most recent day and generate a text file, which is used for the Microsummary title.  For the Webslice, to start with I just marked up the &#8220;Latest Updates&#8221; section of the home page.  Since I haven&#8217;t installed IE8b1 at home, I&#8217;m using Daniel Glazman&#8217;s experimental <a href="http://www.glazman.org/weblog/dotclear/index.php?post/2008/03/13/WebSlices-in-Firefox-6">Webchunks</a> extension for Firefox to try it out.  Unfortunately the extension doesn&#8217;t seem to resolve relative links in its current state.</p>
<p>The real question, of course, is whether either technology offers anything better than what feeds can do now.</p>
<p>I think I&#8217;ll end up going the external-feed route for the Webslice as well, since it&#8217;ll use a lot less bandwidth than having a bunch of IE installations pulling the <em>entire home page</em> once a day.  Plus since I&#8217;m using SSI on that page, it doesn&#8217;t take advantage of conditional requests and caching, and a static file will.  But that&#8217;ll have to wait.  <i>Lost</i> is on in 2 minutes, and after getting up earlier than usual this morning, I&#8217;ll probably be going to bed right after the show.</p>
<p><b>Update:</b> I checked in IE8, and the webslice does work as expected.  A few minor differences: Webchunks pulls in external styles, like the background and colors, while IE8b1 only uses styles in the chunk itself.  Interesting bit: I&#8217;m marking up list items as entries, and IE8 is actually displaying them as a bulleted list, while Webchunks is simply showing the content.</p>
<p>So it at least <em>works</em>.  Maybe tonight or Sunday I&#8217;ll see if I can refine it a bit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hyperborea.org/journal/2008/03/webslices-and-microsummaries/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Net Links</title>
		<link>http://www.hyperborea.org/journal/2008/01/net-links/</link>
		<comments>http://www.hyperborea.org/journal/2008/01/net-links/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 07:34:04 +0000</pubDate>
		<dc:creator>Kelson</dc:creator>
				<category><![CDATA[Computers/Internet]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Acid3]]></category>
		<category><![CDATA[linkblogging]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.hyperborea.org/journal/archives/2008/01/29/net-links/</guid>
		<description><![CDATA[ISC on Targeted Attacks Hixie&#8217;s Natural Log: Come up with the best test for Acid3 Edit: Strike that, Acid3 has been completed. Spies in the Phishing Underground (via Slashdot)]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://isc.sans.edu/diary.html?storyid=3835">ISC on Targeted Attacks</a></li>
<li><s><a href="http://ln.hixie.ch/?start=1200301306&#038;count=1">Hixie&#8217;s Natural Log: Come up with the best test for Acid3</a></s> <b>Edit:</b> Strike that, <a href="http://acid3.acidtests.org/">Acid3</a> has been <a href="http://www.css3.info/acid3-completed/">completed</a>.</li>
<li><a href="http://www.net-security.org/article.php?id=1110">Spies in the Phishing Underground</a> <small>(<a href="http://it.slashdot.org/article.pl?sid=08/01/28/0315242">via Slashdot</a>)</small></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.hyperborea.org/journal/2008/01/net-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Right Tool…</title>
		<link>http://www.hyperborea.org/journal/2008/01/the-right-tool/</link>
		<comments>http://www.hyperborea.org/journal/2008/01/the-right-tool/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 07:09:16 +0000</pubDate>
		<dc:creator>Kelson</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.hyperborea.org/journal/archives/2008/01/16/the-right-tool/</guid>
		<description><![CDATA[I&#8217;ve been reading High Performance Web Sites and started thinking about how to apply the guidelines to my own sites (not to mention stuff for work). A lot of them are things I already do: minimize external resources, use compression &#8230; <a href="http://www.hyperborea.org/journal/2008/01/the-right-tool/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been reading <a href="http://www.amazon.com/gp/product/0596529309?ie=UTF8&#038;tag=hyperborea-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0596529309"><i>High Performance Web Sites</i></a> and started thinking about how to apply the guidelines to my own sites (not to mention stuff for work).  A lot of them are things I already do: minimize external resources, use compression &#038; cache control, etc.  Others are a bit out of reach for a personal site, like using a <a href="http://en.wikipedia.org/wiki/Content_delivery_network">content delivery network</a>.  It got me looking at the way I use scripts, and reminded me of a change I made about a year and a half ago.</p>
<p>Way back when, I put a simple app on my Flash site: a <a href="http://www.hyperborea.org/flash/teamnames.phtml">team-name generator</a> for teams of speedsters.  It randomly generated a name from two lists, and provided a button to generate another one.  I originally wrote it in PHP.</p>
<p>The funny thing was that it was the most-hit page on the site, because people would sit there and hit the button to generate a new name half a dozen times before moving on.  And because it was a sever-side script, that meant not just another HTTP hit, but re-downloading the entire web page with only 2 words being different.</p>
<p>Eventually I realized it was much better suited to a client-side app.  I rewrote the whole thing in JavaScript, using DOM functions to replace the name on the current page instead of reloading.  I left the hooks to the PHP in place, so that it would still work for clients with JavaScript disabled.</p>
<ul>
<li>It was much faster &#8212; practically instantaneous, in fact.</li>
<li>It used a lot less bandwidth &#8212; 40 KB (5 KB × 8 ) vs. 6 KB (5 KB + 1 KB) for a typical 8-name* scenario.</li>
<li>Traffic stats more accurately reflected the page&#8217;s popularity, as it dropped from #1 to around #30&#8211;50.</li>
</ul>
<p><small>* Based on a drop from 32,000 hits/month in July 2006 to 4,000 hits/month in September, with the rest of the site staying about the same, it seems people were hitting reload 7 times.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hyperborea.org/journal/2008/01/the-right-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taking the Web Beyond the Typewriter</title>
		<link>http://www.hyperborea.org/journal/2004/12/beyond-the-typewriter/</link>
		<comments>http://www.hyperborea.org/journal/2004/12/beyond-the-typewriter/#comments</comments>
		<pubDate>Sat, 18 Dec 2004 18:13:28 +0000</pubDate>
		<dc:creator>Kelson</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[office]]></category>
		<category><![CDATA[typography]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.hyperborea.org/journal/archives/2004/12/18/beyond-the-typewriter/</guid>
		<description><![CDATA[I recently stumbled across an old copy of the Demoroniser (which my American-trained sense of spelling keeps trying to spell as demoronizer), a script designed to correct some of the, well, moronic HTML generated by Microsoft Office. Aside from flat-out &#8230; <a href="http://www.hyperborea.org/journal/2004/12/beyond-the-typewriter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I recently stumbled across an old copy of the <a href="http://www.fourmilab.ch/webtools/demoroniser/">Demoroniser</a> (which my American-trained sense of spelling keeps trying to spell as <i>demoronizer</i>), a script designed to correct some of the, well, moronic HTML generated by Microsoft Office.  Aside from flat-out coding errors, Office would use non-standard characters for things such as curly quotes or em-dashes that would only show up on Windows computers. If you viewed these sites on a Mac, a Linux box, a Palm, etc., they would seem to be missing punctuation everywhere.  His solution was to convert these to their plain-ASCII equivalents.</p>
<p>Over the last year or so, <a href="http://wordpress.org/">WordPress</a> and <a href="http://www.alistapart.com/">A List Apart</a> have converted me from &#8220;stick with the lowest common denominator&#8221; to &#8220;let&#8217;s show real typography.&#8221;  Since the days of the Demoroniser, Unicode has become a standard part of HTML, so modern browsers* can either display a full range of characters or convert them to something they can display.  You probably won&#8217;t be able to see Chinese text in Lynx, but a <em>properly</em> encoded curly quote&#8212;&#8220; or &#8221;&#8212;will show up as a plain old &quot;.</p>
<p>For one thing, real typography looks much nicer.  <span id="more-634"></span>An actual &#8220;&#8212;&#8221; looks more professional than &#8220;&#45;&#45;&#8221; does.  Curly quotes are also more readable than straight quotes.  Take this series of titles, first with curly quotes and next with straight quotes. With curly quotes, it&#8217;s easier to tell which pieces of text are inside the quotes and which are outside:</p>
<p>&#8220;Blah blah one,&#8221; &#8220;Another title,&#8221; and &#8220;Yada yada.&#8221;<br />
&quot;Blah blah one,&quot; &quot;Another title,&quot; and &quot;Yada yada.&quot;</p>
<p>Indispensable resources: <a href="http://www.cs.sfu.ca/~ggbaker/reference/characters/">Commonly Confused Characters</a> and <a href="http://www.alistapart.com/articles/emen/">The Trouble with EM &#8217;n EN</a> are great for figuring out just which dash to use where, and also to get the codes right (if your authoring tool doesn&#8217;t take care of it for you).  <a href="http://evolt.org/entities">Evolt&#8217;s Character Entity Chart</a> is helpful for looking up codes and for checking just how much your browser can (or can&#8217;t) handle. </p>
<p>So, reminded of the existence of the Demoroniser, I looked for a Unicode-aware update.  The original script remains ASCII-only, but I did find the <a href="http://rheme.net/unmoroniser/">Unmoroniser</a>, a modified version that converts the problem characters to the proper HTML entities instead.  Accompanying the script is a rather long but nonetheless amusing rant on why this change is a good thing.</p>
<p><small>*In this case IE 5+, Mozilla/Firefox/Netscape 6+/etc., Opera 6+, Konqueror 3+ &amp; Safari should have no problems.  Netscape 4 manages the basics, but many characters only show up on Windows or don&#8217;t work at all.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.hyperborea.org/journal/2004/12/beyond-the-typewriter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

