<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Jeremy Johnstone</title>
	
	<link>http://www.jeremyjohnstone.com/blog</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Mon, 27 Oct 2008 03:42:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<geo:lat>37.346241</geo:lat><geo:long>-121.984608</geo:long><image><url>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</url></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/JeremyJohnstoneBlog" type="application/rss+xml" /><item><title>SPOT tracking of my flight to Seoul, KR [Flickr]</title><link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/469714804/</link><category>flight</category><category>spot</category><category>gps</category><category>tracking</category><category>findmespotcom</category><category>unitedairlines893</category><category>sfotoicn</category><category>sanfranciscotoseoulkr</category><dc:creator>Jeremy Johnstone</dc:creator><pubDate>Sat, 29 Nov 2008 16:32:23 -0600</pubDate><guid isPermaLink="false">tag:flickr.com,2005:/photo/3068558489</guid><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/jeremyjohnstone/"&gt;Jeremy Johnstone&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/jeremyjohnstone/3068558489/" title="SPOT tracking of my flight to Seoul, KR"&gt;&lt;img src="http://farm4.static.flickr.com/3287/3068558489_811c50bd99_m.jpg" width="240" height="103" alt="SPOT tracking of my flight to Seoul, KR" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've attempted this numerous times on flights, but never got the thing to sync with the satellites. Not sure what was special about this trip, but as you can see it did an amazing job of tracking my location in flight. This totally rocks!&lt;br /&gt;
