<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>nater kane &amp; friends</title>
	
	<link>http://www.naterkane.com/blog</link>
	<description>the blog</description>
	<pubDate>Tue, 16 Jun 2009 21:47:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<geo:lat>40.702348</geo:lat><geo:long>-73.942886</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/naterkane" type="application/rss+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fnaterkane" 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%2Fnaterkane" 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%2Fnaterkane" 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/naterkane" 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%2Fnaterkane" 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%2Fnaterkane" 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%2Fnaterkane" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fnaterkane" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fnaterkane" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fnaterkane" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fnaterkane" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.addtoany.com/?linkname=nater%20kane%20%26%20friends&amp;linkurl=http%3A%2F%2Ffeeds.feedburner.com%2Fnaterkane&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>completely suppressing errors in php</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/063ebnPwO6o/</link>
		<comments>http://www.naterkane.com/blog/completely-suppressing-errors-in-php/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 15:00:10 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[php]]></category>

		<category><![CDATA[errors]]></category>

		<category><![CDATA[logging]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=346</guid>
		<description><![CDATA[Suppressing the logging of obvious and unavoidable errors in PHP can be a pain, until I figured out exactly how easy it is to do.]]></description>
			<content:encoded><![CDATA[<p>This is something that's been bugging me for awhile, and I never really bothered to dig in and see what I could do to work around it, until now.</p>
<h3>unserializing an unserializable string</h3>
<p>The easiest, and most popular way to check if a string is serialized is simple.</p>
<div class="igBar"><span id="lphp-1"><a href="#" onclick="javascript:showPlainTxt('php-1'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-1">
<div class="php" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#008000;">/**</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#008000;"> * Is a string serialized?</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#008000;"> *</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#008000;"> * @param string</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#008000;"> * @return boolean &nbsp;</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#008000;"> */</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#000000; font-weight:bold;">function</span> isSerialized<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$str</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$str</span> === <span style="color:#CC66CC;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">false</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color:#616100;">else</span> </div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$str</span> == <a href="http://www.php.net/serialize"><span style="color:#000066;">serialize</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span> || @<a href="http://www.php.net/unserialize"><span style="color:#000066;">unserialize</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$str</span><span style="color:#006600; font-weight:bold;">&#41;</span> !== <span style="color:#000000; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Quite a few very popular <a href="http://cakephp.org">frameworks</a> and <a href="http://wordpress.org">apps</a> do it this way, try to just simply pass the string to the <code>unserialize</code> method, make sure it isn't the boolean <code>false</code>, and prepend the method with an <code>@</code> to suppress notice-level error output. Don't get me wrong, it works. But if you're logging your notice-level errors, then any time you're trying to check if a string is serialized in this way, it logs the notice that's generated. Storing data as a serialized hash in a key-value database (<a href="http://tokyocabinet.sourceforge.net" class="ext-link">Tokyo Cabinet</a> <em>&mdash; which we've chosen to use for <a href="http://twitter.com/nomcat">Nomcat</a></em>, <a href="http://www.oracle.com/technology/products/berkeley-db/index.html" class="ext-link">BerkeleyDB</a>, <a href="http://couchdb.apache.org/">CouchDB</a>, <a href="http://code.google.com/p/redis/">Redis</a>, etc.) magnifies the scenario and takes this wee-little_old <code>Notice</code>, and makes your logs fill up <em>really</em> fast. Since error logs are for tracking issues that a developer should really concern themselves with, logging all of these notices just wouldn't do, it's simply a waste of space and processing time to handle them over and over and over again.</p>
<p>As we've been building Nomcat over at NOM, we're often faced with dozens of reads from the data storage layer with each view that's generated, and recently while testing, we've run into log files that look something like this. </p>
<div class="igBar"><span id="lcode-2"><a href="#" onclick="javascript:showPlainTxt('code-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-2">
<div class="code" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style="">ERROR - <span style="color:#800000;color:#800000;">2009</span>-<span style="color:#800000;color:#800000;">06</span>-<span style="color:#800000;color:#800000;">04</span> <span style="color:#800000;color:#800000;">01</span>:<span style="color:#800000;color:#800000;">49</span>:<span style="color:#800000;color:#800000;">15</span> --&gt; <span style="">Severity</span>: Notice&nbsp; --&gt; <span style="">unserialize</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>: Error at offset <span style="color:#800000;color:#800000;">0</span> of <span style="color:#800000;color:#800000;">1</span> bytes /path/to/application/libraries/App_Model.<span style="">php</span> <span style="color:#800000;color:#800000;">432</span></div>
</li>
<li style="color:#26536A;">
<div style="">... <span style="">a</span> couple hundred lines ...</div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="">ERROR</span> - <span style="color:#800000;color:#800000;">2009</span>-<span style="color:#800000;color:#800000;">06</span>-<span style="color:#800000;color:#800000;">04</span> <span style="color:#800000;color:#800000;">01</span>:<span style="color:#800000;color:#800000;">51</span>:<span style="color:#800000;color:#800000;">19</span> --&gt; <span style="">Severity</span>: Notice&nbsp; --&gt; <span style="">unserialize</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>: Error at offset <span style="color:#800000;color:#800000;">0</span> of <span style="color:#800000;color:#800000;">1</span> bytes /path/to/application/libraries/App_Model.<span style="">php</span> <span style="color:#800000;color:#800000;">432</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h3>just set_error_handler to an empty method</h3>
<p>Initially I tried a few different options to work around this annoying little problem. </p>
<ol>
<li>Prepending the <code>unserialize</code> method with <code>@</code> to suppress output, but it doesn't prevent logging. </li>
<li>Wrapping in a try-catch block doesn't do the trick</li>
<li>Wrapping it with <code>error_reporting(0)</code> and <code>error_reporting(2)</code> doesn't do the trick either</li>
<li>But creating an method to handle the error, have it to nothing, and wrapping the <code>unserialize</code> line with <code>set_error_handler</code> and <code>restore_error_handler</code> does the trick!</li>
</ol>
<p>This is what I came up with.</p>
<div class="igBar"><span id="lphp-3"><a href="#" onclick="javascript:showPlainTxt('php-3'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-3">
<div class="php" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#008000;">/**</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#008000;"> * Is a string serialized?</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#008000;"> *</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#008000;"> * @param string</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#008000;"> * @return boolean &nbsp;</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#008000;"> */</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#000000; font-weight:bold;">function</span> isSerialized<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$str</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$str</span> === <span style="color:#CC66CC;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">false</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color:#616100;">else</span> </div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/set_error_handler"><span style="color:#000066;">set_error_handler</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'App_Model'</span>,<span style="color:#FF0000;">'unserialize_handler'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$return</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$str</span> == <a href="http://www.php.net/serialize"><span style="color:#000066;">serialize</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span> || @<a href="http://www.php.net/unserialize"><span style="color:#000066;">unserialize</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$str</span><span style="color:#006600; font-weight:bold;">&#41;</span> !== <span style="color:#000000; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/restore_error_handler"><span style="color:#000066;">restore_error_handler</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#0000FF;">$return</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp;</div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#008000;">/**</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#008000;"> * dummy error handler set up to obsorb any errors thrown by isSerialized</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#008000;"> * @return </span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#008000;"> * @param object $errno</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#008000;"> * @param object $errstr</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#008000;"> */</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#000000; font-weight:bold;">function</span> unserialize_handler<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$errno</span>, <span style="color:#0000FF;">$errstr</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp;<span style="color:#FF9933; font-style:italic;">// don't do anything</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>If you noticed that I'm passing an array like this: <code>set_error_handler(array('App_Model','unserialize_handler'));</code>, you've got a good eye. This is how you can specify in which class to find the method you want to use as a callback,  neither <code>$this->methodname</code> or <code>Classname::methodname</code> will work. However if you aren't writing object oriented code, you can simply pass the name of the method you want to use to handle the error as a string like this: <code>set_error_handler('unserialize_handler');</code>.</p>
<p>Let me know how it works for you.</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/063ebnPwO6o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/completely-suppressing-errors-in-php/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/completely-suppressing-errors-in-php/</feedburner:origLink></item>
		<item>
		<title>11 rules to help you survive 2009</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/1rXo_jP8eGM/</link>
		<comments>http://www.naterkane.com/blog/11-rules-to-help-you-survive-2009/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 18:41:14 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[editorial]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=329</guid>
		<description><![CDATA[I had an entire post written about what this last year has meant for me, the good and the bad, what I'm grateful for, etc... However, I don't really write about anything personal here, I instead decided to take that post and send it as a personal email to a number of people who are [...]]]></description>
			<content:encoded><![CDATA[<p>I had an entire post written about what this last year has meant for me, the good and the bad, what I'm grateful for, etc... However, I don't really write about anything personal here, I instead decided to take that post and send it as a personal email to a number of people who are close to me, and keep intimate communications intimate.</p>
<p>Instead, here's a few things I think might be good advice for surviving this upcoming year if you "work in tech". It's a living list, so if you feel that I've overlooked something that might touch you, let me know and I'll add to it.</p>
<ol>
<li>If you start a new company, don't make ad revenue it's core business model. If you're an adult, you should know better.</li>
<li>Don't take a word and add "TW" to the beginning of it, it's not cute and instead you'll be an annoying and uncreative schmuck. <em>This is an updated rule from last year's "if the word ends in 'ER', don't leave out the 'E'".</em></li>
<li>Don't think for a second that people want to pay for content, they will however, pay for services. Now someone just needs to come up with better services.</li>
<li>If you build something, make sure it's ACTUALLY useful, and not just cool and trite.</li>
<li>If you work at an agency and enjoyed reading "Getting Real", please forget everything you read, those ideas work if you're on the product side, and not client services... that book is no good for you, get a refund.</li>
<li>There's no such thing as a social media expert. People can be experts in platforms and tactics and skills, but not in "social media". <em>I however am an expert is calling people out on misusing and abusing ambiguous terms and buzzwords.</em> Like most buzzwords, it's something most people don't understand... when talking about it, I use the term 'unmanaged (brand) communications' because it actually describes what's happening; people are talking about all sorts of stuff, sometimes it might be about you, and it sometimes happens on the internet.</li>
<li>SEO experts are a joke, you'll never need one if you have a good information architect, a copywriter and someone who knows how to write good, semantic markup.</li>
<li>If you "follow" more than a few hundred people on 'you-know-what', you're a dick and need to cut that crap out right now. It's actually impossible to track more than 1000 people whether online or in the physical world. Quit fronting like you pay attention.</li>
<li>If you're a strategist of some sort and don't have any actual or physical deliverables as part of your work, reevaluate how you actually are a benefit your clients <strong>or</strong> get a new career. I don't want to have to hunt you down and burn you at the stake, we don't need more people selling snake oil and practicing brand voodoo.</li>
<li>No individual person is worth more than $150 per hour tops, if you disagree then you must be greedy, fleecing your clients, fleecing our industry, or all three.</li>
<li>Don't waste your time getting excited about the new hot mobile device. They all suck, really. If you do need one, please recycle your old one and just buy the one that is the <strong>least painful</strong> for you to use.</li>
</ol>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/1rXo_jP8eGM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/11-rules-to-help-you-survive-2009/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/11-rules-to-help-you-survive-2009/</feedburner:origLink></item>
		<item>
		<title>Question of the day 11/5</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/aZ1TmitiN60/</link>
		<comments>http://www.naterkane.com/blog/question-of-the-day-115/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 17:34:48 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[question of the day]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=324</guid>
		<description><![CDATA[I've decided to start posting general and non-technical questions that I have. This new feature of regular content will, obviously, be called "Question of the day"
It's one thing to manage, educate and cultivate relationships with existing clients; how important is it to educate a potential client, who you have already decided not to work with, [...]]]></description>
			<content:encoded><![CDATA[<p><em>I've decided to start posting general and non-technical questions that I have. This new feature of regular content will, obviously, be called "Question of the day"</em></p>
<p>It's one thing to manage, educate and cultivate relationships with existing clients; how important is it to educate a potential client, who you have already decided not to work with, as to why you aren't interested in working with them? (NOT why you aren't able, if you're simply unable) </p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/aZ1TmitiN60" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/question-of-the-day-115/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/question-of-the-day-115/</feedburner:origLink></item>
		<item>
		<title>Mashable’s open web awards are open!</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/yMz9WeKsG2Q/</link>
		<comments>http://www.naterkane.com/blog/mashables-open-web-awards-are-open/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 17:30:33 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[community]]></category>

		<category><![CDATA[news]]></category>

		<category><![CDATA[mashable "open web" democratus]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=322</guid>
		<description><![CDATA[ Mashable Open Web Awards
]]></description>
			<content:encoded><![CDATA[<p><iframe width="350" marginheight="0" marginwidth="0" frameborder="0" height="330" src="http://mashable.polldaddy.com/widget/?f=f&#038;c=1&#038;cn=Democratus"></iframe> <noscript><a href="http://mashable.com/2008/11/05/open-web-awards-2/">Mashable Open Web Awards</a></noscript></p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/yMz9WeKsG2Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/mashables-open-web-awards-are-open/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/mashables-open-web-awards-are-open/</feedburner:origLink></item>
		<item>
		<title>Democratus needs your support</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/BSfzVDykiXk/</link>
		<comments>http://www.naterkane.com/blog/democratus-needs-your-support/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 18:03:51 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[community]]></category>

		<category><![CDATA[news]]></category>

		<category><![CDATA[social web]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=318</guid>
		<description><![CDATA[First let me thank Josh Klein for mentioning this on his blog before I got around to it...
So...
I have recently been working on starting a website called Democratus that will be a sort of "customer service platform for government" and provide a place for ideas for change to come directly from the people and be [...]]]></description>
			<content:encoded><![CDATA[<p>First let me thank <a href="http://www.joshklein.net/" class="ext-link">Josh Klein</a> for <a href="http://www.joshklein.net/social-media-in-government-democratus" class="ext-link">mentioning this</a> on his blog before I got around to it...</p>
<p>So...</p>
<p>I have recently been working on starting a website called Democratus that will be a sort of "customer service platform for government" and provide a place for ideas for change to come directly from the people and be delivered directly to our representatives and press. We hope to be able to get this website off the ground by early next year, but in order to do that we're looking for some funding. Recently we applied for a grant from the Knight Foundation, who sponsor a contest for ideas like this, and we're very hopeful that this will provide the funding we need to launch the site, but we need your help to get the grant.</p>
<p>All you need to do is visit the website of the Knight Foundation and our page there, and register and vote on our idea. It should only take a minute or two and it would really help. If you want to read our application it is there on the website, and if you want to leave a comment on the proposal after reading it (something about how innovative and important this would be in your life, for instance) that would be even better.</p>
<p>Feel free to forward this post to other people that you think are interested in encouraging political participation and efforts to make our democracy more direct.</p>
<p>1) Register with the Knight Foundation: <a href="http://is.gd/6cTK" class="ext-link">http://is.gd/6cTK</a></p>
<p>2) Vist our site: <a href="http://is.gd/6cU3" class="ext-link">http://is.gd/6cU3</a></p>
<p>3) Vote and comment on our proposal (clicking on 5 stars won't hurt)</p>
<p>4) And then if you'd like, tell us what you think by sending us an email to <a href="mailto:Nate.Heasley@gmail.com">Nate.Heasley@gmail.com</a> or <a href="http://hidemail.ws/user/naterkane">nater@naterkane.com</a></p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/BSfzVDykiXk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/democratus-needs-your-support/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/democratus-needs-your-support/</feedburner:origLink></item>
		<item>
		<title>(Another) Scrollable Plugin for jQuery</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/IkhQHqu-vNE/</link>
		<comments>http://www.naterkane.com/blog/jquery-scrollable-plugin/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 23:33:01 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[javascript]]></category>

		<category><![CDATA[semantic web]]></category>

		<category><![CDATA[jquery scrollable javascript js plugin]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=313</guid>
		<description><![CDATA[I was having a bit of difficulty finding a jQuery plugin that not only provided scrolling behavior to a list of elements, but also used &#38; then generated markup that could still be accessible, semantic &#38; validate whether or not the user ran the javascript]]></description>
			<content:encoded><![CDATA[<p>I was having a bit of difficulty finding a jQuery plugin that not only provided scrolling behavior to a list of elements, but also used &amp; then generated markup that could still be accessible, semantic &amp; validate whether or not the user ran the javascript.</p>
<p><a href="http://www.naterkane.com/blog/wp-content/uploads/2008/10/jquery-logo.png"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/10/jquery-logo.png" alt="jQuery" title="jQuery" width="136" height="36" class="alignright size-medium wp-image-304" /></a>The best plugin that I could find that was already out there was <a href="http://www.flowplayer.org" class="extlink">Tero Piirainen</a>'s <code>jquery.scrollable.js</code>. If you <a href="http://flowplayer.org/tools/scrollable.html" class="ext-link">check it out</a> you'll quickly see that the markup that's used to generate the scrolling items could be improved upon. Nothing in my version of <code>jquery.scrollable.js</code> removes functionality from what Tero put together, and the improvements are basic.</p>
<ol>
<li>make those items scrollable horizotally or vertically</li>
<li>decide how many items are visible at once</li>
<li>scroll elements with mouse, arrow keys and mousewheel (requires mousewheel.js)</li>
<li>make navigational buttons without programming</li>
<li>have programmatic actions: next, prev, nextPage, prevPage, seekTo, begin, end</li>
<li>need to know when list is scrolled with custom event listener</li>
<li><strong>You can now start with semantic markup</strong></li>
<li>I want this all in single js file that weights only <strike>3.9</strike> <strong>4.1 Kb minified!</strong></li>
</ol>
<h2>First we start with simple &amp; semantic markup</h2>
<p>There's nothing fancy going on here at all, just a wrapping element, an anchor and an unordered list. Unfortunately due to the design requirements of this particular implementation, an additional <code>&lt;div&gt;</code> had to be added. If it wasn't for the creative constraint, and the lack of support for <code>vertical-align: middle</code> across many browsers, this extra <code>&lt;div&gt;</code> would have not been included.</p>
<div class="igBar"><span id="lhtml-4"><a href="#" onclick="javascript:showPlainTxt('html-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-4">
<div class="html" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style=""><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"scrolling-list"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#newspage"</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"more-link"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>More News<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/ol.html"><span style="color: #000000; font-weight: bold;">&lt;ol&gt;</span></a></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone reports second-quarter 2008 earnings <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Bear scares comedian, everybody laughs <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone Completes Someone else's Acquisition <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone selected by Some Company, S.A.B. de C.V. for ADR program <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone wins landmark multinational asset pooling mandate <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone Announces Internal Restructuring Transactions and Guarantees Related to Acquisition <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone wins comprehensive custodial mandate with one of New Zealand's largest organizations <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone selected by East Timor to provide custodial services and training opportunities <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone launches latest Global Derivatives Collateral offering <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone expands Boston fund services operations <span style="color: #ddbb00;">&amp;raquo;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ol&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h2>Presentation</h2>
<p>Now we add styling that makes it match the look &amp; feel of the main site.</p>
<p>The css required to make this bit work for you will be different for every project, so take a look at the included styles and tweak as necessary.</p>
<div class="scrollable nojs">
	<a href="#" class="more-link">More News</a></p>
<ol>
<li>
<div><a href="#">Someone reports second-quarter 2008 earnings &raquo;</a></div>
</li>
<li>
<div><a href="#">Bear scares comedian, everybody laughs &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone Completes Someone else's Acquisition &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone selected by Some Company, S.A.B. de C.V. for ADR program &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone wins landmark multinational asset pooling mandate &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone Announces Internal Restructuring Transactions and Guarantees Related to Acquisition &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone wins comprehensive custodial mandate with one of New Zealand's largest organizations &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone selected by East Timor to provide custodial services and training opportunities &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone launches latest Global Derivatives Collateral offering &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone expands Boston fund services operations &raquo;</a></div>
</li>
</ol>
</div>
<h2>And now for the behavior</h2>
<p>If the user's browser allows javascript to run, we add some additional unobtrusive behavior (including mousewheel support)</p>
<div class="igBar"><span id="ljavascript-5"><a href="#" onclick="javascript:showPlainTxt('javascript-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-5">
<div class="javascript" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style="">jQuery<span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span> $ <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">/**</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; * make sure the CSS knows that we're modifying the DOM and then style accordingly</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; **/</span>&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.scrollable'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">addClass</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'js'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">/** </span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; * If you have an element you'd like to use the same style, but not attach the </span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; * behavior you can turn it off by first adding the scrollable classname, but making </span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; * sure the js classname is not applied to the element (this is what I did to show the </span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; * &quot;no javascript&quot; version in the second example). Keeping the use of the scrollable </span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; * classname for the general styles prevents having to write redundant styles</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; **/</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.scrollable.nojs'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">removeClass</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'js'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">/**</span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; * a little DOM modification to keep all of the markup valid</span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; **/</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.scrollable.js ol'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'id'</span>,<span style="color: #3366CC;">'items'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">wrap</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'&lt;ul&gt;&lt;li&gt;&lt;/li&gt;&lt;/ul&gt;'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.scrollable.js ul&gt;li'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'id'</span>,<span style="color: #3366CC;">'itemswrapper'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> emptyLinkTarget = <span style="color: #66cc66;">&#40;</span>window.<span style="color: #006600;">opera</span><span style="color: #66cc66;">&#41;</span> ? <span style="color: #3366CC;">"#"</span> : <span style="color: #3366CC;">"javascript:function(){return}"</span>; <span style="color: #009900; font-style: italic;">// a hash breaks a few flavors of IE &amp; a javascript link (though it's poor form) breaks Opera.</span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.scrollable.js ul'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">prepend</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'&lt;li&gt;&lt;a class=&quot;prev&quot; href=&quot;'</span>+emptyLinkTarget+<span style="color: #3366CC;">'&quot;&gt;&amp;lt;&amp;lt;&lt;/a&gt;&lt;/li&gt;'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">append</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'&lt;li&gt;&lt;a class=&quot;next&quot; href=&quot;'</span>+emptyLinkTarget+<span style="color: #3366CC;">'&quot;&gt;&amp;gt;&amp;gt;&lt;/a&gt;&lt;/li&gt;'</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">/** </span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; * and now we initiate </span></div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color: #009900; font-style: italic;">&nbsp; &nbsp;&nbsp; **/</span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'.scrollable.js'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">scrollable</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; size:<span style="color: #CC0000;color:#800000;">3</span>,</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; horizontal:<span style="color: #003366; font-weight: bold;">false</span>,</div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; duration:<span style="color: #CC0000;color:#800000;">1500</span>,</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; items:<span style="color: #3366CC;">'#items'</span>,</div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; prev:<span style="color: #3366CC;">'.prev'</span>,</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; next:<span style="color: #3366CC;">'.next'</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="scrollable">
	<a href="#" class="more-link">More News</a></p>
<ol>
<li>
<div><a href="#">Someone reports second-quarter 2008 earnings &raquo;</a></div>
</li>
<li>
<div><a href="#">Bear scares comedian, everybody laughs &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone Completes Someone else's Acquisition &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone selected by Some Company, S.A.B. de C.V. for ADR program &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone wins landmark multinational asset pooling mandate &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone Announces Internal Restructuring Transactions and Guarantees Related to Acquisition &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone wins comprehensive custodial mandate with one of New Zealand's largest organizations &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone selected by East Timor to provide custodial services and training opportunities &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone launches latest Global Derivatives Collateral offering &raquo;</a></div>
</li>
<li>
<div><a href="#">Someone expands Boston fund services operations &raquo;</a></div>
</li>
</ol>
</div>
<p>This is the generated source we end up with... There's one thing you might notice, and that's the <code>div class="__scrollable"</code>, though I initially placed that element outside of it's parent <code>ol</code> it did not work. It has something to do with how the <code>xhtml 1.0 strict</code> doctype is handled by the browsers. Though this may work in <code>HTML 4.0</code> or various browser quirks modes, I haven't specifically tested all possible cases.</p>
<div class="igBar"><span id="lhtml-6"><a href="#" onclick="javascript:showPlainTxt('html-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-6">
<div class="html" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style=""><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"scrollable js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"more-link"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>More News<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/ul.html"><span style="color: #000000; font-weight: bold;">&lt;ul&gt;</span></a></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"prev"</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"javascript:function(){return}"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #ddbb00;">&amp;lt;</span><span style="color: #ddbb00;">&amp;lt;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"itemswrapper"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/ol.html"><span style="color: #000000; font-weight: bold;">&lt;ol</span></a> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">"overflow: hidden; position: relative; visibility: visible; height: 124px;"</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"items"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"__scrollable"</span> <span style="color: #000066;">style</span>=<span style="color: #ff0000;">"position: absolute; height: 200000em;"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone reports second-quarter 2008 earnings »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Bear scares comedian, everybody laughs »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone Completes Someone else's Acquisition »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone selected by Some Company, S.A.B. de C.V. for ADR program »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone wins landmark multinational asset pooling mandate »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone Announces Internal Restructuring Transactions and Guarantees Related to Acquisition »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone wins comprehensive custodial mandate with one of New Zealand's largest organizations »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone selected by East Timor to provide custodial services and training opportunities »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone launches latest Global Derivatives Collateral offering »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"#"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span>Someone expands Boston fund services operations »<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/br.html"><span style="color: #000000; font-weight: bold;">&lt;br</span></a> <span style="color: #000066;">clear</span>=<span style="color: #ff0000;">"all"</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ol&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/a.html"><span style="color: #000000; font-weight: bold;">&lt;a</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"next"</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"javascript:function(){return}"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #ddbb00;">&amp;gt;</span><span style="color: #ddbb00;">&amp;gt;</span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ul&gt;</span></span></div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>This build is currently in a non-public svn repository, but I will be moving it to google code or github shortly (depending on whether or not I feel like learning how to use Git)</p>
<dl>
<dt><strong>Standalone Demo: </strong></dt>
<dd><a href="http://www.naterkane.com/sandbox/scrollable/">http://www.naterkane.com/sandbox/scrollable/</a></dd>
<dt><strong>Download: </strong></dt>
<dd>First you'll of course need <a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.2.6.min.js&#038;downloadBtn=" class="ext-link">jQuery v.1.2.6</a></dd>
<dd><a href="http://www.naterkane.com/sandbox/scrollable/script/jquery.scrollable.js">jquery.scrollable.js</a> (7.5k)</dd>
<dd><a href="http://www.naterkane.com/sandbox/scrollable/script/jquery.scrollable.min.js">jquery.scrollable.min.js</a> (4.1k)</dd>
<dd><a href="http://www.naterkane.com/sandbox/scrollable/css/scrolling-list.css">scrolling-list.css</a> &ndash; the stylesheet used for the example</dd>
<dd>You can also grab a copy of <code>jquery.mousewheel.js</code> <a href="http://plugins.jquery.com/project/mousewheel" class="ext-link">here</a></dd>
</dl>
<link rel="stylesheet" type="text/css" href="http://www.naterkane.com/sandbox/scrollable/css/scrolling-list.css" />
		<script type="text/javascript" src="http://www.naterkane.com/sandbox/scrollable/script/jquery-1.2.6.min.js"></script><br />
		<script type="text/javascript" src="http://www.naterkane.com/sandbox/scrollable/script/jquery.mousewheel.js"></script><br />
		<script type="text/javascript" src="http://www.naterkane.com/sandbox/scrollable/script/jquery.scrollable.min.js"></script></p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/IkhQHqu-vNE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/jquery-scrollable-plugin/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/jquery-scrollable-plugin/</feedburner:origLink></item>
		<item>
		<title>new NK&amp;F logo</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/3YzXB0c0r4c/</link>
		<comments>http://www.naterkane.com/blog/new-nkf-logo/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 17:51:34 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[design]]></category>

		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/2008/10/27/new-nkf-logo-2/</guid>
		<description><![CDATA[
new NK&#38;F logo, originally uploaded by naterkane.

it was time to update the very bogus &#038; bad mark that we've been using for Nater Kane &#038; Friends. comments are of course welcome.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/naterkane/2977881591/" title="new NK&amp;F logo"><img src="http://farm4.static.flickr.com/3006/2977881591_84deec0ec1.jpg" alt="new NK&amp;F logo" /></a><br />
<span class="flickr-caption"><a href="http://www.flickr.com/photos/naterkane/2977881591/">new NK&amp;F logo</a>, originally uploaded by <a href="http://www.flickr.com/people/naterkane/">naterkane</a>.</span>
</p>
<p>it was time to update the very bogus &#038; bad mark that we've been using for Nater Kane &#038; Friends. comments are of course welcome.</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/3YzXB0c0r4c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/new-nkf-logo/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/new-nkf-logo/</feedburner:origLink></item>
		<item>
		<title>verizon business dsl is less for my money</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/hgXR-Ec2TAQ/</link>
		<comments>http://www.naterkane.com/blog/verizon-business-dsl-is-less-for-my-money/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 21:51:14 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[editorial]]></category>

		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=270</guid>
		<description><![CDATA[I'm so pissed right now, I pay a total of a couple hundred dollars a month across various ISP accounts, mobile phone accounts and television / broadcast service accounts... Due to where I live, I'm stuck with Verizon DSL, and I have no choice in the matter, so when their service is crap, I get [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_275" class="wp-caption alignleft" style="width: 310px"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/09/verizon-sucks-dsl-fios-phone-internet-300x168.jpg" alt="Image borrowed from http://hoboken411.com/archives/11797" title="verizon-sucks-dsl-fios-phone-internet" width="300" height="168" class="size-medium wp-image-275" /><p class="wp-caption-text">Image borrowed from http://hoboken411.com/archives/11797</p></div>I'm so pissed right now, I pay a total of a couple hundred dollars a month across various ISP accounts, mobile phone accounts and television / broadcast service accounts... Due to where I live, I'm stuck with Verizon DSL, and I have no choice in the matter, so when their service is crap, I get especially frustrated. You can read a bit about what happened when I tried to get cable service installed <a href="http://getsatisfaction.com/cablevision/topics/_36_000_to_have_cable_internet_service_installed" class="ext-link">here</a>.</p>
<p>I thought I'd repost something that I just put up on everyone's favorite customer service site, <a href="http://www.getsatisfaction.com" class="ext-link">Get Satisfaction</a>.</p>
<blockquote>
<h3>"and the tech support i need anytime" is not available anytime</h3>
<p>I have a dry-loop business DSL account. The telephone number associated with that dry loop account does not appear on any of my paper bills. </p>
<p>I call the verizon business tech support number, and am asked to either enter my number, or say "i don't have one" relying on their voice recognition. </p>
<p>if i call after 5pm, the telephone system instructs me to call back during normal business hours and then disconnects me. i understand sales being closed at 5pm, however tech support being closed is unacceptable. </p>
<p>my connection has been very spotty all day, and now i have to wait until monday to call to speak with their support staff to fix the problem? c'mon. this is supposed to be "business class" service (and support). I pay extra for it, expecting an extra level of support.
</p></blockquote>
<p><em>View the original post over <a href="http://getsatisfaction.com/verizonwireless/topics/_and_the_tech_support_i_need_anytime_is_not_available_anytime" class="ext-link">here</a>.</em></p>
<p><img src="http://s3.amazonaws.com/satisfaction-production/s3_images/7300/IMG_0148_inline.JPG" alt="Verizon Business DSL support = FAIL" /></p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/hgXR-Ec2TAQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/verizon-business-dsl-is-less-for-my-money/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/verizon-business-dsl-is-less-for-my-money/</feedburner:origLink></item>
		<item>
		<title>Basecamp phases out IE6</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/NZP-yJURBJM/</link>
		<comments>http://www.naterkane.com/blog/basecamp-phases-out-ie6/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 18:26:07 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[editorial]]></category>

		<category><![CDATA[internet explorer]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/2008/09/02/basecamp-phases-out-ie6/</guid>
		<description><![CDATA[
Basecamp phases out IE6, originally uploaded by naterkane.

This rules. Thanks for helping the web move forward guys!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/naterkane/2821613625/" title="Basecamp phases out IE6"><img src="http://farm4.static.flickr.com/3294/2821613625_694c0e7249.jpg" alt="Basecamp phases out IE6" /></a><br />
<span class="flickr-caption"><a href="http://www.flickr.com/photos/naterkane/2821613625/">Basecamp phases out IE6</a>, originally uploaded by <a href="http://www.flickr.com/people/naterkane/">naterkane</a>.</span>
</p>
<p>This rules. Thanks for helping the web move forward guys!</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/NZP-yJURBJM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/basecamp-phases-out-ie6/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/basecamp-phases-out-ie6/</feedburner:origLink></item>
		<item>
		<title>Compatibility mode and Targeting IE with valid CSS selectors</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/3WHDw1htf98/</link>
		<comments>http://www.naterkane.com/blog/compatibility-mode-and-targeting-ie-with-valid-css-selectors/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 19:44:46 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=246</guid>
		<description><![CDATA[I caught a link to Microsoft breaks IE8 interoperability promise an article written by Opera’s CTO, Hakon Lie.
Daniel Klima’s comment caught my eye, so I thought I might respond here in addition to writing a comment over here. At the time of this post, my comment hasn't yet been approved by moderators of theregister.co.uk 
And [...]]]></description>
			<content:encoded><![CDATA[<p>I caught a link to <a href="http://www.theregister.co.uk/2008/08/29/hakon_lie_ie8_interoperability" class="ext-link">Microsoft breaks IE8 interoperability promise</a> an article written by Opera’s CTO, Hakon Lie.</p>
<p>Daniel Klima’s comment caught my eye, so I thought I might respond here in addition to writing a comment over <a href="http://www.theregister.co.uk/2008/08/29/hakon_lie_ie8_interoperability/comments/" class="ext-link">here</a>. <em>At the time of this post, my comment hasn't yet been approved by moderators of theregister.co.uk</em> </p>
<blockquote><p>And it is needed as hell,since soem [sic] servers will send IE7 CSS to IE8,which causes IE8 to render page incorrectly.<cite>Daniel Klima</cite></p></blockquote>
<p>9 times out of 10 i have no need in my projects for IE conditional comments. Outside of the additional HTTP request loading an additional file brings, why add ANY browser specific code to a document? If you're using IE CSS filters, then sure, use conditional comments and don't break your validation, but unless you're forced in some way to use some old proprietary-to-IE scripting or styles, there's no point.</p>
<h3>A star shines less brightly</h3>
<p>That star (*) that we've relied to heavily upon to override ones own css with additional rules aimed at forcing weak and non-standards-compliant browsers to render content in a way that satisfies the ego's of creative directors everywhere isn't totally burnt out, but it's on it's way to becoming history.</p>
<p>I put together a little test to see what rules IE8b2 renders and ignores using selectors that won't invalidate you CSS. You can view the remarkably simple test here: <a href="http://www.naterkane.com/blog/wp-content/uploads/2008/08/ie8csstest.html">ie8csstest</a></p>
<h3>What this means</h3>
<ul>
<li>If you are currently targeting IE6 with the <code>* html</code> hack, it won't break your site if you run it in IE8.</li>
<li>If you are currently targeting IE7 with the <code>*:first-child+html</code> hack, it won't break a site in IE8 either.</li>
</ul>
<p>Neither rule break css validation, IE8b2 in standards mode ignores both rules (but renders IE7's rule in compatibility mode), everyone is happy, and "servers don't send the wrong CSS to the browser". </p>
<h3>So what's up with this broken looking button/icon?</h3>
<p>Compatibility and Standards modes can be toggled with a small button that appears to the right of the location bar. If you are viewing a file locally using <code>file://</code> the button is missing, so I have no idea what mode local files are rendered with. For local testing, a locally running server is required such as <a href="http://www.apachefriends.org/en/xampp.html" class="ext-link">xampp</a> or something similar.</p>
<h4>Standards mode <strong>is</strong> default</h4>
<p><div id="attachment_248" class="wp-caption alignleft" style="width: 37px"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/08/compatabilitymode_off.png" alt="Compatibility Mode Button - Off" title="Compatibility Mode Button - Off" width="27" height="27" class="size-full wp-image-248" /><p class="wp-caption-text">Off</p></div> This is the compatibility modes button. Though it's not remarkably clear as to what it is, or what state it represents, when it is in it's "not selected" state, it means the browser rendering pages in Standards mode.</p>
<h4>Compatibility mode</h4>
<p><div id="attachment_248" class="wp-caption alignleft" style="width: 37px"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/08/compatabilitymode_on.png" alt="Compatibility Mode Button - Off" title="Compatibility Mode Button - On" width="27" height="27" class="size-full wp-image-248" /><p class="wp-caption-text">On</p></div> When the button appears to be depressed, the browser is rendering pages in Compatibility mode. Which due to my test's results, is the equivalent of IE7 mode.</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/3WHDw1htf98" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/compatibility-mode-and-targeting-ie-with-valid-css-selectors/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/compatibility-mode-and-targeting-ie-with-valid-css-selectors/</feedburner:origLink></item>
		<item>
		<title>A wee bit o’ standards added to IE8b2</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/XkJAA4VDMfk/</link>
		<comments>http://www.naterkane.com/blog/a-wee-bit-o-standards-added-to-ie8b2/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 07:08:44 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[css]]></category>

		<category><![CDATA[editorial]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=234</guid>
		<description><![CDATA[IE8 beta 2 was made available yesterday. Many folks have already grabbed a copy and started playing and testing, some even read the release notes. PPK has even already updated his CSS compatibility table, that man is on the ball.
The additional standards and CSS support are of course noteworthy

CSS Expressions is no longer supported in [...]]]></description>
			<content:encoded><![CDATA[<p>IE8 beta 2 was <a href="http://www.microsoft.com/windows/internet-explorer/beta/" class="ext-link">made available yesterday</a>. Many folks have already grabbed a copy and started playing and testing, some even read the release notes. <a href="http://www.quirksmode.org/about/intro.html" class="ext-link" rel="colleague">PPK</a> has even already updated his <a href="http://www.quirksmode.org/css/contents.html" class="ext-link">CSS compatibility table</a>, that man is on the ball.</p>
<p>The additional standards and CSS support are of course noteworthy</p>
<blockquote><p>
<strong>CSS Expressions is no longer supported in Internet Explorer 8 Standards mode</strong></p>
<p>CSS Expressions is a proprietary extension to CSS that has a high performance cost. (CSS Expressions is also known as "Dynamic Properties.") Starting with Internet Explorer 8 Beta 2, CSS Expressions is no longer supported in Internet Explorer 8 Standards mode. CSS Expressions is still supported in Internet Explorer 7 Strict mode and Quirks mode for backward compatibility.</p>
<p><strong>Alternative style sheets</strong></p>
<p>Internet Explorer 8 Beta 2 now supports alternative style sheets as specified by HTML4 and by CSS2.1. You can access the alternative styles that are defined by the Web page author by using the <strong>Style</strong> menu under the <strong>Page</strong> menu or under the <strong>View</strong> menu. You can use the <strong>No Style</strong> option on either menu to disable all author styling.<br />
<cite><a href="http://support.microsoft.com/kb/949787">Windows Internet Explorer 8 Beta 2 Release Notes</a></cite>
</p></blockquote>
<p>That's the end of the good news, here's (some of) the rest...</p>
<p>That's all well and good, but it turns out, that there are a ton of other issues, that despite this release being a beta, I still feel are a bit rediculous...</p>
<blockquote><p>
<strong>JScript errors may occur when you upgrade from Internet Explorer 6 on Windows XP or on Windows Server 2003</strong></p>
<p>Do not upgrade from Microsoft Internet Explorer 6 to Internet Explorer 8 Beta 2 on a system that is running Windows XP or Windows Server 2003. A rare installation issue may occur in which Internet Explorer may exhibit false JScript errors and an inability to add Favorites or Web Slices.</p>
<p>To work around this issue, uninstall Window Internet Explorer 8 Beta 2, install Internet Explorer 7, and then upgrade to Window Internet Explorer 8 Beta 2.</p>
<p><cite><a href="http://support.microsoft.com/kb/949787">Windows Internet Explorer 8 Beta 2 Release Notes</a></cite>
</p></blockquote>
<p>Being required to install an interim version (IE7) to upgrade from IE6 (which so many folks are of course still unfortunately running) to avoid erroneous reports of JScript errors (which will of course halt the execution of pretty much any JavaScript/JScript app from running is absurd.</p>
<p>And this one is just downright unacceptable.</p>
<blockquote><p>
<strong>You are prompted to continue installing Internet Explorer 8 Beta 2 if you previously installed Internet Explorer 8 Beta 1</strong></p>
<p>On a computer that is running Windows XP, you install Internet Explorer 8 Beta 1 and then install Windows XP Server Pack 3. Then, you try to install Internet Explorer 8 Beta 2. When you do this, you receive the following message:</p>
<blockquote><p>Install Internet Explorer 8 </p>
<p>Are you sure you want to continue installing Internet Explorer 8? </p>
<p>Setup has detected that you’ve installed a new service pack for your operating system since installing a previous version of Internet Explorer 8. After completing this installation, you will not be able to uninstall Internet Explorer 8. </p>
<p>You can click the ‘OK’ button to continue installing Internet Explorer 8 Beta 2, but you will not be able to uninstall it later.</p>
<p>To work around this issue, and to be able to uninstall Internet Explorer 8 Beta 2 later, click the ‘Cancel’ button and do the following before installing Internet Explorer 8 Beta 2:<br />
•	Uninstall Windows XP Service Pack 3<br />
•	Uninstall Internet Explorer 8 Beta 1<br />
•	Install Windows XP Service Pack 3<br />
•	Install Internet Explorer 8 Beta 2
</p></blockquote>
<p><cite><a href="http://support.microsoft.com/kb/949787">Windows Internet Explorer 8 Beta 2 Release Notes</a></cite>
</p></blockquote>
<p>I was never able to actually install SP3 on my last XP laptop. My first attempt threw an error at the very end of the installation process, after over one hour, and then it took another 45 minutes to "undo" the installation attempt. Being optimistic, I tried it twice, totally over 3 hours of time wasted. So theoretically, if someone had installed SP3 after installing IE8b1, it could be a multi hour process just to make sure that a web browser could at some point be uninstalled in the future. It takes less time to install the full Adobe Creative Suite than a service pack. C'mon now, this is just dumb people.</p>
<p>How is it possible to measure a few positivities for developers when the new issues regarding security, usability, and system stability for a general user are so great? I can't. Though some folks are jumping up and down, the low adoption rate of IE7 has shown us that the additional support for standards in this new version is theoretically exciting, but the fantasy of being free of IE6 and onto a standards based world in the next few short years is exactly that, a fantasy.</p>
<p>Read the full release notes here: <a href="http://support.microsoft.com/kb/949787" class="ext-link">http://support.microsoft.com/kb/949787</a></p>
<p>I tend to run beta's of everything... but for this one, I'm not going to let it run anywhere other than in it's own instance of XP in VMWare.</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/XkJAA4VDMfk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/a-wee-bit-o-standards-added-to-ie8b2/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/a-wee-bit-o-standards-added-to-ie8b2/</feedburner:origLink></item>
		<item>
		<title>A Dynamic “Paid” Stamp for Acrobat</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/0j-lXtxO84E/</link>
		<comments>http://www.naterkane.com/blog/a-dynamic-paid-stamp-for-acrobat/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 06:24:43 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[javascript]]></category>

		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=224</guid>
		<description><![CDATA[I have no plans on writing a tutorial, and I generally find building forms in Acrobat to be a pain, and I don't feel that Acrobat Forms are really worth getting into. On that note, I've never before delved into the weird (Flash 4 esq) world of writing javascript for Acrobat, until now...
Acrobat has a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.naterkane.com/blog/wp-content/uploads/2008/08/paid.png"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/08/paid.png" alt="" title="paid stamp" width="233" height="100" class="alignright size-full wp-image-225" /></a>I have no plans on writing a tutorial, and I generally find building forms in Acrobat to be a pain, and I don't feel that Acrobat Forms are really worth getting into. On that note, I've never before delved into the weird (Flash 4 esq) world of writing javascript for Acrobat, until now...</p>
<p>Acrobat has a neat little feature called Stamps. They are simply other small PDF files that are added to a document to add the same sort of information that a rubber stamp might add to a paper document.</p>
<p>More often than not, I receive invoices and bills in non-paper format. Whether it's an html email, a Word document, a PDF, etc... Instead of printing these bills and invoices out, marking them paid, and filing them in a traditional paper filing cabinet, I decided I want to keep my filing as paper-free as possible. </p>
<p>After wasting over an hour looking though worthless tutorials on how to write javascript for Acrobat Forms, I came up with <a href='http://www.naterkane.com/blog/wp-content/uploads/2008/08/paidstamp1.pdf'>paidstamp1.pdf</a>. Feel free to use it for yourself.</p>
<p>If anyone has anything along these lines that's better than my lazy attempt, please send it to me.</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/0j-lXtxO84E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/a-dynamic-paid-stamp-for-acrobat/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/a-dynamic-paid-stamp-for-acrobat/</feedburner:origLink></item>
		<item>
		<title>Last.fm has a new masthead</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/YorJPLCMKEM/</link>
		<comments>http://www.naterkane.com/blog/lastfm-has-a-new-masthead/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 02:44:35 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/2008/08/20/lastfm-has-a-new-masthead/</guid>
		<description><![CDATA[
Last.fm has a new masthead, originally uploaded by naterkane.
Last.fm has recently decided that they needed a slightly looser looking masthead, and i just noticed it. Me likes.
It comes in black too.
I often forget that sometimes a nothing more than a subtle update to a familiar interface or brand can help to keep things feeling fresh, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/naterkane/2782367301/" title="Last.fm has a new masthead"><img src="http://farm4.static.flickr.com/3110/2782367301_7e73d6cf27.jpg" alt="Last.fm has a new masthead" /></a><br />
<span class="flickr-caption"><a href="http://www.flickr.com/photos/naterkane/2782367301/">Last.fm has a new masthead</a>, originally uploaded by <a href="http://www.flickr.com/people/naterkane/">naterkane</a>.</span></p>
<p><a href="http://last.fm" class="ext-link">Last.fm</a> has recently decided that they needed a slightly looser looking masthead, and i just noticed it. Me likes.</p>
<p>It comes in black too.</p>
<p>I often forget that sometimes a nothing more than a subtle update to a familiar interface or brand can help to keep things feeling fresh, even if there actually isn't anything else substantial that's going on.</p>
<p><a href="http://www.naterkane.com/blog/wp-content/uploads/2008/08/walmart.jpg"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/08/walmart-150x150.jpg" alt="" title="walmart" width="150" height="150" class="alignleft size-thumbnail wp-image-221" /></a>Walmart recently <a href="http://a248.e.akamai.net/f/248/16813/7d/www.walmart.com/i/catalog/modules/G0040/walmart_logo2.gif" class="ext-link">revamped their logo</a>, and I caught it in a broadcast ad. It gives me a smiley face to know that I will no longer have to look at theirs.</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/YorJPLCMKEM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/lastfm-has-a-new-masthead/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/lastfm-has-a-new-masthead/</feedburner:origLink></item>
		<item>
		<title>Small talk with a web designer</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/czzcX6cEM-w/</link>
		<comments>http://www.naterkane.com/blog/small-talk-with-a-web-designer/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 13:44:56 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/2008/08/15/small-talk-with-a-web-designer/</guid>
		<description><![CDATA[
Small talk with a web designer, originally uploaded by naterkane.

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/naterkane/2765563612/" title="Small talk with a web designer"><img src="http://farm4.static.flickr.com/3094/2765563612_953153a2f2.jpg" alt="Small talk with a web designer" /></a><br />
<span class="flickr-caption"><a href="http://www.flickr.com/photos/naterkane/2765563612/">Small talk with a web designer</a>, originally uploaded by <a href="http://www.flickr.com/people/naterkane/">naterkane</a>.</span>
</p></p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/czzcX6cEM-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/small-talk-with-a-web-designer/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/small-talk-with-a-web-designer/</feedburner:origLink></item>
		<item>
		<title>Summer is starting to get hot</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/XKTg4R6Ub5c/</link>
		<comments>http://www.naterkane.com/blog/summer-is-starting-to-get-hot/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 07:20:02 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=204</guid>
		<description><![CDATA[I'm pleased to share that we have a few new clients this month. Two excellent agencies and one bad-ass custom jewelry studio, The Kaplan Thaler Group, Continuity &#038; Complete Technique respectively.
We did a little bit of front end dev work for a rather large client of Continuity's, have a fun microsite that we're helping KTG [...]]]></description>
			<content:encoded><![CDATA[<p>I'm pleased to share that we have a few new clients this month. Two excellent agencies and one bad-ass custom jewelry studio, <a href="http://www.kaplanthaler.com">The Kaplan Thaler Group</a>, <a href="http://www.continuityny.com">Continuity</a> &#038; <a href="http://completetechnique.com/index1.html">Complete Technique</a> respectively.</p>
<p><a href="http://www.completetechnique.com"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/08/completetechnique-150x150.jpg" alt="" title="Complete Technique" width="150" height="150" class="alignright size-thumbnail wp-image-206" /></a>We did a little bit of front end dev work for a rather large client of Continuity's, have a fun microsite that we're helping KTG Buzz (Kaplan Thaler Group's interactive division) build over the next few months, and we're doing some e-commerce work for Complete Technique that's been a blast to dig into.</p>
<p>There are other exciting things in the works, but until they're ready to be introduced into the world, it's mums the word.</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/XKTg4R6Ub5c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/summer-is-starting-to-get-hot/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/summer-is-starting-to-get-hot/</feedburner:origLink></item>
		<item>
		<title>A little award under the belt</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/GM-WSQ4LmcM/</link>
		<comments>http://www.naterkane.com/blog/a-little-award-under-the-belt/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 06:58:48 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[design]]></category>

		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=197</guid>
		<description><![CDATA[Nobody bothered to tell me, but I just got word that TimeInc.com, a website I built for the great folks at ROKKAN back in September 2007, won an award this past April. ROKKAN did all of the IA and creative work, and all I did was the dev, but it was a fun 2-3 weeks [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/08/summit-international-awards-rokkan.jpg" alt="" title="summit-international-awards-rokkan" width="254" height="77" class="alignright size-medium wp-image-200" />Nobody bothered to tell me, but I just got word that <a href="http://www.timeinc.com" class="ext-link">TimeInc.com</a>, a website I built for the great folks at <a href="http://www.rokkan.com" rel="friend met colleague" class="ext-link">ROKKAN</a> back in September 2007, won an award this past April. ROKKAN did all of the IA and creative work, and all I did was the dev, but it was a fun 2-3 weeks putting it together, and I was happy with what launched. </p>
<p>So hooray! The Summit International Awards gave the site a Bronze SCA award. And although I don't know what 'SCA' is an acronym for, it still is nice when other people feel that stuff you did was good.</p>
<p>It's not much of a listing, but <a href="http://www.summitawards.com/component/option,com_directory/page,viewListing/lid,3102/" class="ext-link">here's where it's listed</a>.</p>
<p>And here's what the site looks like:<br />
<a href="http://www.naterkane.com/blog/wp-content/uploads/2008/08/time-inc.jpg"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/08/time-inc-300x217.jpg" alt="" title="time-inc" width="300" height="217" class="alignnone size-medium wp-image-198" /></a></p>
<p>I even put it <a href="http://www.naterkane.com/portfolio/#387" rel="me">in my portfolio</a> last fall (though those screenshots are crappy)</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/GM-WSQ4LmcM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/a-little-award-under-the-belt/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/a-little-award-under-the-belt/</feedburner:origLink></item>
		<item>
		<title>Brightkite rushes to get it right, unlike some others</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/cPbuT6EZrY8/</link>
		<comments>http://www.naterkane.com/blog/brightkite-rushes-to-get-it-right-unlike-some-others/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 21:28:36 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[editorial]]></category>

		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=188</guid>
		<description><![CDATA[With every third "new" native app crashing on my phone after a few minutes of use now that I've upgraded from 1.1.4 to 2.0, I'm not in a huge rush to jump from the web apps that I like and use to native ones.
Doing it right doesn't mean rushing to the market place
I don't honestly [...]]]></description>
			<content:encoded><![CDATA[<p>With every third "new" native app crashing on my phone after a few minutes of use now that I've upgraded from 1.1.4 to 2.0, I'm not in a huge rush to jump from the web apps that I like and use to native ones.</p>
<h3>Doing it right doesn't mean rushing to the market place</h3>
<p><a href="http://www.brightkite.com"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/07/brightkite_logo.png" alt="" title="Brightkite" width="245" height="75" class="alignright size-full wp-image-189" /></a>I don't honestly know why <a href="http://www.intensedebate.com/postRSS/3510601" class="ext-link">folks</a> <a href="http://getsatisfaction.com/brightkite/topics/is_there_a_date_for_an_iphone_app" class="ext-link">have</a> <a href="http://getsatisfaction.com/brightkite/topics/you_are_here_iphone_check_in" class="ext-link">been</a> <a href="http://getsatisfaction.com/brightkite/topics/periodic_auto_check_in_using_gps_iphone" class="ext-link">a bit</a> anxious that <a href="http://www.brightkite.com" class="ext-link">Brightkite</a> hasn't yet released a native iPhone app. Maybe it's like when the holiday season rolls around and you're the only Jewish kid on the block... you see all of the other kids get a ton of stuff at once, and you have to wait through a day of sweaters, boxes of pencils and other gifts that don't stimulate your holiday fantasies until you get that <a href="http://en.wikipedia.org/wiki/Red_Ryder_BB_Gun">Red Ryder BB Gun</a> you've been pining for. And what happens when another kid gets it before you do? They shoot some other kid's eye out... totally blowing your chances at getting one for yourself.</p>
<p>Yes there are quite a few other location-based networks <a href="http://www.loopt.com/" class="ext-link">out</a> <a href="http://tapulous.com/twinkle/" class="ext-link">there</a>, but most of them focus on a typical social-networking model (or twitter) and add location like it's salad dressing on iceburg lettuce. To me, Brightkite just tastes like a whole different kind of salad.</p>
<p>It seems like most people just don't want to have to type in the address of where they are, and since FireEagle's API allow's digestion of data much easier than sharing it's data with other services, there hasn't really been an automated way to geolocate these services from raw geodata to a physical address. One thing I did as soon as I started using Brightkite to make mobile checkins easier, is to create a placemark of addresses or businesses I visit frequently, so when I just type in the name of the placemark, everything comes up in a jiffy.</p>
<p>Here's a short explanation as to why they didn't have an app ready to roar on the 10th (or 11th) of this month:</p>
<blockquote>
<ol style="list-style:decimal; padding-left: 2em;">
<li><strong>We don’t have a 3G iPhone to test on yet.</strong> More specifically, we’d like to see how well the GPS in the new phones works.</li>
<li><strong>We don’t want to release something that’s not rock-solid.</strong> And by rock-solid, we don’t mean crashing, but rock-solid from a usability standpoint. The app should be as easy to use as possible. We have some very ambitious goals concerning the user interface, but getting it just right takes time and we’re just not quite there yet.</li>
</ol>
</blockquote>
<p>Not having a copy of the device you're developing for is a great reason to hold off releasing software. But what's special here is their second point... They are really stressing usability, they care about not only if the software is going to function, but really how each user is going to interact with it's interface.</p>
<p>In the meantime they thought they'd <a href="http://blog.brightkite.com/2008/07/10/brightkite-api-beta-available/" class="ext-link">release their API</a> and <a href="http://blog.brightkite.com/2008/07/17/new-feature-bring-your-online-profiles-into-the-real-world/" class="ext-link">add a new feature</a> to keep people (and developers) happy.</p>
<h3>So who's maybe jumped the gun here?</h3>
<p><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/07/inside-facebook-c2bb-facebook-for-iphone-application-launches.jpg" alt="" title="facebook for iphone application launches" width="188" height="264" class="alignright size-full wp-image-191" />Everyone's favorite giant corporation! This is a great example of a native app that I've installed, then abandoned for the web app is Facebook's... The other day Facebook released an <a href="http://mashable.com/2008/07/19/facebook-iphone-2/" class="ext-link">update</a> to their <a href="http://www.insidefacebook.com/2008/07/10/facebook-for-iphone-application-launches/" class="ext-link">already released</a> native app for the iPhone, and though people seem really happy with the update, I've honestly failed to notice any significant changes (though they must be there.... somewhere) and have gone back to using their web app over at <code>iphone.facebook.com</code> since it allows me to respond to friend and even requests unlike the native app. Though the <abbr title="User Interface">UI</abbr> of the native app is relatively snappy, it doesn't have nearly all of the functionality of their existing web app, it still requires full connectivity to use, and isn't much more that a bookmark to a dumbed-down version of their previous offering.</p>
<h3>So is it worth it to go native?</h3>
<p>John Allsop also just wrote a <a href="http://www.webdirections.org/blog/iphone-native-apps-the-great-leap-backwards/" class="ext-link">long and interesting piece</a> comparing native apps to webapps over at web directions south. Though he didn't really look into anything but the free apps, the article does have some good points, especially regarding how to monetize your efforts (as a developer or company), and what it really takes to make a couple of bucks off your hard work.</p>
<blockquote><p>Let’s say you sell your App for $1.95. You’ll need to sell 25,000 copies to make $50KUSD. Hang on, Apple takes about 30% so you’ll need to sell 30% more. That’s 36,500 copies. If you look at a typical conversion rate of say 3% of downloads to sales (in my experience, good Mac apps can get that kind of conversion), if this were a desktop shareware app, you’d need to have 1.2 million downloads. That’s more than 10% of the entire projected iPhone user base for the end of 2008 interested in your app.</p>
<p>OK, let’s think about higher price points - at $5, you need to sell 14,000 copies to make $50KUSD, with a theoretical download of 476,000 demo copies. Up this to $10, and we are looking at 7,000 sales, and 233,000 demo downloads. And that’s for a single developer. Double this for 2 developers, triple it for a team of three, and so on.
</p></blockquote>
<blockquote><p>Now, let’s compare the “sell the app” business model with the increasingly common “subscribing to a service” model. Let’s say we only have customers paying $5 a month. They are already paying $60 a year! So to make our $50KUSD, we’ll need around 1000 customers (about 14% of the number of sales of a $10 app). And I’ve factored in about 12% costs here (transaction and hosting costs, based on personal experience).
</p></blockquote>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/cPbuT6EZrY8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/brightkite-rushes-to-get-it-right-unlike-some-others/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/brightkite-rushes-to-get-it-right-unlike-some-others/</feedburner:origLink></item>
		<item>
		<title>Twitter Grows Even More - Did Yuh’ Know?</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/AWtAg9IAFoU/</link>
		<comments>http://www.naterkane.com/blog/twitter-grows-even-more-did-yuh-know/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 17:48:49 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[social web]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/2008/07/07/twitter-grows-even-more-did-yuh-know/</guid>
		<description><![CDATA[Another Twitter ( http://twitter.com ) API script announced today, Did Yuh' Know? ( http://didyuh.com ). Did Yuh' will allow Twitter users to prefix their messages with DYK: or YUH: to note that their message contains short fact, clipping, or idea. Messages with the prefixes will be displayed on the Did Yuh' site. This service is [...]]]></description>
			<content:encoded><![CDATA[<p>Another Twitter ( <a href="http://www.twitter.com">http://twitter.com</a> ) API script announced today, Did Yuh' Know? ( <a href="http://didyuh.com">http://didyuh.com</a> ). Did Yuh' will allow Twitter users to prefix their messages with DYK: or YUH: to note that their message contains short fact, clipping, or idea. Messages with the prefixes will be displayed on the Did Yuh' site. This service is similar to <a href="http://www.sidebarcreative.com" rel="friend met colleague">Sidebar Creative'</a>s <a href="http://overheard.it/">http://overheard.it/</a> and <a href="http://www.matthewarmendariz.com" rel="friend met colleague">Matt</a> &#038; <a href="http://enobrev.com/" rel="friend met colleague"><ins datetime="2008-07-07T21:05:15+00:00">Mark</ins></a> Armendariz's (they're friends but not actually related) <a href="http://yayandnay.com">http://yayandnay.com</a></p>
<p><a href="http://didyuh.com/">read more</a> | <a href="http://digg.com/design/Twitter_Grows_Even_More_Did_Yuh_Know">digg story</a></p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/AWtAg9IAFoU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/twitter-grows-even-more-did-yuh-know/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/twitter-grows-even-more-did-yuh-know/</feedburner:origLink></item>
		<item>
		<title>Outer-glow effect with PHP and the GD library</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/GzoeposygwM/</link>
		<comments>http://www.naterkane.com/blog/outer-glow-effect-with-php-and-the-gd-library/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 04:19:34 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[flickr]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/?p=168</guid>
		<description><![CDATA[I was recently working on a photo gallery project for a friend who is an avid Flickr user. She had an established workflow when it came to making her work available to her friends and clients on Flickr and didn't want to change that workflow if she didn't have to.
Ok, now it's time to skip [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently working on a photo gallery project for a friend who is an avid Flickr user. She had an established workflow when it came to making her work available to her friends and clients on Flickr and didn't want to change that workflow if she didn't have to.</p>
<p>Ok, now it's time to skip ahead. I built the side using the Flickr API, and everything is working swimmingly. I decided to hire my friend <ins datetime="2008-06-05T22:13:55+00:00"><a href="http://www.matthewarmendariz.com" rel="friend met">Matthew Armendariz</a></ins> to handle the interface design. Since the client was a friend of mine, having someone else be responsible for the creative would keep me free from having to worry about that process, and Matt is a pretty good designer.</p>
<p><a href='http://www.naterkane.com/blog/2008/06/04/outer-glow-effect-with-php-and-the-gd-library/rysq_home/' rel="attachment wp-att-169"><img src="http://www.naterkane.com/blog/wp-content/uploads/2008/06/rysq_home-300x219.jpg" alt="" title="Rysq.net landing page" width="300" height="219" class="alignright size-medium wp-image-169" /></a>It took no time for Matt to whip up a few comps, the one we ended up going with had a slight outer-glow around each photograph, and since we were working with seemingly fixed output from Flickr, I figured, no worries, I'll just create two "glowing" background images, and display one or the other depending on whether the current photo was portrait or landscape.</p>
<p>It worked like a charm... until I came across a few photographs that the client had uploaded with non-standard aspect ratios. Then I had the realization that these outer glows needed to be dynamically generated. Since as the developer there wasn't any way that I could trust that she upload files of any specific aspect ratio, and since she was using Flickr to manage her photos I couldn't (and wouldn't want to anyway) enforce any specific sizes uploaded, I needed to come up with a an easy, browser agnostic, and friendly solution.</p>
<p><abbr title="Cascading Style Sheets">CSS</abbr> wasn't going to help me. SVG and Canvas isn't broadly enough supported. And since this site was pretty much Javascript free, I had to look to the server to help me execute the agreed upon creative work</p>
<h3>Oh my GD!</h3>
<p>The GD library is an often overlooked alternative to ImageMagick, but since it's light weight, comes with most PHP installs, and was already available on the production server, it seemed like the best choice.</p>
<p>First I had to start with making sure that the file I was generating was going to identify itself properly</p>
<div class="igBar"><span id="lphp-14"><a href="#" onclick="javascript:showPlainTxt('php-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-14">
<div class="php" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style=""><a href="http://www.php.net/header"><span style="color:#000066;">header</span></a> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"Content-type: image/png"</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Next was to pull in the parameters i was going to need to generate the correct size image... I decided to go with a <code>22px</code> "border", which is really just the size of the glow.</p>
<div class="igBar"><span id="lphp-15"><a href="#" onclick="javascript:showPlainTxt('php-15'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-15">
<div class="php" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#0000FF;">$border</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'b'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>? <span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'b'</span><span style="color:#006600; font-weight:bold;">&#93;</span> : <span style="color:#CC66CC;color:#800000;">22</span>;</div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#0000FF;">$width</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'w'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? <span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'w'</span><span style="color:#006600; font-weight:bold;">&#93;</span>+<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$border</span>*<span style="color:#CC66CC;color:#800000;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span>: <span style="color:#CC66CC;color:#800000;">500</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#0000FF;">$height</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/isset"><span style="color:#000066;">isset</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'h'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? <span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'h'</span><span style="color:#006600; font-weight:bold;">&#93;</span>+<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$border</span>*<span style="color:#CC66CC;color:#800000;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span>: <span style="color:#CC66CC;color:#800000;">500</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Next we create the image, using the specified or default dimensions. And then define the colors (in RGB) that will be used to generate the image... white and light gray.</p>
<div class="igBar"><span id="lphp-16"><a href="#" onclick="javascript:showPlainTxt('php-16'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-16">
<div class="php" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#0000FF;">$im</span> = @imagecreatetruecolor<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$width</span>, <span style="color:#0000FF;">$height</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; &nbsp; or <a href="http://www.php.net/die"><span style="color:#000066;">die</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"Cannot Initialize new GD image stream"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#0000FF;">$white</span> = imagecolorallocate<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>, <span style="color:#CC66CC;color:#800000;">255</span>, <span style="color:#CC66CC;color:#800000;">255</span>, <span style="color:#CC66CC;color:#800000;">255</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#0000FF;">$gray</span>= imagecolorallocate<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>,<span style="color:#CC66CC;color:#800000;">200</span>,<span style="color:#CC66CC;color:#800000;">200</span>,<span style="color:#CC66CC;color:#800000;">200</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Now it's time to create our initial shape... First the image is painted entirely white, and then a box is drawn inside of the white image with the gray color.</p>
<div class="igBar"><span id="lphp-17"><a href="#" onclick="javascript:showPlainTxt('php-17'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-17">
<div class="php" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style="">imagefill<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>, <span style="color:#CC66CC;color:#800000;">0</span>, <span style="color:#CC66CC;color:#800000;">0</span>, <span style="color:#0000FF;">$white</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">imagefilledrectangle<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>, <span style="color:#0000FF;">$border</span>, <span style="color:#0000FF;">$border</span>, <span style="color:#0000FF;">$width</span>-<span style="color:#0000FF;">$border</span>, <span style="color:#0000FF;">$height</span>-<span style="color:#0000FF;">$border</span>,<span style="color:#0000FF;">$gray</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Now there's just a grey box with a white border... not only is it boring, but it's not glowing at all. It's time to fix this. GD has a few decent filters built in, just as any image library should, and the ones that I chose to use for this were <code>IMG_FILTER_SMOOTH</code> and <code>IMG_FILTER_GAUSSIAN_BLUR</code>. The gaussian blur filter, unlike the one you find in PhotoShop, does not unfortunately accept parameters, so instead I had to put calls to GD's <code>imagefilter()</code> method in a <code>for</code> loop. The loop allowed me to also easily play around with the number of times and in what order each filter was applied to the image without having to do too much cutting and pasting.</p>
<div class="igBar"><span id="lphp-18"><a href="#" onclick="javascript:showPlainTxt('php-18'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-18">
<div class="php" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#616100;">for</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$i</span> = <span style="color:#CC66CC;color:#800000;">0</span>; <span style="color:#0000FF;">$i</span> &lt;<span style="color:#CC66CC;color:#800000;">10</span>; <span style="color:#0000FF;">$i</span>++<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; imagefilter<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>,IMG_FILTER_SMOOTH, <span style="color:#CC66CC;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; imagefilter<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>,IMG_FILTER_GAUSSIAN_BLUR<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; imagefilter<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>,IMG_FILTER_GAUSSIAN_BLUR<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Now we just generate the image as a png, and then clear the memory</p>
<div class="igBar"><span id="lphp-19"><a href="#" onclick="javascript:showPlainTxt('php-19'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-19">
<div class="php" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style="">imagepng<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">imagedestroy<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>And that's all there is too it. Since the default size specified is <code>500px</code> square, the default output looks like <a href="http://www.naterkane.com/sandbox/images/blur.php">this</a>. If I need to generate an outer&ndash;glow for an image that's <code>250px</code> tall by <code>400px</code> wide, I add the following query to the URI of the file <a href="http://www.naterkane.com/sandbox/images/blur.php?h=250&#038;w=400"><code>blur.php?h=250&#038;w=400</code></a> and voila! Of course caching the output of this file on the server will speed up any requests after the initial one, but that is beyond the scope of this post.</p>
<p>I've included the source of the file below.</p>
<div class="igBar"><span id="lphp-20"><a href="#" onclick="javascript:showPlainTxt('php-20'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-20">
<div class="php" style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">
<ol>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="color:#26536A;">
<div style=""><a href="http://www.php.net/header"><span style="color:#000066;">header</span></a> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"Content-type: image/png"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#0000FF;">$border</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'b'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span>? <span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'b'</span><span style="color:#006600; font-weight:bold;">&#93;</span> : <span style="color:#CC66CC;color:#800000;">22</span>;</div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#0000FF;">$width</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'w'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? <span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'w'</span><span style="color:#006600; font-weight:bold;">&#93;</span>+<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$border</span>*<span style="color:#CC66CC;color:#800000;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span>: <span style="color:#CC66CC;color:#800000;">500</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#0000FF;">$height</span> = <span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/isset"><span style="color:#000066;">isset</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'h'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? <span style="color:#0000FF;">$_REQUEST</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'h'</span><span style="color:#006600; font-weight:bold;">&#93;</span>+<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$border</span>*<span style="color:#CC66CC;color:#800000;">2</span><span style="color:#006600; font-weight:bold;">&#41;</span>: <span style="color:#CC66CC;color:#800000;">500</span>;</div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#0000FF;">$im</span> = @imagecreatetruecolor<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$width</span>, <span style="color:#0000FF;">$height</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; &nbsp; or <a href="http://www.php.net/die"><span style="color:#000066;">die</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"Cannot Initialize new GD image stream"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#0000FF;">$white</span> = imagecolorallocate<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>, <span style="color:#CC66CC;color:#800000;">255</span>, <span style="color:#CC66CC;color:#800000;">255</span>, <span style="color:#CC66CC;color:#800000;">255</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#0000FF;">$gray</span>= imagecolorallocate<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>,<span style="color:#CC66CC;color:#800000;">200</span>,<span style="color:#CC66CC;color:#800000;">200</span>,<span style="color:#CC66CC;color:#800000;">200</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">imagefill<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>, <span style="color:#CC66CC;color:#800000;">0</span>, <span style="color:#CC66CC;color:#800000;">0</span>, <span style="color:#0000FF;">$white</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style="">imagefilledrectangle<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>, <span style="color:#0000FF;">$border</span>, <span style="color:#0000FF;">$border</span>, <span style="color:#0000FF;">$width</span>-<span style="color:#0000FF;">$border</span>, <span style="color:#0000FF;">$height</span>-<span style="color:#0000FF;">$border</span>,<span style="color:#0000FF;">$gray</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#616100;">for</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$i</span> = <span style="color:#CC66CC;color:#800000;">0</span>; <span style="color:#0000FF;">$i</span> &lt;<span style="color:#CC66CC;color:#800000;">10</span>; <span style="color:#0000FF;">$i</span>++<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; imagefilter<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>,IMG_FILTER_SMOOTH, <span style="color:#CC66CC;color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">&nbsp; &nbsp; imagefilter<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>,IMG_FILTER_GAUSSIAN_BLUR<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style="">&nbsp; &nbsp; imagefilter<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span>,IMG_FILTER_GAUSSIAN_BLUR<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style=""><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="color:#3A6A8B;">
<div style="">imagepng<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#26536A;">
<div style="">imagedestroy<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$im</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="color:#3A6A8B;">
<div style=""><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/GzoeposygwM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/outer-glow-effect-with-php-and-the-gd-library/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/outer-glow-effect-with-php-and-the-gd-library/</feedburner:origLink></item>
		<item>
		<title>Facebook fails on a semicolon</title>
		<link>http://feedproxy.google.com/~r/naterkane/~3/DptHYY_XYeY/</link>
		<comments>http://www.naterkane.com/blog/facebook-fails-on-a-semicolon/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 03:17:32 +0000</pubDate>
		<dc:creator>nater kane</dc:creator>
		
		<category><![CDATA[editorial]]></category>

		<guid isPermaLink="false">http://www.naterkane.com/blog/2008/06/02/facebook-fails-on-a-semicolon/</guid>
		<description><![CDATA[
Facebook fails on a semicolon, originally uploaded by naterkane.

A simple semicolon caused Facebook to fail on me this evening. Mobile Safari claimed no errors since this was something going wrong on the server.
I was really surprised that this error wasn't handled very elegantly or deliver any kind of meaningful message that could have possibly empowered [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/naterkane/2546512051/" title="Facebook fails on a semicolon"><img src="http://farm4.static.flickr.com/3263/2546512051_a83308b1a8.jpg" alt="Facebook fails on a semicolon" /></a><br />
<span class="flickr-caption"><a href="http://www.flickr.com/photos/naterkane/2546512051/">Facebook fails on a semicolon</a>, originally uploaded by <a href="http://www.flickr.com/people/naterkane/">naterkane</a>.</span>
</p>
<p>A simple semicolon caused Facebook to fail on me this evening. Mobile Safari claimed no errors since this was something going wrong on the server.</p>
<p>I was really surprised that this error wasn't handled very elegantly or deliver any kind of meaningful message that could have possibly empowered an unsophisticated user. If I was provided a link I could click to send an email to support with any data they might be able to work with I would have felt less stuck, but instead I had to just quit Mobile Safari and try hitting the same page again a few minutes later. Once I did that everything was kosher, but until I created that new session, nothing changed when I went to visit this one friend's profile.</p>
<p>These things happen, and I'm not trying to be a hater, but since Facebook have stepped up and provided such an excellent iPhone UI, I was just expecting to be impressed, and not feel lost, with how they would handle an error if one would arise.</p>
<img src="http://feeds.feedburner.com/~r/naterkane/~4/DptHYY_XYeY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.naterkane.com/blog/facebook-fails-on-a-semicolon/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.naterkane.com/blog/facebook-fails-on-a-semicolon/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 3.430 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-01 10:38:03 --><!-- Compression = gzip -->