&lt;br /&gt;
Never heard of a SPOT? &lt;a href="http://www.findmespot.com"&gt;www.findmespot.com&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/469714804" height="1" width="1"/&gt;</description><dc:date.Taken>2008-11-29T14:32:23-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/jeremyjohnstone/3068558489/</feedburner:origLink><enclosure url="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~5/469714806/3068558489_811c50bd99_m.jpg" length="0" type="image/jpeg" /><feedburner:origEnclosureLink>http://farm4.static.flickr.com/3287/3068558489_811c50bd99_m.jpg</feedburner:origEnclosureLink></item><item><title>Political comic in the newspaper today [Flickr]</title><link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/468671493/</link><category>emailed</category><category>iphone</category><dc:creator>Jeremy Johnstone</dc:creator><pubDate>Fri, 28 Nov 2008 14:13:17 -0600</pubDate><guid isPermaLink="false">tag:flickr.com,2005:/photo/3065755407</guid><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/jeremyjohnstone/"&gt;Jeremy Johnstone&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/jeremyjohnstone/3065755407/" title="Political comic in the newspaper today"&gt;&lt;img src="http://farm4.static.flickr.com/3068/3065755407_a86deba09e_m.jpg" width="240" height="180" alt="Political comic in the newspaper today" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;quot;Using Clinton's people for your team is fine. But if I ever see Monica Lewinsky in the White House you &lt;b&gt;are &lt;u&gt;TOAST&lt;/u&gt;!&lt;/b&gt;&amp;quot;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/468671493" height="1" width="1"/&gt;</description><dc:date.Taken>2008-11-28T11:30:52-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/jeremyjohnstone/3065755407/</feedburner:origLink><enclosure url="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~5/468671494/3065755407_a86deba09e_m.jpg" length="0" type="image/jpeg" /><feedburner:origEnclosureLink>http://farm4.static.flickr.com/3068/3065755407_a86deba09e_m.jpg</feedburner:origEnclosureLink></item><item><title>Indoor skydiving [Flickr]</title><link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/462608390/</link><category>skydiving</category><category>flight</category><category>indoor</category><category>ifly</category><category>verticalwindtunnel</category><category>iflysfbay</category><dc:creator>Jeremy Johnstone</dc:creator><pubDate>Sun, 23 Nov 2008 01:48:19 -0600</pubDate><guid isPermaLink="false">tag:flickr.com,2005:/photo/3051600977</guid><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/jeremyjohnstone/"&gt;Jeremy Johnstone&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/jeremyjohnstone/3051600977/" title="Indoor skydiving"&gt;&lt;img src="http://farm4.static.flickr.com/3064/3051600977_9b69d59c03_m.jpg" width="240" height="160" alt="Indoor skydiving" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/462608390" height="1" width="1"/&gt;</description><dc:date.Taken>2008-11-22T23:48:19-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/jeremyjohnstone/3051600977/</feedburner:origLink><enclosure url="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~5/462608391/3051600977_9b69d59c03_m.jpg" length="0" type="image/jpeg" /><feedburner:origEnclosureLink>http://farm4.static.flickr.com/3064/3051600977_9b69d59c03_m.jpg</feedburner:origEnclosureLink></item><item><title>Indoor skydiving [Flickr]</title><link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/462608392/</link><category>skydiving</category><category>flight</category><category>indoor</category><category>ifly</category><category>verticalwindtunnel</category><category>iflysfbay</category><dc:creator>Jeremy Johnstone</dc:creator><pubDate>Sun, 23 Nov 2008 01:48:14 -0600</pubDate><guid isPermaLink="false">tag:flickr.com,2005:/photo/3052437478</guid><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/jeremyjohnstone/"&gt;Jeremy Johnstone&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/jeremyjohnstone/3052437478/" title="Indoor skydiving"&gt;&lt;img src="http://farm4.static.flickr.com/3246/3052437478_984b4c4677_m.jpg" width="240" height="160" alt="Indoor skydiving" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/462608392" height="1" width="1"/&gt;</description><dc:date.Taken>2008-11-22T23:48:14-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/jeremyjohnstone/3052437478/</feedburner:origLink><enclosure url="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~5/462608393/3052437478_984b4c4677_m.jpg" length="0" type="image/jpeg" /><feedburner:origEnclosureLink>http://farm4.static.flickr.com/3246/3052437478_984b4c4677_m.jpg</feedburner:origEnclosureLink></item><item><title>Indoor skydiving [Flickr]</title><link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/462608394/</link><category>skydiving</category><category>flight</category><category>indoor</category><category>ifly</category><category>verticalwindtunnel</category><category>iflysfbay</category><dc:creator>Jeremy Johnstone</dc:creator><pubDate>Sun, 23 Nov 2008 01:48:10 -0600</pubDate><guid isPermaLink="false">tag:flickr.com,2005:/photo/3052437378</guid><description>&lt;p&gt;&lt;a href="http://www.flickr.com/people/jeremyjohnstone/"&gt;Jeremy Johnstone&lt;/a&gt; posted a photo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/jeremyjohnstone/3052437378/" title="Indoor skydiving"&gt;&lt;img src="http://farm4.static.flickr.com/3055/3052437378_537b143166_m.jpg" width="240" height="160" alt="Indoor skydiving" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/462608394" height="1" width="1"/&gt;</description><dc:date.Taken>2008-11-22T23:48:10-08:00</dc:date.Taken><feedburner:origLink>http://www.flickr.com/photos/jeremyjohnstone/3052437378/</feedburner:origLink><enclosure url="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~5/462608395/3052437378_537b143166_m.jpg" length="0" type="image/jpeg" /><feedburner:origEnclosureLink>http://farm4.static.flickr.com/3055/3052437378_537b143166_m.jpg</feedburner:origEnclosureLink></item><item>
		<title>PHP parser for OS X plist XML files</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/433175870/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/10/26/php-parser-for-os-x-plist-xml-files/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 03:42:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Apple]]></category>

		<category><![CDATA[git]]></category>

		<category><![CDATA[github]]></category>

		<category><![CDATA[iTunes]]></category>

		<category><![CDATA[iTunes Library]]></category>

		<category><![CDATA[metadata]]></category>

		<category><![CDATA[OS X]]></category>

		<category><![CDATA[parser]]></category>

		<category><![CDATA[parsing]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[php_class_lib]]></category>

		<category><![CDATA[plist]]></category>

		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=384</guid>
		<description><![CDATA[Digging around today for a PHP parser for OSX plist files, I was surprised to find no good pre-existing solutions. Even Apple&#8217;s own site gives a relatively poor solution to the problem (see here). Normally SimpleXML is enough to handle most XML parsing needs, but the plist XML format is just broken enough to make [...]]]></description>
			<content:encoded><![CDATA[<p>Digging around today for a <a href="http://www.jeremyjohnstone.com/blog/archives/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/parser/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parser">parser</a> for OSX <a href="http://www.jeremyjohnstone.com/blog/archives/tag/plist/" class="st_tag internal_tag" rel="tag" title="Posts tagged with plist">plist</a> files, I was surprised to find no good pre-existing solutions. Even <a href="http://www.jeremyjohnstone.com/blog/archives/tag/apple/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Apple">Apple</a>&#8217;s own site gives a relatively poor solution to the problem (<a href="http://developer.apple.com/internet/opensource/php.html">see here</a>). Normally SimpleXML is enough to handle most <a href="http://www.jeremyjohnstone.com/blog/archives/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/parsing/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parsing">parsing</a> needs, but the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/plist/" class="st_tag internal_tag" rel="tag" title="Posts tagged with plist">plist</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/xml/" class="st_tag internal_tag" rel="tag" title="Posts tagged with XML">XML</a> format is just broken enough to make <a href="http://www.jeremyjohnstone.com/blog/archives/tag/parsing/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parsing">parsing</a> it with SimpleXML virtually impossible. Since I hadn&#8217;t played with XMLReader much, I thought it would be a good chance to give it a spin. For the anxious types, the code is available on <a href="http://github.com/jsjohnst/php_class_lib/tree/master">github in my php_class_lib project</a>, so dig right in. Read on for a simple <a href="http://www.jeremyjohnstone.com/blog/archives/tag/example/" class="st_tag internal_tag" rel="tag" title="Posts tagged with example">example</a> (included in the repos).<br />
<span id="more-384"></span></p>
<p>The original intent of the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/parser/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parser">parser</a> for me was to parse my <a href="http://www.jeremyjohnstone.com/blog/archives/tag/itunes/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iTunes">iTunes</a>&#8216; library in <a href="http://www.jeremyjohnstone.com/blog/archives/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>, so <a href="http://github.com/jsjohnst/php_class_lib/tree/master/classes/parsers/plist/example.php">this example</a> will show doing just that:</p>
<div class="codesnip-container" >&lt;?<a href="http://www.jeremyjohnstone.com/blog/archives/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">php</a></p>
<p>include(&#8221;<a href="http://github.com/jsjohnst/php_class_lib/tree/master/classes/parsers/plist/PlistParser.inc">PlistParser.inc</a>&#8220;);</p>
<p>$<a href="http://www.jeremyjohnstone.com/blog/archives/tag/parser/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parser">parser</a> = new plistParser();<br />
$<a href="http://www.jeremyjohnstone.com/blog/archives/tag/plist/" class="st_tag internal_tag" rel="tag" title="Posts tagged with plist">plist</a> = $<a href="http://www.jeremyjohnstone.com/blog/archives/tag/parser/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parser">parser</a>->parse(dirname(__FILE__) . &#8220;/<a href="http://github.com/jsjohnst/php_class_lib/tree/master/classes/parsers/plist/iTunes.xml">iTunes.xml</a>&#8220;);<br />
var_dump($<a href="http://www.jeremyjohnstone.com/blog/archives/tag/plist/" class="st_tag internal_tag" rel="tag" title="Posts tagged with plist">plist</a>);</p>
<p>?&gt;</p></div>
<p>And from that, the output is as follows:</p>
<blockquote><pre>
array(8) {
  ["Major Version"]=>
  int(1)
  ["Minor Version"]=>
  int(1)
  ["Application Version"]=>
  string(5) "8.0.1"
  ["Features"]=>
  int(5)
  ["Show Content Ratings"]=>
  bool(true)
  ["Music Folder"]=>
  string(60) "file://localhost/Users/testUser/Music/<a href="http://www.jeremyjohnstone.com/blog/archives/tag/itunes/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iTunes">iTunes</a>/<a href="http://www.jeremyjohnstone.com/blog/archives/tag/itunes/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iTunes">iTunes</a>%20Music/&#8221;
  [&#8221;Library Persistent ID&#8221;]=>
  string(15) &#8220;C39203948AF3D3E&#8221;
  [&#8221;Tracks&#8221;]=>
  array(1) {
    [1]=>
    array(25) {
      [&#8221;Track ID&#8221;]=>
      int(1)
      [&#8221;Name&#8221;]=>
      string(8) &#8220;My Track&#8221;
      [&#8221;Artist&#8221;]=>
      string(9) &#8220;My Artist&#8221;
      [&#8221;Album&#8221;]=>
      string(8) &#8220;My Album&#8221;
      [&#8221;Genre&#8221;]=>
      string(8) &#8220;My Genre&#8221;
      [&#8221;Kind&#8221;]=>
      string(15) &#8220;MPEG audio file&#8221;
      [&#8221;Size&#8221;]=>
      int(123456)
      [&#8221;Total Time&#8221;]=>
      int(123456)
      [&#8221;Track Number&#8221;]=>
      int(1)
      [&#8221;Year&#8221;]=>
      int(2008)
      [&#8221;Date Modified&#8221;]=>
      string(20) &#8220;2008-03-03T03:33:33Z&#8221;
      [&#8221;Date Added&#8221;]=>
      string(20) &#8220;2008-03-03T03:33:33Z&#8221;
      [&#8221;Bit Rate&#8221;]=>
      int(128)
      [&#8221;Sample Rate&#8221;]=>
      int(44100)
      [&#8221;Comments&#8221;]=>
      string(20) &#8220;All Rights Reserved.&#8221;
      [&#8221;Release Date&#8221;]=>
      string(20) &#8220;2007-03-12T04:01:37Z&#8221;
      [&#8221;Persistent ID&#8221;]=>
      string(14) &#8220;C3E339393939E3&#8243;
      [&#8221;Track Type&#8221;]=>
      string(4) &#8220;File&#8221;
      [&#8221;Podcast&#8221;]=>
      bool(false)
      [&#8221;Unplayed&#8221;]=>
      bool(true)
      [&#8221;File Type&#8221;]=>
      int(123456)
      [&#8221;File Creator&#8221;]=>
      int(123456)
      [&#8221;Location&#8221;]=>
      string(66) &#8220;file://localhost/Users/testUser/Music/<a href="http://www.jeremyjohnstone.com/blog/archives/tag/itunes/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iTunes">iTunes</a>/<a href="http://www.jeremyjohnstone.com/blog/archives/tag/itunes/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iTunes">iTunes</a>%20Music/my.mp3&#8243;
      [&#8221;File Folder Count&#8221;]=>
      int(4)
      [&#8221;Library Folder Count&#8221;]=>
      int(1)
    }
  }
}
</pre>
</blockquote>
<p>As you can see, the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/parser/" class="st_tag internal_tag" rel="tag" title="Posts tagged with parser">parser</a> made short order of that task. From here you now have full access to all the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/metadata/" class="st_tag internal_tag" rel="tag" title="Posts tagged with metadata">metadata</a> in your <a href="http://www.jeremyjohnstone.com/blog/archives/tag/itunes-library/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iTunes Library">iTunes library</a>. Feel free to use the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> in your own projects and be sure to let me know what you build with it.</p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=oTunQA"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=oTunQA" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=g1apM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=g1apM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=c2ELm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=c2ELm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=LAs8m"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=LAs8m" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=mYrTm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=mYrTm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=vIp4M"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=vIp4M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=WuaFM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=WuaFM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/433175870" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/10/26/php-parser-for-os-x-plist-xml-files/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/10/26/php-parser-for-os-x-plist-xml-files/</feedburner:origLink></item>
		<item>
		<title>Enums in PHP</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/411854596/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/10/05/enums-in-php/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 12:11:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[class]]></category>

		<category><![CDATA[enum]]></category>

		<category><![CDATA[example]]></category>

		<category><![CDATA[github]]></category>

		<category><![CDATA[howto]]></category>

		<category><![CDATA[iterator]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[PHPClassLib]]></category>

		<category><![CDATA[userland]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=383</guid>
		<description><![CDATA[I&#8217;m not sure what lead me to it, but I stumbled across a blog post on how to implement Enums in PHP via userland code written by Jonathan Hohle. I liked the concept he had, but the implementation was a bit unappealing because it used eval() among other more minor issues. You shouldn&#8217;t need to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not sure what lead me to it, but I stumbled across a blog post on <a href="http://it.toolbox.com/blogs/macsploitation/enums-in-php-a-native-implementation-25228">how to implement Enums in PHP via userland code</a> written by Jonathan Hohle. I liked the concept he had, but the implementation was a bit unappealing because it used eval() among other more minor issues. You shouldn&#8217;t need to generate Enums at runtime, so I took that as a challenge to find a way to do it at compile time, thus making the code much more efficient. Like Jonathan, I also wanted to maintain support for <a href="http://www.jeremyjohnstone.com/blog/archives/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a>&#8217;s type hinting and it should obviously support the semantics one expects from an <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">enum</a> if feasible. I wasn&#8217;t sure of the real value to having the Enums iterable as well like he did, but I figured if possible I should keep support for that too.<br />
<span id="more-383"></span><br />
First off, we need the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> base <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> as follows:</p>
<div class="codesnip-container" >
<pre>
abstract <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> {
	final public function __toString() {
		return get_class($this);
	}
}
</pre>
</div>
<p>From that miniscule amount of code we have the beginnings of <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> support simply by extending that <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> as follows:</p>
<div class="codesnip-container" >
<pre>
abstract <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> DNSRecordType extends <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> {}

<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> A extends DNSRecordType {}
<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> CNAME extends DNSRecordType {}
<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> MX extends DNSRecordType {}

function printDnsRecord(DNSRecordType $type, &#8230;) {
       // We can now be sure $type is a DNSRecordType
}
</pre>
</div>
<p>There are of course a few issues, one of the biggest being that
<div class="codesnip-container" >(new A) !== (new A)</div>
<p> in the above <a href="http://www.jeremyjohnstone.com/blog/archives/tag/example/" class="st_tag internal_tag" rel="tag" title="Posts tagged with example">example</a> code. Here we modify the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> base <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> to add support for fixing the equality comparison:</p>
<div class="codesnip-container" >
<pre>
abstract <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> {
	protected static $instances = array();

	final private function __construct() {}

	final public function __toString() {
		return get_class($this);
	}

	final public static function get($name) {
		if(is_subclass_of($name, &#8220;<a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>&#8220;)) {
			if(array_key_exists($name, self::$instances)) {
				return self::$instances[$name];
			} else {
				return self::$instances[$name] = new $name();
			}
		} else {
			throw Exception();
		}
	}

	final public static function __callStatic($name, $args) {
		return self::get($name);
	}
}
</pre>
</div>
<p>Now if we want to use an <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">enum</a>, instead of instantiating the CNAME <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> directly, we use
<div class="codesnip-container" >DNSRecordType::get(&#8221;CNAME&#8221;);</div>
<p> on versions of <a href="http://www.jeremyjohnstone.com/blog/archives/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> older than 5.3 and in <a href="http://www.jeremyjohnstone.com/blog/archives/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> 5.3 we can save a few keystrokes and instead use
<div class="codesnip-container" >DNSRecordType::CNAME()</div>
<p> to get a CNAME. Obviously in the case of older versions of <a href="http://www.jeremyjohnstone.com/blog/archives/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> we are adding a few extra keystrokes, but unfortunately that is required to avoid having to define custom methods for each <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> type due to the lack of the __callStatic() magic method before <a href="http://www.jeremyjohnstone.com/blog/archives/tag/php/" class="st_tag internal_tag" rel="tag" title="Posts tagged with PHP">PHP</a> 5.3.</p>
<p>Ok, so what&#8217;s next? Well, I guess our next issue would be that Enums, in the case of languages based on C style semantics, by default don&#8217;t have the value of a member as the the name of the member, but rather an integer which increments from zero for each member. Furthermore, in C style enums you can set the value too if you like to any integer of your choice and then each member after that which doesn&#8217;t have a specified value will be incremented one higher from it consecutively. To support this style behavior, it forces us partly out of being able to do this at compile time (thus a performance hit). Because of the performance hit, I decided you have to enable this mode before using it, otherwise you get the previous behavior we defined above. </p>
<p>The now updated code is as follows:</p>
<div class="codesnip-container" >
<pre>
abstract <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> {
	protected static $instances = array();
	protected $value = null;

	protected static $pureMode = false;
	protected static $classesWalked = false;
	protected static $typeCounters = array();
	protected static $classIntValues = array();

	final private function __construct() {}

	final public static function enablePureMode() {
		self::$pureMode = true;
	}

	final protected static function walkClasses() {
		if(self::$pureMode &#038;&#038; !self::$classesWalked) {
			foreach(get_declared_classes() as $<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>) {
				if(is_subclass_of($<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>, &#8220;<a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>&#8220;) &#038;&#038; $<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> !== &#8220;<a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>&#8220;) {
					$parent = get_parent_class($<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>);
					if($parent == &#8220;<a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>&#8220;) continue;
					if(!array_key_exists($parent, self::$typeCounters)) {
						self::$typeCounters[$parent] = 0;
					}
					$obj = new $<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>;
					$objval = $obj->value;
					if(!is_null($objval)) {
						if(!is_numeric($objval)) {
							$nextval = ord($objval) + 1;
						} else {
							$nextval = $objval + 1;
						}
						if($nextval <= self::$typeCounters[$parent]) {
							throw new Exception("Specified <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">enum</a> member value is impossible&#8221;);
						}
						self::$classIntValues[$<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>] = $objval;
						self::$typeCounters[$parent] = $nextval;
					} else {
						self::$classIntValues[$<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>] = self::$typeCounters[$parent]++;
					}
				}
			}
			self::$classesWalked = true;
		}
	}

	final public function __toString() {
		if(self::$pureMode) {
			// delay the performance hit until we actually need the value of one of the enums
			self::walkClasses();
			return (string) self::$classIntValues[get_class($this)];
		} else {
			return get_class($this);
		}
	}

	final public static function get($name) {
		if(is_subclass_of($name, &#8220;<a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>&#8220;)) {
			if(array_key_exists($name, self::$instances)) {
				return self::$instances[$name];
			} else {
				return self::$instances[$name] = new $name();
			}
		} else {
			throw new Exception();
		}
	}

	final public static function __callStatic($name, $args) {
		return self::get($name);
	}
}
</pre>
</div>
<p>With the above change, we can now have an enums for months with January&#8217;s value being 1 for <a href="http://www.jeremyjohnstone.com/blog/archives/tag/example/" class="st_tag internal_tag" rel="tag" title="Posts tagged with example">example</a>, like the following:</p>
<div class="codesnip-container" ><a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>::enablePureMode();<br />
abstract <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> Month extends <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> {}<br />
<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> JAN extends Month { var $value = 1; }<br />
<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> FEB extends Month {}<br />
<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> MAR extends Month {}<br />
&#8230; etc</div>
<p>We can also do things like the following too:</p>
<div class="codesnip-container" ><a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>::enablePureMode();<br />
abstract <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> Whitespace extends <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> {}<br />
<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> Newline extends Whitespace { var $value = &#8220;\n&#8221;; }<br />
<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> Space extends Whitespace { var $value = &#8221; &#8220;; }<br />
<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> Tab extends Whitespace { var $value = &#8220;\t&#8221;; }<br />
&#8230; etc</div>
<p>Pretty nifty eh? Please do note, once you enablePureMode it&#8217;s enabled for all instances of any <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> because you have already incurred the performance loss. Also, due to the nature of how enablePureMode works, you need to make sure you always have all your Enums defined before you try to use one of their values. This shouldn&#8217;t be an issue in most cases, but just something to keep in mind. Doing quick tests showed the performance hit from having enablePureMode turned on was pretty trivial (less than a millisecond in some cases), but since you might not need the behavior, no point in taking the performance hit if you don&#8217;t need to.</p>
<p>The last thing left is to make an <a href="http://www.jeremyjohnstone.com/blog/archives/tag/iterator/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iterator">iterator</a> of all the members of an <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>. This part is really quick and easy and requires us to add the following method to our <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>:</p>
<div class="codesnip-container" >
<pre>
final public static function <a href="http://www.jeremyjohnstone.com/blog/archives/tag/iterator/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iterator">iterator</a>($enum_type) {
	return new EnumIterator($enum_type);
}
</pre>
</div>
<p>As well as also define the following additional <a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>:</p>
<div class="codesnip-container" >
<pre>
<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a> EnumIterator implements <a href="http://www.jeremyjohnstone.com/blog/archives/tag/iterator/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iterator">Iterator</a> {
	protected $classes = array();
	protected $enum_type;

	public function __construct($enum_type) {
		if(!class_exists($enum_type) || !is_subclass_of($enum_type, &#8220;<a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>&#8220;)) throw new Exception(&#8221;Specified <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a> type doesn&#8217;t exist or is not an <a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>!&#8221;);
		$this->enum_type = $enum_type;
		foreach(get_declared_classes() as $<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>) {
			if(is_subclass_of($<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>, $this->enum_type)) {
				$this->classes[] = $<a href="http://www.jeremyjohnstone.com/blog/archives/tag/class/" class="st_tag internal_tag" rel="tag" title="Posts tagged with class">class</a>;
			}
		}
	}

	public function current() {
		return current($this->classes);
	}

	public function key() {
		return key($this->classes);
	}

	public function next() {
		next($this->classes);
		return $this->current();
	}

	public function rewind() {
		return reset($this->classes);
	}

	public function valid() {
		return (bool) $this->current();
	}
}
</pre>
</div>
<p>An <a href="http://www.jeremyjohnstone.com/blog/archives/tag/example/" class="st_tag internal_tag" rel="tag" title="Posts tagged with example">example</a> of using the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/iterator/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iterator">iterator</a> is as follows:</p>
<div class="codesnip-container" >
<pre>
echo "DNSRecordType:\n";
foreach(<a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>::<a href="http://www.jeremyjohnstone.com/blog/archives/tag/iterator/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iterator">iterator</a>(&#8221;DNSRecordType&#8221;) as $type) {
	echo &#8220;\t&#8221; . $type . &#8221; has value &#8221; . (<a href="http://www.jeremyjohnstone.com/blog/archives/tag/enum/" class="st_tag internal_tag" rel="tag" title="Posts tagged with enum">Enum</a>::get($type)) . &#8220;\n&#8221;;
}
</pre>
</div>
<p>To get a copy of the code including several <a href="http://www.jeremyjohnstone.com/blog/archives/tag/example/" class="st_tag internal_tag" rel="tag" title="Posts tagged with example">example</a> usage demonstrations, please visit the following URL: <a href="http://github.com/jsjohnst/php_class_lib/tree/master/classes/types/enum">http://github.com/jsjohnst/php_class_lib/tree/master/classes/types/enum</a></p>
<p>If you find this useful, please let me know!</p>
<p>-Jeremy</p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=n775rL"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=n775rL" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=z5N7M"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=z5N7M" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=gzj3m"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=gzj3m" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=HQu2m"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=HQu2m" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=yduHm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=yduHm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=7UAkM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=7UAkM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=k677M"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=k677M" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/411854596" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/10/05/enums-in-php/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/10/05/enums-in-php/</feedburner:origLink></item>
		<item>
		<title>Bailouts: Ever think of it this way??</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/407957944/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/10/01/bailouts-ever-think-of-it-this-way/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 06:06:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[$85 billion]]></category>

		<category><![CDATA[AIG]]></category>

		<category><![CDATA[alternative plan]]></category>

		<category><![CDATA[bailout]]></category>

		<category><![CDATA[citizens]]></category>

		<category><![CDATA[economic crisis]]></category>

		<category><![CDATA[uncle sam]]></category>

		<category><![CDATA[we deserve it dividend]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=382</guid>
		<description><![CDATA[Got an interesting email forward from my father. I haven&#8217;t verified the math and statistical figures, but it looks right on a cursory glance (Update: It&#8217;s bad math, but still sounds like a good plan, no?). Very interesting idea to say the least.

Dear American Citizens,
I&#8217;m against the $85 BILLION bailout of AIG. Instead, I&#8217;m in [...]]]></description>
			<content:encoded><![CDATA[<p>Got an interesting <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a> forward from my father. I haven&#8217;t verified the math and statistical figures, but it looks right on a cursory glance <strong>(Update: It&#8217;s bad math, but still sounds like a good plan, no?)</strong>. Very interesting idea to say the least.</p>
<blockquote><p>
Dear American <a href="http://www.jeremyjohnstone.com/blog/archives/tag/citizens/" class="st_tag internal_tag" rel="tag" title="Posts tagged with citizens">Citizens</a>,</p>
<p>I&#8217;m against the $85 BILLION <a href="http://www.jeremyjohnstone.com/blog/archives/tag/bailout/" class="st_tag internal_tag" rel="tag" title="Posts tagged with bailout">bailout</a> of <a href="http://www.jeremyjohnstone.com/blog/archives/tag/aig/" class="st_tag internal_tag" rel="tag" title="Posts tagged with AIG">AIG</a>. Instead, I&#8217;m in favor of giving $85,000,000,000 to America in a &#8220;We Deserve It&#8221; dividend. To make the math simple, let&#8217;s assume there are 200,000,000 bona fide U.S. <a href="http://www.jeremyjohnstone.com/blog/archives/tag/citizens/" class="st_tag internal_tag" rel="tag" title="Posts tagged with citizens">citizens</a>, aged 18+.<br />
<span id="more-382"></span><br />
Our population is about 301 million counting every man, woman and child. So, 200,000,000 might be a fair stab at adults 18 and up. Now, divide 200 million, 18+ adults into $85 billion - that equals $425,000.00 each! Yes, my plan is to give that $425,000 to every adult as a &#8220;We Deserve It&#8221; dividend.</p>
<p>Of course, it would NOT be tax free.  So, let&#8217;s assume a tax rate of 30%. Everyone would pay $127,500.00 in taxes. That sends $25.5 billion right back to <a href="http://www.jeremyjohnstone.com/blog/archives/tag/uncle-sam/" class="st_tag internal_tag" rel="tag" title="Posts tagged with uncle sam">Uncle Sam</a>! It also means that every adult 18+ has $297,500.00 in their pocket. A husband and wife would have $595,000.00!</p>
<p>What could you do with $297,500.00 to $595,000.00?</p>
<ul>
<li>Pay off your mortgage – housing crisis solved.</li>
<li>Repay college loans – what a great boost to new grads</li>
<li>Put away money for college – it&#8217;ll really be there.</li>
<li>Save in a bank – create money to loan to entrepreneurs.</li>
<li>Buy a new car – create jobs.</li>
<li>Invest in the market – capital drives growth.</li>
<li>Pay for your parent&#8217;s medical insurance – health care improves.</li>
<li>Enable deadbeat parents to come clean – or else.</li>
</ul>
<p>Remember this is for every adult U.S. citizen, 18 and older (including the folks who lost their jobs at Lehmann Brothers and every other company that is cutting back) and of course, for those serving in our Armed Forces.</p>
<p>If we&#8217;re going to re-distribute wealth let&#8217;s really do it! Instead of trickling out a puny $1,000.00  &#8220;economic incentive&#8221;. If we&#8217;re going to do an $85 billion <a href="http://www.jeremyjohnstone.com/blog/archives/tag/bailout/" class="st_tag internal_tag" rel="tag" title="Posts tagged with bailout">bailout</a>, let&#8217;s bail out every adult U.S. citizen!</p>
<p>As for <a href="http://www.jeremyjohnstone.com/blog/archives/tag/aig/" class="st_tag internal_tag" rel="tag" title="Posts tagged with AIG">AIG</a> – liquidate it.</p>
<ul>
<li>Sell off its parts.</li>
<li>Let American General go back to being American General.</li>
<li>Sell off the real estate.</li>
<li>Let the private sector bargain hunters cut it up and clean it up.</li>
</ul>
<p>We deserve the money and <a href="http://www.jeremyjohnstone.com/blog/archives/tag/aig/" class="st_tag internal_tag" rel="tag" title="Posts tagged with AIG">AIG</a> doesn&#8217;t.</p>
<p>How do you spell Economic Boom? W-e  D-e-s-e-r-v-e  I-t  d-I-v-I-d-e-n-d!  I trust my fellow adult Americans to know how to use the $85 Billion &#8220;We Deserve It&#8221; dividend more than do the &#8216;geniuses&#8217; at <a href="http://www.jeremyjohnstone.com/blog/archives/tag/aig/" class="st_tag internal_tag" rel="tag" title="Posts tagged with AIG">AIG</a> or in Washington, D.C.</p>
<p>And remember, my plan only really costs $59.5 billion because $25.5 billion is returned instantly in taxes to <a href="http://www.jeremyjohnstone.com/blog/archives/tag/uncle-sam/" class="st_tag internal_tag" rel="tag" title="Posts tagged with uncle sam">Uncle Sam</a>.  Good idea?  I think so.</p>
<p><strong><em>OK&#8230; let&#8217;s look at that 700 billion <a href="http://www.jeremyjohnstone.com/blog/archives/tag/bailout/" class="st_tag internal_tag" rel="tag" title="Posts tagged with bailout">bailout</a> now!</strong></em></p>
<p>-Unknown Source
</p></blockquote>
<p>What do you think of the idea? Sound off in the comments below!</p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=eagfeM"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=eagfeM" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=3GClM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=3GClM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=IyIpm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=IyIpm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=B7TRm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=B7TRm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=uioam"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=uioam" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=00UdM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=00UdM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=VPCLM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=VPCLM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/407957944" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/10/01/bailouts-ever-think-of-it-this-way/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/10/01/bailouts-ever-think-of-it-this-way/</feedburner:origLink></item>
		<item>
		<title>Where does all the time go? No, really!</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/382941001/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/09/03/where-does-all-the-time-go-no-really/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 04:36:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[activities]]></category>

		<category><![CDATA[interests]]></category>

		<category><![CDATA[my life]]></category>

		<category><![CDATA[personal]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=381</guid>
		<description><![CDATA[I&#8217;m constantly feeling like I am running 90mph to keep up with everything going on. I&#8217;m not complaining per say, but felt it would be prudent for me to figure out all the things I am involved in and then make a decision on if they are the most important usage of my time. I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m constantly feeling like I am running 90mph to keep up with everything going on. I&#8217;m not complaining per say, but felt it would be prudent for me to figure out all the things I am involved in and then make a decision on if they are the most important usage of my time. I decided to break them down into two categories, <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a> related and strictly <a href="http://www.jeremyjohnstone.com/blog/archives/tag/personal/" class="st_tag internal_tag" rel="tag" title="Posts tagged with personal">personal</a> stuff. The <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a> stuff ended up being specific projects / tasks I <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a> on while it seemed the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/personal/" class="st_tag internal_tag" rel="tag" title="Posts tagged with personal">personal</a> stuff leaned more towards concepts and <a href="http://www.jeremyjohnstone.com/blog/archives/tag/activities/" class="st_tag internal_tag" rel="tag" title="Posts tagged with activities">activities</a>. Probably just the nature of what I am doing. So without further ado, here&#8217;s the list for the world to see:</p>
<p><span id="more-381"></span></p>
<p><strong><a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">Work</a> Related</strong></p>
<ul>
<li>ConnectedTV team. This is my day job and rightfully consumes the most of my waking hours of probably anything else. I love my job and what I do, so the time spent here goes by without noticing sometimes.</li>
<li>Photography. This is the second most time consuming thing I do. &#8220;Snapping&#8221; photos doesn&#8217;t take much time one would think, but when you combine sorting, post processing, setup/teardown etc. it easily consumes much more time. I&#8217;ve done like 50-60 exec headshots, 40-50 non-exec headshots, countless corp events, and a ton more in the past year alone so this definitely does consume a lot of my time. I&#8217;ve been slowly scaling back on this, but might decide to scale back more aggressively still.</li>
<li>Evangelism. This is something I do in many forms, ranging from leading up an internal employee evangelism team to attending conference and other tech events. I&#8217;ve been to four major conferences this year alone (Mac World, SWSX, Web 2.0, IDF) with more coming. </li>
<li>Point of contact. I am the point of contact on a lot of different things at <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a>!, ranging from DHS/FEMA in disaster related things, to handling our <a href="http://www.jeremyjohnstone.com/blog/archives/tag/apple/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Apple">Apple</a> EPP relationship for North America, to the League of Women&#8217;s Voters since I maintain hosting for <a title="Vote411.org" href="http://www.vote411.org" target="_blank">vote411.org</a>. </li>
<li>Working groups / committees. These vary from time to time, but I am usually involved in a couple at any given moment either inside <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a>! or outside but <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a>! related somehow. These range from stuff like the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/green/" class="st_tag internal_tag" rel="tag" title="Posts tagged with green">Green</a> Coding Initiative, to our YEF Grants committee, to outside stuff like being on DHS&#8217;s NetGuard working group. </li>
<li>Side projects / hacks. I&#8217;m always looking for new ways to optimize some process or fill a niche need of mine or others so I am constantly building up small side projects that I am working on or want to do someday.</li>
</ul>
<p><strong><a href="http://www.jeremyjohnstone.com/blog/archives/tag/personal/" class="st_tag internal_tag" rel="tag" title="Posts tagged with personal">Personal</a></strong></p>
<ul>
<li>Reading. Probably the single biggest consumer of my time outside <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a>. I love reading and am constantly chewing through books. I think I have like ten I am flipping back and forth between on my Kindle now with over 100 more waiting to be started either on the Kindle or in printed book form.</li>
<li>Photography. Not just something I do for <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a>, but also something I do for fun. It&#8217;s challenging and allows me to try and develop an artistic side.</li>
<li>Yoga. Except for the past two weeks (been injured from my last hike) I&#8217;ve been doing Yoga three times a week for the last two months. This is something I hope to resume very soon once my chest feels up to it.</li>
<li>Traveling. I LOVE to travel to new places. In the past year the new places I&#8217;ve been to are Cayman Islands, England, and Bonaire. I&#8217;m scheduled to go to India sometime in November for the first time and will be spending two weeks in Malaysia, Singapore, Kuala Lumpor, and Sipadan Water Village in March of next year. I&#8217;ve also done a lot of domestic traveling over the past year and will likely do more before the year is out.</li>
<li>Outdoor <a href="http://www.jeremyjohnstone.com/blog/archives/tag/activities/" class="st_tag internal_tag" rel="tag" title="Posts tagged with activities">activities</a>. Predominantly this involves scuba diving and hiking lately, but I also enjoy stuff like sky diving, water skiing, etc too, just not found the time recently.</li>
<li>Programming for fun. I always have some project or another I am working on for fun. This could range from working on my <a href="http://www.jeremyjohnstone.com/blog/archives/tag/personal/" class="st_tag internal_tag" rel="tag" title="Posts tagged with personal">personal</a> website, to building some <a href="http://www.jeremyjohnstone.com/blog/archives/tag/twitter/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Twitter">twitter</a> client, or coding for some platform I am passionate about (like OSX/<a href="http://www.jeremyjohnstone.com/blog/archives/tag/iphone/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iPhone">iPhone</a>).</li>
</ul>
<p>As you can see from the above list, there isn&#8217;t a lot of <a href="http://www.jeremyjohnstone.com/blog/archives/tag/activities/" class="st_tag internal_tag" rel="tag" title="Posts tagged with activities">activities</a> (in the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/personal/" class="st_tag internal_tag" rel="tag" title="Posts tagged with personal">personal</a> category at least) strictly related to just socializing or meeting new people. Maybe that&#8217;s why I am almost 30 and still single. Hmm, something else to think about.</p>
<p>I&#8217;m sure the above list isn&#8217;t all inclusive by any means either, it&#8217;s just what came to mind when I thought about it. So, now that you know where my time is spent, what consumes your time? Feel free to share in the comments or postback from your own blog.</p>
<p> </p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=nqTUs6"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=nqTUs6" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=fNoghL"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=fNoghL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=XuImIl"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=XuImIl" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=QbFP0l"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=QbFP0l" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=zdJuzl"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=zdJuzl" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=tTkX9L"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=tTkX9L" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=Np2VRL"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=Np2VRL" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/382941001" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/09/03/where-does-all-the-time-go-no-really/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/09/03/where-does-all-the-time-go-no-really/</feedburner:origLink></item>
		<item>
		<title>The Trouble With Email</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/350169671/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/07/29/the-trouble-with-email/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 05:29:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Rants]]></category>

		<category><![CDATA[courier]]></category>

		<category><![CDATA[email]]></category>

		<category><![CDATA[imap]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[mail.app]]></category>

		<category><![CDATA[procmail]]></category>

		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=380</guid>
		<description><![CDATA[Ok, so I have a problem. One which keeps me up at night and annoys me greatly, but I can&#8217;t seem to find a solution to fix. So what is this problem? Email SUCKS, that&#8217;s the problem! Ok Ok, I am sure you are thinking &#8220;great, and?&#8221; as it&#8217;s a common rant. Here&#8217;s my needs:


 [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so I have a problem. One which <span class="afterthought" title="really">keeps me up at night</span> and annoys me greatly, but I can&#8217;t seem to find a solution to fix. So what is this problem? <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">Email</a> SUCKS, that&#8217;s the problem! Ok Ok, I am sure you are thinking &#8220;great, and?&#8221; as it&#8217;s a common <a href="http://www.jeremyjohnstone.com/blog/archives/tag/rant/" class="st_tag internal_tag" rel="tag" title="Posts tagged with rant">rant</a>. Here&#8217;s my needs:</p>
<p><span id="more-380"></span></p>
<ol>
<li> I want my <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a> everywhere at every time, with or without network access, on a range of devices. Sitting at my desk with my main desktop? Sitting in a meeting with my laptop? Sipping a coffee with my <a href="http://www.jeremyjohnstone.com/blog/archives/tag/iphone/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iPhone">iPhone</a> in my hand? On a plane flight to some far away place? All of those should be no challenge to doing something as simple as reading an <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a>, right?</li>
<li>I like to organize my <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a>, especially mailing lists which I subscribe to hundreds of at last count. Some lists are important, others less so and should be organized accordingly. As having things &#8220;in view&#8221; can be distracting when I don&#8217;t need to see them, I need the ability to have a <span class="afterthought" title="aka subfolders">nesting system</span> or some other way to have multiple views into my mail. These &#8220;views&#8221; should be synchronized across all devices and possibly have the ability to be <span class="afterthought" title="maybe I don't want some things to show on the iPhone for example">device specific</span>.</li>
<li>When someone sends me an <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a>, it should show up instantly in every client, not five minutes later, not an hour later, certainly not forcing me to <span class="afterthought" title="yeah, I am talking about you damn Mail.app">restart the app just to see the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a></span>. The system should also support some type of push system as constantly &#8220;polling&#8221; puts excessive load on the server and sucks up precious power reserves in the case of mobile devices.</li>
<li>I need the ability to find old stuff quickly and painlessly, again on any device. We can have <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a>! search teh net in under 100ms for anything I could dream up for a search term but even my quad core Xeon can&#8217;t accomplish a similar search across an infinitely smaller dataset in under five minutes? Huh? You&#8217;re kidding right? Guess I won&#8217;t even try it on my <a href="http://www.jeremyjohnstone.com/blog/archives/tag/iphone/" class="st_tag internal_tag" rel="tag" title="Posts tagged with iPhone">iPhone</a> then as I know my battery will then run dead before the search finishes in that case.</li>
</ol>
<p>Seems like fairly modest needs right? Should be doable? Well, I am amazed to say it seems to be about as simple as sending a man in a balloon to the moon. </p>
<p>Currently I am running my own <a href="http://www.jeremyjohnstone.com/blog/archives/tag/courier/" class="st_tag internal_tag" rel="tag" title="Posts tagged with courier">Courier</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/imap/" class="st_tag internal_tag" rel="tag" title="Posts tagged with imap">IMAP</a> server, using <a href="http://www.jeremyjohnstone.com/blog/archives/tag/procmail/" class="st_tag internal_tag" rel="tag" title="Posts tagged with procmail">Procmail</a> and all it&#8217;s powerful mojo to sort my mail, and using <a href="http://www.jeremyjohnstone.com/blog/archives/tag/mailapp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mail.app">Mail.app</a> as the actual MUA. The problems I run into are as follows, in no special order and certainly not all inclusive:</p>
<ol>
<li>My mail server is constantly thrashing the disk. Despite being on a dual G5 w/ plenty of memory and decently fast I/O, it seems the combination of commands <a href="http://www.jeremyjohnstone.com/blog/archives/tag/mailapp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mail.app">Mail.app</a> sends to <a href="http://www.jeremyjohnstone.com/blog/archives/tag/courier/" class="st_tag internal_tag" rel="tag" title="Posts tagged with courier">Courier</a> seems to give it fits. Have two clients hitting it at once and the machine drops to a snail crawl. Heaven forbid you add that third client and the <span class="afterthought" title="I shit you not, true story">machine starts sparking and flames shoot out the back</span>. Of course running it on another OS would probably help as OSX doesn&#8217;t have the best kernel support for things like this, but that&#8217;s not the point. I&#8217;ve also thought about moving over to another <a href="http://www.jeremyjohnstone.com/blog/archives/tag/imap/" class="st_tag internal_tag" rel="tag" title="Posts tagged with imap">IMAP</a> server implementation, but as yet I haven&#8217;t found one which I feel confident will be better performing without enough negative aspects to scare me away.</li>
<li><a href="http://www.jeremyjohnstone.com/blog/archives/tag/mailapp/" class="st_tag internal_tag" rel="tag" title="Posts tagged with mail.app">Mail.app</a> seems to not like to pull subfolders with consistency. It&#8217;s extremely common for me to restart the app and suddenly have hundreds of unread emails suddenly appear across folders. This definitely is a problem no matter how you look at it. Of course there are multiple possible causes to blame, but that&#8217;s irrelevant. I don&#8217;t care if the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/imap/" class="st_tag internal_tag" rel="tag" title="Posts tagged with imap">IMAP</a> spec is brain dead in how it specifies IDLE support, that&#8217;s not my problem. Having a mail client which shows new mail without fail should be one of it&#8217;s developer&#8217;s top priorities.</li>
<li><a href="http://www.jeremyjohnstone.com/blog/archives/tag/procmail/" class="st_tag internal_tag" rel="tag" title="Posts tagged with procmail">Procmail</a> while very powerful is extremely error prone. I&#8217;ve had several occasions where things backfired. My dream would be to someday have something which said &#8220;hey, you moved this <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a> into this place, would you like me to move emails like it in the future for you?&#8221;, but then I snap back to reality and realize that&#8217;s a geek&#8217;s wet dream and not anything which will really <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a> as you would expect any time soon.</li>
<li>Keeping multiple devices and offline copies of emails in sync seems to be error prone at best. Isn&#8217;t this exactly the problem <a href="http://www.jeremyjohnstone.com/blog/archives/tag/imap/" class="st_tag internal_tag" rel="tag" title="Posts tagged with imap">IMAP</a> is supposed to solve? Tell me again why there is not a single <a href="http://www.jeremyjohnstone.com/blog/archives/tag/imap/" class="st_tag internal_tag" rel="tag" title="Posts tagged with imap">IMAP</a> client which handles this painlessly? Oh, right, that&#8217;s because the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/imap/" class="st_tag internal_tag" rel="tag" title="Posts tagged with imap">IMAP</a> spec is crap. Please fix, ok? KTHXBAI!
</li>
</ol>
<p>So my question is, is there something I have missed? If you have a solution I am more than ready to apply my hand to my forehead and yell &#8220;Do&#8217;t&#8221; with enthusiasm. Sound off in the comments with what works for you.</p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=rrqDX9"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=rrqDX9" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=11erkJ"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=11erkJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=y1YVRj"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=y1YVRj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=XYWLPj"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=XYWLPj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=MJB4Nj"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=MJB4Nj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=BoxRfJ"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=BoxRfJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=q4s52J"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=q4s52J" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/350169671" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/07/29/the-trouble-with-email/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/07/29/the-trouble-with-email/</feedburner:origLink></item>
		<item>
		<title>Photoshop: 1 + 2 = 3</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/298263171/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/05/26/photoshop-1-2-3/#comments</comments>
		<pubDate>Mon, 26 May 2008 09:22:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=379</guid>
		<description><![CDATA[Having a bit of free time this evening, I decided to do a bit of photo editing work. In this example, I took one slightly underexposed image + one highly overexposed image of a statue in London, England and combined them into one HDR image. Here you can see the three images, click one each [...]]]></description>
			<content:encoded><![CDATA[<p>Having a bit of free time this evening, I decided to do a bit of photo editing <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a>. In this <a href="http://www.jeremyjohnstone.com/blog/archives/tag/example/" class="st_tag internal_tag" rel="tag" title="Posts tagged with example">example</a>, I took one slightly underexposed image + one highly overexposed image of a statue in London, England and combined them into one HDR image. Here you can see the three images, click one each to see a higher resolution version.<span id="more-379"></span></p>
<p><center></p>
<h3>Underexposed Image:</h3>
<p><a href="http://farm4.static.flickr.com/3120/2523212913_51553c91cc_o.jpg" target="_blank"><img src="http://farm3.static.flickr.com/2217/2524036888_fe06e5a184_o.jpg" width="400" height="266" alt="Statue 1-sized" /></a></p>
<h3>Overexposed Image:</h3>
<p><a href="http://farm3.static.flickr.com/2289/2523212927_91542b1795_o.jpg" target="_blank"><img src="http://farm3.static.flickr.com/2304/2524036866_0a2ae941aa_o.jpg" width="400" height="266" alt="Statue 2-sized" /></a></p>
<h3>Final HDR Image:</h3>
<p><a href="http://farm4.static.flickr.com/3265/2524036786_078607b75d_o.jpg" target="_blank"><img src="http://farm4.static.flickr.com/3049/2524036902_d1bd5525d2_o.jpg" width="400" height="267" alt="Statue 3-sized" /></a></p>
<p></center></p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=Q1GILa"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=Q1GILa" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=U4iVYH"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=U4iVYH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=YMJUAh"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=YMJUAh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=OwVijh"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=OwVijh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=YdsBUh"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=YdsBUh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=0s85nH"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=0s85nH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=llyZdH"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=llyZdH" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/298263171" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/05/26/photoshop-1-2-3/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/05/26/photoshop-1-2-3/</feedburner:origLink></item>
		<item>
		<title>EcoBalls — Are they for real?</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/288248524/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/05/11/ecoballs-are-they-for-real/#comments</comments>
		<pubDate>Sun, 11 May 2008 20:48:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Product Plugs]]></category>

		<category><![CDATA[Reviews]]></category>

		<category><![CDATA[alternative]]></category>

		<category><![CDATA[cleaning products]]></category>

		<category><![CDATA[detergent]]></category>

		<category><![CDATA[ecoballs]]></category>

		<category><![CDATA[green]]></category>

		<category><![CDATA[laundry]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=378</guid>
		<description><![CDATA[While in London last weekend I stumbled across an interesting laundry detergent alternative called EcoBalls. They are these green UFOish shaped balls with pellets inside. Not hearing of them before and being skeptical, I decided to hold off buying them, especially at £35.
Doing a bit of research online, I&#8217;ve found mixed information. The majority of the skeptics [...]]]></description>
			<content:encoded><![CDATA[<p>While in London last weekend I stumbled across an interesting <a href="http://www.jeremyjohnstone.com/blog/archives/tag/laundry/" class="st_tag internal_tag" rel="tag" title="Posts tagged with laundry">laundry</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/detergent/" class="st_tag internal_tag" rel="tag" title="Posts tagged with detergent">detergent</a> <a href="http://www.jeremyjohnstone.com/blog/archives/tag/alternative/" class="st_tag internal_tag" rel="tag" title="Posts tagged with alternative">alternative</a> called <a href="http://www.jeremyjohnstone.com/blog/archives/tag/ecoballs/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ecoballs">EcoBalls</a>. They are these <a href="http://www.jeremyjohnstone.com/blog/archives/tag/green/" class="st_tag internal_tag" rel="tag" title="Posts tagged with green">green</a> UFOish shaped balls with pellets inside. Not hearing of them before and being skeptical, I decided to hold off buying them, especially at £35.</p>
<p>Doing a bit of research online, I&#8217;ve found mixed information. The majority of the skeptics I have seen arguing against them seem to focus on the gimicky nature of the product description and/or inaccurately point to debunk stories on &#8220;similar&#8221; products. I use the term &#8220;similar&#8221; like I do because I really feel that after researching it, <a href="http://www.jeremyjohnstone.com/blog/archives/tag/ecoballs/" class="st_tag internal_tag" rel="tag" title="Posts tagged with ecoballs">EcoBalls</a> are a bit different than many of the products out there like it.<span id="more-378"></span></p>
<p><center><a href="http://www.flickr.com/photos/jeremyjohnstone/2484355666/"><img src="http://farm3.static.flickr.com/2186/2484355666_373bdb9a4b_o.jpg" width="500" height="332" /></a></center></p>
<p>The one thing I found most interesting about all of the information I read online attempting to debunk them is that none of them paid any attention to the components of the pellets inside the balls. Reading that they had a limit on the number of wash cycles (albeit high one), I knew the pellets had to break down in some way. Digging a bit more, I found out the ingredients of the pellets are as follows:</p>
<table width="100%">
<tr>
<td>
<ul>
<li>higher alkyl sulfate</li>
<li>non-ionic surfacant</li>
<li>sodium metasilicate</li>
<li>calcium carbonate</li>
<li>sodium carbonate</li>
</ul>
</td>
<td><a href="http://www.flickr.com/photos/jeremyjohnstone/2483540553/"><img src="http://farm4.static.flickr.com/3221/2483540553_1e95fac7b9_o.jpg" height="157" width="235" /></a></td>
</tr>
</table>
<p>For something claiming to be chemical free, that ingredient list definitely seems to point otherwise. Looking at the ingredient list more, I started to recognize some of them as stuff I had heard of before, interestingly enough from <a href="http://www.jeremyjohnstone.com/blog/archives/tag/cleaning-products/" class="st_tag internal_tag" rel="tag" title="Posts tagged with cleaning products">cleaning products</a>. Let&#8217;s go through each one, one by one.</p>
<p>First we have &#8220;higher alkyl sulfate&#8221;. This is listed as an &#8220;adjuvant&#8221; which basically means it&#8217;s an inactive ingredient which serves the purpose of assisting the dispersion of the active ingredients. It can be likened to an emulsifier and I&#8217;ve found several references to it being used in <a href="http://www.jeremyjohnstone.com/blog/archives/tag/cleaning-products/" class="st_tag internal_tag" rel="tag" title="Posts tagged with cleaning products">cleaning products</a> online.</p>
<p>Next we have &#8220;non-ionic surfacant&#8221;. This one is a wetting agent which assists in lowering the surface tension of water. This allows the cleaning solutions to have better ability to break up stains and soils. Again, a common ingredient in <a href="http://www.jeremyjohnstone.com/blog/archives/tag/cleaning-products/" class="st_tag internal_tag" rel="tag" title="Posts tagged with cleaning products">cleaning products</a>.</p>
<p>Then we have &#8220;sodium metasilicate&#8221;. This is one is used to assist the surfacant above by reducing the hardness of the water. Interestingly, this one is both poisonous and reacts fairly violently to acids. For something claiming to be so safe, this ingredient doesn&#8217;t support that claim. It could be a small ingredient, though, reducing the potential for issues. Still something you want to make sure small children don&#8217;t ingest in any event.</p>
<p>The second to last ingredient is &#8220;calcium carbonate&#8221;. This one just about anyone should recognize and thus doesn&#8217;t need much explanation. It&#8217;s a common ingredient in many <a href="http://www.jeremyjohnstone.com/blog/archives/tag/cleaning-products/" class="st_tag internal_tag" rel="tag" title="Posts tagged with cleaning products">cleaning products</a> it seems, especially &#8220;<a href="http://www.jeremyjohnstone.com/blog/archives/tag/green/" class="st_tag internal_tag" rel="tag" title="Posts tagged with green">green</a>&#8221; ones, so it&#8217;s presence comes as no surprise.</p>
<p>The final ingredient is &#8220;sodium carbonate&#8221;. This is better known to many as &#8220;Washing Soda&#8221;. It&#8217;s a water softener sold in most grocery stores which prevents calcium and magnesium ions from bonding to the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/detergent/" class="st_tag internal_tag" rel="tag" title="Posts tagged with detergent">detergent</a>. It&#8217;s effective at removing oil, grease, and alcohol stains. Again, it&#8217;s presence comes as no surprise.</p>
<p>So, basically what we have here is moderately large plastic balls which contain a very mild <a href="http://www.jeremyjohnstone.com/blog/archives/tag/detergent/" class="st_tag internal_tag" rel="tag" title="Posts tagged with detergent">detergent</a>. It&#8217;s thus no surprise that they do a little better than doing <a href="http://www.jeremyjohnstone.com/blog/archives/tag/laundry/" class="st_tag internal_tag" rel="tag" title="Posts tagged with laundry">laundry</a> with just plain water alone. The large size of the balls would <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a> well at mashing the clothes, sorta akin to a washing board, and the combination of the mild <a href="http://www.jeremyjohnstone.com/blog/archives/tag/detergent/" class="st_tag internal_tag" rel="tag" title="Posts tagged with detergent">detergent</a> should prove to be effective. It might not brighten your whites as much as the store bought <a href="http://www.jeremyjohnstone.com/blog/archives/tag/detergent/" class="st_tag internal_tag" rel="tag" title="Posts tagged with detergent">detergent</a>, but otherwise should clean just as well based on what I can gather without actually using the product. Also, since it doesn&#8217;t contain the fragrances which most have gotten used to in <a href="http://www.jeremyjohnstone.com/blog/archives/tag/laundry/" class="st_tag internal_tag" rel="tag" title="Posts tagged with laundry">laundry</a> detergents, the clothes won&#8217;t have that &#8220;fresh clean&#8221; smell. At about $70 US + shipping, not sure I am going to try them, but I wanted to post this so others doing research on the topic could form a more educated opinion.<br />
 </p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=qioPMi"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=qioPMi" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=bCedvH"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=bCedvH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=1u14bh"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=1u14bh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=3CxvOh"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=3CxvOh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=IoN9nh"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=IoN9nh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=tlnkvH"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=tlnkvH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=nJQMjH"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=nJQMjH" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/288248524" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/05/11/ecoballs-are-they-for-real/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/05/11/ecoballs-are-they-for-real/</feedburner:origLink></item>
		<item>
		<title>JetBlue’s Twitter reply to me shows up in a video interview w/ Twitter founders</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/273752271/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/04/19/jetblues-twitter-reply-to-me-shows-up-in-a-video-interview-w-twitter-founders/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 22:06:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Photography]]></category>

		<category><![CDATA[Product Plugs]]></category>

		<category><![CDATA[Yahoo]]></category>

		<category><![CDATA[betablue]]></category>

		<category><![CDATA[Flickr]]></category>

		<category><![CDATA[interview]]></category>

		<category><![CDATA[jeremy johnstone]]></category>

		<category><![CDATA[jetblue]]></category>

		<category><![CDATA[project aero]]></category>

		<category><![CDATA[Tweets]]></category>

		<category><![CDATA[Twitter]]></category>

		<category><![CDATA[video]]></category>

		<category><![CDATA[Yahoo! Messenger]]></category>

		<category><![CDATA[Yahoo! Messenger for the Sky]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=377</guid>
		<description><![CDATA[Like certain friends of mine, I love seeing my name online on the web, when used in a positive way of course, and love hearing my name mentioned in conversation when people think I am not listening. Because of this, it&#8217;s no surprise when a good friend of mine sent me the following IM this morning, [...]]]></description>
			<content:encoded><![CDATA[<p>Like <a href="http://terrychay.com/blog/article/i-just-like-hearing-my-name.shtml">certain friends of mine</a>, I love seeing my name online on the web, when used in a positive way of course, and love hearing my name mentioned in conversation when people think I am not listening. Because of this, it&#8217;s no surprise when a <a title="Jeff Standen's Website" href="http://www.jeffstanden.com/" target="_blank">good friend of mine</a> sent me the following IM this morning, it brought a bit of a smile to my face:<span id="more-377"></span></p>
<p> </p>
<p><center><a title="iChat log with a friend earlier today by Jeremy Johnstone, on Flickr" href="http://www.flickr.com/photos/jeremyjohnstone/2425575353/"><img src="http://farm3.static.flickr.com/2161/2425575353_10bfeb5342_o.jpg" alt="iChat log with a friend earlier today" width="523" height="177" /></a></center> </p>
<p>Of course I quickly had to go and watch the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/video/" class="st_tag internal_tag" rel="tag" title="Posts tagged with video">video</a> and lo and behold I find he&#8217;s right! The <a href="http://www.jeremyjohnstone.com/blog/archives/tag/twitter/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Twitter">Twitter</a> @reply that <a href="http://www.jeremyjohnstone.com/blog/archives/tag/jetblue/" class="st_tag internal_tag" rel="tag" title="Posts tagged with jetblue">JetBlue</a> sent me a while back is fairly prominently visible as shown in this <a href="http://www.jeremyjohnstone.com/blog/archives/tag/video/" class="st_tag internal_tag" rel="tag" title="Posts tagged with video">video</a>:</p>
<p> </p>
<p><center><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/v3yFKx3-AVc" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/v3yFKx3-AVc"></embed></object></center> </p>
<p>For reference, here is the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/twitter/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Twitter">twitter</a> thread:</p>
<p> <br />
<center><a title="Tweet #1 by Jeremy Johnstone, on Flickr" href="http://www.flickr.com/photos/jeremyjohnstone/2425620335/"><img src="http://farm3.static.flickr.com/2044/2425620335_02136ee3df.jpg" alt="Tweet #1" width="500" height="178" /></a> </p>
<p><a title="Tweet #2 by Jeremy Johnstone, on Flickr" href="http://www.flickr.com/photos/jeremyjohnstone/2426434064/"><img src="http://farm4.static.flickr.com/3051/2426434064_06214c9373.jpg" alt="Tweet #2" width="500" height="137" /></a></p>
<p><a title="Tweet #3 by Jeremy Johnstone, on Flickr" href="http://www.flickr.com/photos/jeremyjohnstone/2425620557/"><img src="http://farm3.static.flickr.com/2249/2425620557_f71c91131d.jpg" alt="Tweet #3" width="500" height="210" /></a></center></p>
<p> </p>
<p>Here&#8217;s a couple helpful links for more information in case you are curious:</p>
<p><a href="http://www.ymessengerblog.com/blog/2007/12/11/im-from-the-sky-on-jetblue/">So what is BetaBlue and what does Yahoo! have to do with it?</a></p>
<p><a href="http://www.flickr.com/photos/jeremyjohnstone/sets/72157603439427199/">Photos that the guy from JetBlue was talking about.</a></p>
<p><a href="http://webmessenger.yahoo.com/flightstatus/">Part of the project which is visible from the ground (since most is visible only from the plane) that I developed.</a></p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=Xkk7QB"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=Xkk7QB" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=gTkoM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=gTkoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=2vsjm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=2vsjm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=K7HIm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=K7HIm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=hePlm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=hePlm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=5ihQM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=5ihQM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=31h1M"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=31h1M" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/273752271" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/04/19/jetblues-twitter-reply-to-me-shows-up-in-a-video-interview-w-twitter-founders/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/04/19/jetblues-twitter-reply-to-me-shows-up-in-a-video-interview-w-twitter-founders/</feedburner:origLink></item>
		<item>
		<title>Apparently hubris comes cheap these days…</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/272381283/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/04/17/apparently-hubris-comes-cheap-these-days/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 19:30:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=376</guid>
		<description><![CDATA[Recruiters these days never cease to amaze me. I am constantly hit by a barrage of &#8220;crap&#8221;, and I do mean &#8220;crap&#8221;, on a regular basis. Take an email I received today, not sure what&#8217;s supposed to entice me in this, but here&#8217;s the email as sent to me:
Since you&#8217;ve communicated with [company name] in [...]]]></description>
			<content:encoded><![CDATA[<p>Recruiters these days never cease to amaze me. I am constantly hit by a barrage of &#8220;crap&#8221;, and I do mean &#8220;crap&#8221;, on a regular basis. Take an <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a> I received today, not sure what&#8217;s supposed to entice me in this, but here&#8217;s the <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a> as sent to me:</p>
<blockquote><p>Since you&#8217;ve communicated with [company name] in the past, I wanted to touch base and get caught up with you on your potential career advancement.  We’ve been placing many of your <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a> colleagues lately, and are currently working with many <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a> employees on their passive job searches, both at the individual contributor level and Management/Director level.  Based on these dynamics and the information we have gathered, it looks like the timing is looking better and better to get out of <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a>!  Even if <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a> is trying to bribe you into staying with promotions, counteroffers, or severance packages, don’t be fooled.  The smartest people will leave now.  One <a href="http://www.jeremyjohnstone.com/blog/archives/tag/example/" class="st_tag internal_tag" rel="tag" title="Posts tagged with example">example</a>:  we had a candidate making 160k at <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a> that would have gotten a 1 year  severance package if he stayed till after the Microsoft acquisition, but he still left and is happily placed at a much better company.<span id="more-376"></span></p>
<p>Consider this:   Before the last round of layoffs, we were usually able to get <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a> candidates significant pay raises and multiple offers.  After the latest round, <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a> candidates’ value has gone down because there are more of them available in the market and <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a> has continued to lose respect in the industry.  We foresee this trend continuing through the Microsoft Acquisition, when there will probably be another round of layoffs and voluntary departures of your colleagues.</p>
<p>This all means that the sooner you move from <a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a>, the better off you’ll be.</p>
<p>Please contact me as soon as possible so we can show you some better alternatives with much hotter companies/jobs.  When you <a href="http://www.jeremyjohnstone.com/blog/archives/tag/email/" class="st_tag internal_tag" rel="tag" title="Posts tagged with email">email</a> me, let me know what’s new since the last time we talked, and what type of opportunities you’d like us to get you.  The job market is very hot right now!</p></blockquote>
<p>Do people really respond to this kind of utter crap? Especially when I have _never_ &#8220;communicated&#8221; with [company name] in the past? Apparently someone completely ignored my LinkedIn profile&#8217;s message because it&#8217;s recruiters like this that caused me to hate recruiters in general.</p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=v4e5oM"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=v4e5oM" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=wh5nM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=wh5nM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=tIanm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=tIanm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=v87bm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=v87bm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=NrXzm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=NrXzm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=rsmRM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=rsmRM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=5OHlM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=5OHlM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/272381283" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/04/17/apparently-hubris-comes-cheap-these-days/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/04/17/apparently-hubris-comes-cheap-these-days/</feedburner:origLink></item>
		<item>
		<title>Finally updated my website!</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/269636315/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/04/13/finally-updated-my-website/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 11:29:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/?p=375</guid>
		<description><![CDATA[It&#8217;s been a long time in the coming, but I have finally updated my website. I&#8217;ve still got a couple pieces to finish porting to the new design, namely the photo and code galleries, and a couple things I need to build still but for the most part it&#8217;s now live.
The main changes are:

New visual [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a long time in the coming, but I have finally updated my website. I&#8217;ve still got a couple pieces to finish porting to the new design, namely the photo and code galleries, and a couple things I need to build still but for the most part it&#8217;s now live.<span id="more-375"></span></p>
<p>The main changes are:</p>
<ol>
<li>New visual theme (pretty obvious to anyone who visited before)</li>
<li>Homepage now shows a little &#8220;About me&#8221; and my latest blog post / latest three <a href="http://www.jeremyjohnstone.com/blog/archives/tag/tweets/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Tweets">tweets</a> instead of just dumping you into the blog directly</li>
<li><a href="http://www.jeremyjohnstone.com/blog/archives/tag/tweets/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Tweets">Tweets</a> are now clearly separated from blog posts. Blog posts remain on <a title="My Blog" href="http://www.jeremyjohnstone.com/blog">/blog</a> while <a href="http://www.jeremyjohnstone.com/blog/archives/tag/tweets/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Tweets">Tweets</a> have now moved to <a title="Twitter Blog" href="http://www.jeremyjohnstone.com/twitter">/twitter</a>. There are also separate RSS feeds for each now. If there is demand, I will make a combined feed, but as of now one doesn&#8217;t exist.</li>
<li>(coming very soon) I am now hosting a photo gallery on my site. This will more or less be a portfolio of my <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a>. You can still go to <a title="My Flickr Photostream" href="http://www.flickr.com/photos/jeremyjohnstone">Flickr</a> as always to see the latest stuff, but the photos here will be more hand picked and showcase my better ones.</li>
<li>Bunch of backend management pieces + tons of automation</li>
<li>Moved the site from Dreamhost.com to Bluehost.com. While Bluehost&#8217;s cPanel installation is completely horrid, their performance is so much better than Dreamhost it&#8217;s not even funny. On average, pageload time is an order of magnitude faster, but there has been times it&#8217;s been two orders of magnitude faster. I&#8217;ve had an account on both for quite a while, so will see which works best long term and adjust accordingly.</li>
</ol>
<div>I&#8217;m pretty excited this is now live and hopefully more changes will be coming very soon. I have tested with all browsers that I care about personally (aka not IE6), but if you see an issue with your specific browser please let me know in a comment and I will be sure and take a look.</div>
<div>Enjoy!</div>
<div>-Jeremy</div>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=ugkK9H"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=ugkK9H" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=tmXwM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=tmXwM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=jHNdm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=jHNdm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=eXpYm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=eXpYm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=BMv0m"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=BMv0m" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=hAASM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=hAASM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=qoFCM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=qoFCM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/269636315" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/04/13/finally-updated-my-website/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/04/13/finally-updated-my-website/</feedburner:origLink></item>
		<item>
		<title>Adapting from one rare personality type to another</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/265266733/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/04/06/adapting-from-one-rare-personality-type-to-another/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 21:55:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/archives/2008/04/06/adapting-from-one-rare-personality-type-to-another/</guid>
		<description><![CDATA[Reading an old blog post of a friend today, it reminded me that I hadn&#8217;t taken a personality profile in a long time. I&#8217;ve never been a fan of personality tests because they are so easily corruptible once you learn the differences between the questions. I&#8217;ve found the only way I can really be honest [...]]]></description>
			<content:encoded><![CDATA[<p>Reading an <a href="http://terrychay.com/blog/article/my-personality.shtml">old blog post</a> of a <a href="http://terrychay.com/">friend</a> today, it reminded me that I hadn&#8217;t taken a personality profile in a long time. I&#8217;ve never been a fan of personality tests because they are <span class="afterthought" title="I once challenged a psychologist to name a Myers-Briggs profile and that I would take her test and match that profile. Needless to say, she accepted the challenge and soundly lost.">so easily corruptible</span> once you learn the differences between the questions. I&#8217;ve found the only way I can really be honest on them anymore is to go through the test rapidly and try to avoid thinking about the question and just go with my first gut reaction. Prompted by Terry&#8217;s post, I decided to take a couple profiles today and see if there was any change, which somehow not surprisingly there was. <span id="more-368"></span></p>
<p>All <a href="http://www.jeremyjohnstone.com/blog/archives/tag/my-life/" class="st_tag internal_tag" rel="tag" title="Posts tagged with my life">my life</a> I have been an <a href="http://www.personalitypage.com/INTP.html">INTP</a> with <a href="http://www.personalitypage.com/INFP.html">INFP</a> tendencies, both rare personality types (less than ~3% of the world). INTPs are the &#8220;Architects&#8221; and INFPs are the &#8220;Healers&#8221;. Below are a couple traits which I feel directly apply to me from both:</p>
<blockquote><p>Ruthless pragmatists about ideas, and insatiably curious, Architects are driven to find the most efficient means to their ends, and they will learn in any manner and degree they can. They will listen to amateurs if their ideas are useful, and will ignore the experts if theirs are not. Authority derived from office, credential, or celebrity does not impress them. Architects prize intelligence, and with their grand desire to grasp the structure of the universe, they can seem arrogant and may show impatience with others who have less ability, or who are less driven. Architects do not like to lead or control people. They&#8217;re very tolerant and flexible in most situations, unless one of their firmly held beliefs has been violated or challenged, in which case they may take a very rigid stance. The Architect is likely to be very shy when it comes to meeting new people. On the other hand, the Architect is very self-confident and gregarious around people they know well, or when discussing theories which they fully understand. The Architect has no understanding or value for decisions made on the basis of <a href="http://www.jeremyjohnstone.com/blog/archives/tag/personal/" class="st_tag internal_tag" rel="tag" title="Posts tagged with personal">personal</a> subjectivity or feelings. They strive constantly to achieve logical conclusions to problems, and don&#8217;t understand the importance or relevance of applying subjective emotional considerations to decisions. For this reason, Architects are usually not in-tune with how people are feeling, and are not naturally well-equiped to meet the emotional needs of others. The Architect may have a problem with self-aggrandizement and social rebellion, which will interfere with their creative potential. Since their Feeling side is their least developed trait, the Architect may have difficulty giving the warmth and support that is sometimes necessary in intimate relationships. If the Architect doesn&#8217;t realize the value of attending to other people&#8217;s feelings, he or she may become overly critical and sarcastic with others. If the Architect is not able to find a place for themself which supports the use of their strongest abilities, they may become generally negative and cynical. If the Architect has not developed their Sensing side sufficiently, they may become unaware of their environment, and exhibit weakness in performing maintenance-type tasks, such as <span class="afterthought" title="Look at my credit report and you will see this used to be a big problem for me.">bill-paying</span> and <span class="afterthought" title="Still working on this, but definitely a major problem for me in the past.">dressing appropriately</span>.</p></blockquote>
<blockquote><p>Healers are highly intuitive about people. They rely heavily on their intuitions to guide them, and use their discoveries to constantly search for value in life. They are on a continuous mission to find the truth and meaning underlying things. Every encounter and every piece of knowledge gained gets sifted through the Healer&#8217;s value system, and is evaluated to see if it has any potential to help the Healer define or refine their own path in life. The goal at the end of the path is always the same - the Healer is driven to help people and make the world a better place. Healers have a profound sense of idealism that comes from a strong <a href="http://www.jeremyjohnstone.com/blog/archives/tag/personal/" class="st_tag internal_tag" rel="tag" title="Posts tagged with personal">personal</a> sense of right and wrong. They conceive of the world as an ethical, honorable place, full of wondrous possibilities and potential goods. In fact, to understand Healers, we must understand that their deep commitment to the positive and the good is almost boundless and selfless, inspiring them to make extraordinary sacrifices for someone or something they believe in. Frequently they hear a call to go forth into the world and help others, a call they seem ready to answer, even if they must sacrifice their own comfort. Also, Healers might well feel a sense of separation because of their often misunderstood childhood. Healers live a fantasy-filled childhood-they are the prince or princess of fairy tales-an attitude which, sadly, is frowned upon, or even punished. Generally thoughtful and considerate, Healers are good listeners and put people at ease. Although they may be reserved in expressing emotion, they have a very deep well of caring and are genuinely interested in understanding people. This sincerity is sensed by others, making the Healer a valued friend and confidante. A Healer can be quite warm with people he or she knows well. Healers have very high standards and are perfectionists. Consequently, they are usually hard on themselves, and don&#8217;t give themselves enough credit. Healers may have problems working on a project in a group, because their standards are likely to be higher than other members&#8217; of the group. In group situations, they may have a &#8220;control&#8221; problem. The Healer needs to <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a> on balancing their high ideals with the requirements of every day living. Without resolving this conflict, they will never be happy with themselves, and they may become confused and paralyzed about what to do with their lives.</p></blockquote>
<p>It seems my efforts to become more outgoing in general over the past 5 years or so have also bled into my personality, as according to all the tests today I am now more of an <a href="http://www.personalitypage.com/ENTP.html">ENTP</a> with <a href="http://www.personalitypage.com/ENFP.html">ENFP</a> tendencies, which coincidentally are just as rare of personality types. ENTPs are the &#8220;Inventors&#8221; and ENFPs are the &#8220;Champions&#8221;. Below are a couple traits which I feel directly apply to me from both:</p>
<blockquote><p>With Extraverted Intuition dominating their personality, the Inventor&#8217;s primary interest in life is understanding the world that they live in. They are constantly absorbing ideas and images about the situations they are presented in their lives. Using their intuition to process this information, they are usually extremely quick and accurate in their ability to size up a situation. This ability to intuitively understand people and situations puts the Inventor at a distinct advantage in their lives. They generally understand things quickly and with great depth. Accordingly, they are quite flexible and adapt well to a wide range of tasks. They are good at most anything that <a href="http://www.jeremyjohnstone.com/blog/archives/tag/interests/" class="st_tag internal_tag" rel="tag" title="Posts tagged with interests">interests</a> them. As they grow and further develop their intuitive abilities and insights, they become very aware of possibilities, and this makes them quite resourceful when solving problems. Inventors are idea people. They get excited and enthusiastic about their ideas, and are able to spread their enthusiasm to others. Inventors are less interested in developing plans of actions or making decisions than they are in generating possibilities and ideas. Following through on the implementation of an idea is usually a chore to the Inventor. For some Inventors, this results in the habit of never finishing what they start. Inventors are keenly pragmatic, and often become expert at devising the most effective means to accomplish their ends. They are the most reluctant of all the types to do things in a particular manner just because that&#8217;s the way they have been done. As a result, they often bring fresh, new approaches to their <a href="http://www.jeremyjohnstone.com/blog/archives/tag/work/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Work">work</a> and play. They are intensely curious and continuously probe for possibilities, especially when trying to solve complex problems. Inventors can be engaging conversationalists, able to express their own complicated ideas and to follow the ideas of others. When arguing issues, however, they may deliberately employ debate skills to the serious disadvantage of their opponents. Inventors are usually non-conformists in the workplace, and can succeed in many areas as long as the job does not involve too much humdrum routine. They make good leaders on pilot projects that test their ingenuity. And they are skilled at engineering human relationships and human systems, quickly grasping the politics of institutions and always wanting to understand the people within the system rather than tell them what to do. No matter what their occupation, however, Inventors display an extraordinary talent for rising to the demands of even the most impossible situations. &#8220;It can&#8217;t be done&#8221; is a challenge to an Inventor and elicits a reaction of &#8220;I can do it.&#8221;</p></blockquote>
<blockquote><p>Champions have an unusually broad range of skills and talents. They are good at most things which interest them. Project-oriented, they may go through several different careers during their lifetime. To onlookers, the Champions may seem directionless and without purpose, but Champions are actually quite consistent, in that they have a strong sense of values which they live with throughout their lives. Everything that they do must be in line with their values. Because Champions live in the world of exciting possibilities, the details of everyday life are seen as trivial drudgery. They place no importance on detailed, maintenance-type tasks, and will frequently remain oblivous to these types of concerns. When they do have to perform these tasks, they do not enjoy themselves. The most outgoing of the Idealists, Champions often can&#8217;t wait to tell others of their extraordinary experiences. Champions can be tireless in talking with others, like fountains that bubble and splash, spilling over their own words to get it all out. And usually this is not simple storytelling; Champions often speak (or write) in the hope of revealing some truth about human experience, or of motivating others with their powerful convictions. Their strong drive to speak out on issues and events, along with their boundless enthusiasm and natural talent with language, makes them the most vivacious and inspiring of all the types. Fiercely individualistic, Champions strive toward a kind of <span class="afterthought" title="which might be why I unwrapped my car"><a href="http://www.jeremyjohnstone.com/blog/archives/tag/personal/" class="st_tag internal_tag" rel="tag" title="Posts tagged with personal">personal</a> authenticity</span>, and this intention always to be themselves is usually quite attractive to others. At the same time, Champions have outstanding intuitive powers and can tell what is going on inside of others, reading hidden emotions and giving special significance to words or actions. In fact, Champions are constantly scanning the social environment, and no intriguing character or silent motive is likely to escape their attention. Far more than the other Idealists, Champions are keen and probing observers of the people around them, and are capable of intense concentration on another individual. Their attention is rarely passive or casual. On the contrary, Champions tend to be extra sensitive and alert, always ready for emergencies, always on the lookout for what&#8217;s possible.</p></blockquote>
<p> </p>
<p><a href="http://www.flickr.com/photos/jeremyjohnstone/2393265697/"><img src="http://farm3.static.flickr.com/2059/2393265697_626c2750ca_o.jpg" alt="" /></a> </p>
<p>If you look at the breakdown based on one personality profile I took, you can see I still very much am IN*P as well, just with EN*P getting the competitive edge now. I don&#8217;t remember the exact breakdown in the past, but I seem to think EN*P was about where IN*P was in the past, so probably just a role reversal of sorts. Very interesting to say the least.</p>
<p>So I guess I could now be called an Inventing Champion instead of an Architecting Healer.</p>

<p><a href="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?a=6uEEV0"><img src="http://feeds.feedburner.com/~a/JeremyJohnstoneBlog?i=6uEEV0" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=t9xCM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=t9xCM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=NEJtm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=NEJtm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=2Gc6m"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=2Gc6m" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=ZBpIm"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=ZBpIm" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=y6JhM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=y6JhM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?a=D1YxM"><img src="http://feeds.feedburner.com/~f/JeremyJohnstoneBlog?i=D1YxM" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~4/265266733" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.jeremyjohnstone.com/blog/archives/2008/04/06/adapting-from-one-rare-personality-type-to-another/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.jeremyjohnstone.com/blog/archives/2008/04/06/adapting-from-one-rare-personality-type-to-another/</feedburner:origLink></item>
		<item>
		<title>Yahoo! Web Messenger Meets Fluid.app</title>
		<link>http://feeds.feedburner.com/~r/JeremyJohnstoneBlog/~3/264427907/</link>
		<comments>http://www.jeremyjohnstone.com/blog/archives/2008/04/04/yahoo-web-messenger-meets-fluidapp/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 03:14:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Fluid]]></category>

		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[Web Messenger]]></category>

		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.jeremyjohnstone.com/blog/archives/2008/04/04/yahoo-web-messenger-meets-fluidapp/</guid>
		<description><![CDATA[This evening I decided to play with a really kewl new app called Fluid. What this app does is allow you to create Site Specific Browsers. One of the first usages which popped into mind was a product I helped develop, Yahoo! Web Messenger. An annoyance of mine with it is that it had to [...]]]></description>
			<content:encoded><![CDATA[<p>This evening I decided to play with a really kewl new app called <a href="http://fluidapp.com">Fluid</a>. What this app does is allow you to create <span class="afterthought" title="fancy name for a wrapper around a web based app to allow you to use it "outside" the browser, sorta kinda">Site Specific Browsers</span>. One of the first usages which popped into mind was a product I helped develop, <a href="http://web.im">Yahoo! Web Messenger</a>. An annoyance of mine with it is that it had to live in a browser tab, something prone to getting closed accidentally, and also didn&#8217;t have any <span class="afterthought" title="scrolling title bar in the browser doesn't count to me">decent notifications of new messages when not in focus</span>. Being the perfect candidate for Fluid, IMHO, I set out to give it a shot. In less than an hours time I built a pretty kewl demo and here&#8217;s how you can use it too.  <span id="more-365"></span></p>
<ol>
<li>First things first, you need to download and install Fluid. You can do this by visiting <a href="http://fluidapp.com">http://fluidapp.com</a>. <span class="afterthought" title="if I have to explain how to do this, stop now, you are hopeless">After installing it</span>, fire up the app.</li>
<li>Second off, we now need to create our SSB instance. For the URL, enter in
<div class="codesnip-container" >http://webmessenger.<a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">yahoo</a>.com</div>
<p>For the name use something like
<div class="codesnip-container" ><a href="http://www.jeremyjohnstone.com/blog/archives/tag/yahoo/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Yahoo">Yahoo</a>! Web.IM</div>
<p>or whatever else strikes your fancy. The icon you can download from <a href="http://www.jeremyjohnstone.com/images/cesario.png">here</a>. Click create and you are all set.</li>
<li>Next we can fire up the application. It should live inside your applications folder just like any other desktop app. You use <a href="http://www.blacktree.com/">Quicksilver</a> right?</li>
<li>Now that the app is running, you can see the normal login screen of Web.IM and if you like, sign in just as a test.</li>
<li>Next comes the real powerful part. We need to create a new &#8220;userscript&#8221; which will add advanced functionality over what a normal browser experience provides. We do this by clicking on the <b>Userscripts</b> menu and then selecting &#8220;New Userscripts&#8230;&#8221;, or you can use Cmd-Option-N if you are a keyboard shortcut lover like me. Type in a meaningful name, I used WebIM, and then a new script editor opens. Paste the following code into the window <b>replacing</b> what was there already and then save and close the script editor.
<div class="codesnip-container" >
<div class="codesnip">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// ==UserScript==</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// @name&nbsp; &nbsp; &nbsp; &nbsp; WebIM</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// @namespace&nbsp; &nbsp;http://www.jeremyjohnstone.com</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// @description Enables advanced notifications and disables ads</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// @include&nbsp; &nbsp; &nbsp;*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// @author&nbsp; &nbsp; &nbsp; <a href="http://www.jeremyjohnstone.com/blog/archives/tag/jeremy-johnstone/" class="st_tag internal_tag" rel="tag" title="Posts tagged with jeremy johnstone">Jeremy Johnstone</a></span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// ==/UserScript==</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span><span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>window.<span class="me1">fluid</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// unread is a bit of misnomer, because we clear this</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// as soon as the window regains focus, not when you</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// actually read the IM (TODO: telepathy enabled?)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> unreadIMCount = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// store the state of the user being active</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> activeState = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// I don&#8217;t want ads in my IM client</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.<span class="me1">showAd</span> = <span class="kw2">function</span><span class="br0">&#40;</span>locale<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// When the window regains focus, clear the unread IM count</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Also save the state for other functions</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.<span class="kw3">onfocus</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; activeState = <span class="kw2">true</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; unreadIMCount = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.<span class="me1">fluid</span>.<span class="me1">dockBadge</span> = <span class="st0">&#8220;&#8221;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; window.<span class="kw3">onblur</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; activeState = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;