<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Free Mike Kelly</title>
	<link>http://www.freemikekelly.org</link>
	<description>Life, liberty and the pursuit of beautiful code</description>
	<pubDate>Mon, 01 Sep 2008 13:10:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>Bike Love</title>
		<link>http://www.freemikekelly.org/2008/09/01/bike-love/</link>
		<comments>http://www.freemikekelly.org/2008/09/01/bike-love/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 13:08:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/09/01/bike-love/</guid>
		<description><![CDATA[When I lived in south jersey I was obsessed with cars.  It was my hobby.  I would buy them cheap, fix them up, get new parts for them, etc.. And even when I didn&#8217;t have the money to do any of that, I&#8217;d still spend time washing and playing with the cars I have there.  [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.freemikekelly.org/wp-content/uploads/2008/09/capo.jpg" alt="capo.jpg" align="left" height="346" width="578" />When I lived in south jersey I was obsessed with cars.  It was my hobby.  I would buy them cheap, fix them up, get new parts for them, etc.. And even when I didn&#8217;t have the money to do any of that, I&#8217;d still spend time washing and playing with the cars I have there.  Being a computer guy, this mechanical connection is sometimes needed.  It allowed me to let go of all that super complicated &#8220;using my brain&#8221; stuff and just mindlessly work on something with my hands.  I haven&#8217;t had that connection since I moved up here.  Living up here you don&#8217;t even get a guaranteed parking spot on the street, let alone a driveway to take apart or just wash your car. <a href="http://www.freemikekelly.org/2008/09/01/bike-love/#more-140" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/09/01/bike-love/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Congratulations Rich and Sara</title>
		<link>http://www.freemikekelly.org/2008/07/07/congratulations-rich-and-sara/</link>
		<comments>http://www.freemikekelly.org/2008/07/07/congratulations-rich-and-sara/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 11:53:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Photos]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/07/07/congratulations-rich-and-sara/</guid>
		<description><![CDATA[On July 4th, our nation&#8217;s independence day, my friend Rich lost his independence.  Haha.  No, actually what happened is that Rich is starting a new family and life with his wife Sara.  These are just some of the photos from before the wedding, getting ready for the big day!
]]></description>
			<content:encoded><![CDATA[<p>On July 4th, our nation&#8217;s independence day, my friend Rich lost his independence.  Haha.  No, actually what happened is that Rich is starting a new family and life with his wife Sara.  These are just some of the photos from before the wedding, getting ready for the big day!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/07/07/congratulations-rich-and-sara/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Apache Performance Tweaks and Compression</title>
		<link>http://www.freemikekelly.org/2008/06/05/apache-performance-tweaks-and-compression/</link>
		<comments>http://www.freemikekelly.org/2008/06/05/apache-performance-tweaks-and-compression/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 14:57:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/06/05/apache-performance-tweaks-and-compression/</guid>
		<description><![CDATA[Ok, so I admit I&#8217;m a little obsessed with performance, but who wouldn&#8217;t be?  If you had a choice between a heavy slow site that will annoy your users or a lightweight snappy site your users will come back to over and over again, what would you choose?  Thats what I thought.  [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so I admit I&#8217;m a little obsessed with performance, but who wouldn&#8217;t be?  If you had a choice between a heavy slow site that will annoy your users or a lightweight snappy site your users will come back to over and over again, what would you choose?  Thats what I thought.  Ok so lets assume you have optimized all your queries, saved all your images in the correct format, have fast PHP code and CSS so clean you can eat off it.  You probably have a pretty fast site.  But it could be faster!  Let me show you how.</p>
<p>Note: This only works with Apache 2.0+ and the compression will only work if your apache configuration has &#8220;mod_deflate&#8221; turned on.</p>
<p>To help visualize this speed up, I&#8217;m using the plugin <a href="http://developer.yahoo.com/yslow/" target="_blank">YSlow</a> for firefox&#8217;s <a href="https://addons.mozilla.org/en-US/firefox/addon/1843" target="_blank">Firebug</a>. If your not using Firefox already for development, shame on you.  Lets take a look at the site as it is now.</p>
<p><img src="http://www.freemikekelly.org/wp-content/uploads/2008/06/apache3.png" alt="apache3.png" /></p>
<p><img src="http://www.freemikekelly.org/wp-content/uploads/2008/06/apache1.png" alt="apache1.png" /></p>
<p>As you see, we get a nice fat score of F.  This isn&#8217;t like getting an F on your math test though, this plugin is a VERY hard grader.  However, it won&#8217;t take much to improve this score.  As we see in the top graph, even with our browser cache, we&#8217;re still pulling down 52.2k and the real killer 36 requests. We look at our report card and see why we failed.  I&#8217;m only gonig to talk about the things we are going to fix.  &#8220;Add Expires Header&#8221; is first.  Basically when we serve up a file we can give it an expires time.  That way the browser will KNOW that the file it has in its cache is still good until that date comes.  We can set that however long in the future we want.  The next is &#8220;GZip Components&#8221;.  This is a type of compression that can be applied to most code files (js, css, html, php) that get served up as they are text based and have lots of wasted space.  This means that the browser has less to download from your server.  As you see I&#8217;ve already put my CSS on top and JS on the bottom which is always good coding practices.  The last thing is &#8220;Configure ETags&#8221;.  Its hard to explain how these things work, but basically its a time/server stamp on every file so the browser can ask the server if it has a new file.  However, with our expire times already set, we don&#8217;t need/want the browser to waste its energy checking these.  The problem with ETags are that even if your browser has a perfectly good cached version of the file, it is still going to bug the server for a new version.  This is a request and is bad.</p>
<p>There is a snippet to help all of these issues in one swoop.  An .htaccess genius Vinny I work with came up with this clever script you can simply drop in your root .htaccess file and it will make your score MUCH better.  Here it is:</p>
<blockquote><p> &lt;FilesMatch &#8220;\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$&#8221;&gt;<br />
Header unset ETag<br />
FileETag None<br />
ExpiresActive On<br />
ExpiresDefault &#8220;access plus 4 day&#8221;<br />
&lt;/FilesMatch&gt;</p>
<p>&lt;FilesMatch &#8220;\.(html|htm|php|js|css)$&#8221;&gt;<br />
SetOutputFilter DEFLATE<br />
&lt;/FilesMatch&gt;</p></blockquote>
<p>After dropping that guy in there, you&#8217;ll get a score that looks like this:</p>
<p><img src="http://www.freemikekelly.org/wp-content/uploads/2008/06/apache4.png" alt="apache4.png" /></p>
<p><img src="http://www.freemikekelly.org/wp-content/uploads/2008/06/apache5.png" alt="apache5.png" /></p>
<p>Look at That!  Only 1 request and the rest was cached.  Thats better savings than if you woke up at 4am on Black Friday to go to Best Buy.  The only issue is that if you updated your CSS file and uploaded it, some people would have to wait 4 days to get the new one.  However, there are cache busting techniques I&#8217;m working on automating that I&#8217;ll share with you soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/06/05/apache-performance-tweaks-and-compression/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting Faster MySQL Joins</title>
		<link>http://www.freemikekelly.org/2008/06/04/getting-faster-mysql-joins/</link>
		<comments>http://www.freemikekelly.org/2008/06/04/getting-faster-mysql-joins/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 14:23:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/06/04/getting-faster-mysql-joins/</guid>
		<description><![CDATA[For those who have suffered the consequences of painfully long queries due to your normalized databases, you know what I&#8217;m talking about.  If your like me, you almost cringe as you type the word &#8220;JOIN&#8221;, knowing it will cripple your query and make your page load slow.  Now all that work you put [...]]]></description>
			<content:encoded><![CDATA[<p>For those who have suffered the consequences of painfully long queries due to your normalized databases, you know what I&#8217;m talking about.  If your like me, you almost cringe as you type the word &#8220;JOIN&#8221;, knowing it will cripple your query and make your page load slow.  Now all that work you put into making sure your page was as light as possible doesn&#8217;t matter.  Well it appears there is a very simple basic thing we can all do to really help out in those evil JOINs.</p>
<p>First of all, you should index your tables to make for faster joins.  Thats an entirely different subject so read up on it <a href="http://hackmysql.com/case4">here</a>. However, there is an even simpler solution that appears obvious once you see it.  The way MySQL does a join is it reads the first table, does the join on the next, then the next.  It procedurally goes through each table in order that you wrote it.  Knowing this makes a BIG DIFFERENCE.  Say we have tables, &#8220;assets&#8221;, &#8220;assets_to_types&#8221; and &#8220;types&#8221;.  Normally you&#8217;d type something like this:</p>
<blockquote><p>SELECT *.a, *.b, *.t FROM assets a JOIN assets_to_types b ON a.type = b.type_id JOIN types t ON b.type_id=t.id WHERE t.name = &#8216;picture&#8217;</p></blockquote>
<p>Makes sense right?  You want the asset so that first then join on the type.  Well lets say we have 1,000 records in asset, 1,000 records in assets_to_types and 5 records in types. (for the 5 different types of assets you have).  The above query would start with all 1,000 assets, then join them on the 1,000 types to assets, then onto the 5 records.  That&#8217;s pretty intense.  Alternatively if you started with the smallest table first, then all the following joins will happen much faster because it has to look at less rows.  Try this instead.</p>
<blockquote><p> SELECT *.a, *.b, *.t FROM types t JOIN assets_to_types b ON b.type_id=t.id JOIN assets a ON a.type = b.type_id WHERE t.name = &#8216;picture&#8217;</p></blockquote>
<p>You will get the same results but in a MUCH faster query.  For the complete explanation on why this works so well, check out <a href="http://www.fiftyfoureleven.com/weblog/web-development/programming-and-scripts/mysql-optimization-tip">fiftyfoureleven</a> for the article.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/06/04/getting-faster-mysql-joins/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bloom Design - HTML Email</title>
		<link>http://www.freemikekelly.org/2008/06/04/bloom-design-html-email/</link>
		<comments>http://www.freemikekelly.org/2008/06/04/bloom-design-html-email/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 12:31:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Portfolio]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/06/04/bloom-design-html-email/</guid>
		<description><![CDATA[Ever wonder how you get all those pretty emails that look like web pages from companies?  The process is very similar to doing a website except for the end piece.  Bloom Design Studios drew up this snazzy look and feel for their newsletter and it was up to me to &#8220;slice up&#8221; the design to [...]]]></description>
			<content:encoded><![CDATA[<p>Ever wonder how you get all those pretty emails that look like web pages from companies?  The process is very similar to doing a website except for the end piece.  Bloom Design Studios drew up this snazzy look and feel for their newsletter and it was up to me to &#8220;slice up&#8221; the design to make it a reality for HTML email.  Writing an HTML email is much different than writing an HTML page.  Use of tables and tons of in-line css were used to make this email look spectacular on all email clients and lightweight as possible to ensure speedy delivery.  (Note: Contact Contact was used to actually deliver the email)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/06/04/bloom-design-html-email/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jQuery Wins (flawless victory)</title>
		<link>http://www.freemikekelly.org/2008/05/27/i/</link>
		<comments>http://www.freemikekelly.org/2008/05/27/i/#comments</comments>
		<pubDate>Tue, 27 May 2008 15:28:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/05/27/i/</guid>
		<description><![CDATA[This is really no secret to anyone who has worked with me, but I must publicly admit my love for the lightweight javascript library.  For those of you who haven&#8217;t used jQuery yet, let me explain why its better than sliced bread.  It&#8217;s simple, intuitive, simple, widely supported, simple, lightweight, simple, cross-browser etc. [...]]]></description>
			<content:encoded><![CDATA[<p>This is really no secret to anyone who has worked with me, but I must publicly admit my love for the lightweight javascript library.  For those of you who haven&#8217;t used jQuery yet, let me explain why its better than sliced bread.  It&#8217;s simple, intuitive, simple, widely supported, simple, lightweight, simple, cross-browser etc.  Forget anything you know about &#8220;traditional&#8221; javascript libraries like Prototype and Scriptaculous.  This is in a league all on its own.  I could rant for pages and pages to the advantages, but I&#8217;d rather share a simple few examples with you.  Afterall, a line of code is worth 1,000 words.</p>
<p>Let&#8217;s say we have a div with the id of &#8220;content_container&#8221; dynamically filled with content and you want to know the height.  Well traditionally, even with the help of old libraries, this is at least a 3-4 confusing lines of code.  But with jQuery its this:</p>
<blockquote><p>var oldHeight = $(&#8217;#content_container&#8217;).height();</p></blockquote>
<p>Thats it!  You might have even guessed that right?  Now lets go for something a little trickier.  Say we have a page with several tabs and one of them is selected.  When you click on different tab you&#8217;d like the old selected tab to go unselected and make the one you clicked on selected.  There are typically 2 ways to do this.  First would be to loop through all of the tabs and look for the one with the class of selected and change it.  Another way would be to blindly reset them all to unselected and then select the clicked one.  Both of these methods take up precious time and the second one even might cause visual jumps on the page.  Lets see how jQuery will do it.</p>
<blockquote><p>$(&#8217;.tab_container .tab_selected&#8217;).removeClass().addClass(&#8217;tab_unselected&#8217;);<br />
$(&#8217;#tab_&#8217;+type).removeClass().addClass(&#8217;tab_selected&#8217;);</p></blockquote>
<p>Yup.  2 lines.  Because jQuery is chainable, many things can be accomplished on one or two lines.  The selector makes really easy work of this.  It simply says find the div with a class of &#8220;tab_selected&#8221; within the &#8220;tab_container&#8221; div and remove its class and add unselected.  The second line just says the id of the tab we clicked on and remove its class and add &#8220;tab_selected&#8221;.  You can see how this can start to get very powerful.  Also note the use of div id&#8217;s and div classes.</p>
<blockquote><p>$(&#8217;.class_name&#8217;) - select an object by its class<br />
$(&#8217;#id_name&#8217;) - select and object by its id</p></blockquote>
<p>With jQuery, you can forget about all the tedious lines of javascript and replace it with sensible, simple, elegant lines of beautiful code.  I will be writing more simple tutorials on jQuery as time goes on discussing animation, DOM manipulation, and Ajax.  Until then check out <a href="http://jquery.com/">http://jquery.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/05/27/i/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Happy Back to Work Day!</title>
		<link>http://www.freemikekelly.org/2008/05/27/happy-back-to-work-day/</link>
		<comments>http://www.freemikekelly.org/2008/05/27/happy-back-to-work-day/#comments</comments>
		<pubDate>Tue, 27 May 2008 15:05:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Photos]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/05/27/happy-back-to-work-day/</guid>
		<description><![CDATA[And for a little entertainment, a comic from xkcd.  And even though most web languages don&#8217;t need to compile, its funny anyway.
]]></description>
			<content:encoded><![CDATA[<p>And for a little entertainment, a comic from xkcd.  And even though most web languages don&#8217;t need to compile, its funny anyway.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/05/27/happy-back-to-work-day/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Safe HTML Truncation</title>
		<link>http://www.freemikekelly.org/2008/05/26/safe-html-truncation/</link>
		<comments>http://www.freemikekelly.org/2008/05/26/safe-html-truncation/#comments</comments>
		<pubDate>Mon, 26 May 2008 17:27:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/05/26/safe-html-truncation/</guid>
		<description><![CDATA[Many times us programmers have to take some dynamic text and make an excerpt out of it.  We do this for a number of reasons, but the most common, to save space on the page.  We just want to lure the reader in with 300 or so characters then have them click through to see [...]]]></description>
			<content:encoded><![CDATA[<p>Many times us programmers have to take some dynamic text and make an excerpt out of it.  We do this for a number of reasons, but the most common, to save space on the page.  We just want to lure the reader in with 300 or so characters then have them click through to see the rest of the story.  Sure its easy to just take the content and take a PHP substring of it.  But what if that content is HTML?  What would happen if you cut off text at &#8216;&lt;a href=index.php&gt;Hello World &#8216;?  The rest of the page would become a link to index.php.  And while we&#8217;re on the subject, how many characters is that string there?  PHP substring would say its 29 characters, when really only 11 of them are displayed.  It occurred to me that we needed a safe HTML truncation function so I can use it over and over again.  As a matter of fact, you saw this function in action when you clicked into this post.</p>
<p>First I will share with you the wordpress plugin I made for it.  This plugin is simple and just carries the function and makes it obtainable through the template.  So even if you will not be using this for wordpress, you can download this and extract the function.</p>
<p><a href="http://www.freemikekelly.org/wp-content/uploads/2008/05/mk_excerpt.zip" title="mk_excerpt.zip">mk_excerpt.zip</a></p>
<p>Basically the function takes 3 arguments.  The content, the number of characters to cut off at, and the addition string (ex. usually &#8220;&#8230;&#8221;)  For all those who want to see the code, here it is:</p>
<blockquote><p>function mk_html_substr($string, $length, $addstring=&#8221;")<br />
{</p>
<blockquote><p>    $addstring = &#8221; &#8221; . $addstring;<br />
if (strlen($string) &gt; $length) {<br />
if( !empty( $string ) &amp;&amp; $length&gt;0 ) {<br />
$isText = true;<br />
$ret = &#8220;&#8221;;<br />
$i = 0;<br />
$currentChar = &#8220;&#8221;;<br />
$lastSpacePosition = -1;<br />
$lastChar = &#8220;&#8221;;<br />
$tagsArray = array();<br />
$currentTag = &#8220;&#8221;;<br />
$tagLevel = 0;<br />
$noTagLength = strlen( strip_tags( $string ) );</p>
<p>// Parser loop<br />
for( $j=0; $j&lt;strlen( $string ); $j++ ) {<br />
$currentChar = substr( $string, $j, 1 );<br />
$ret .= $currentChar;<br />
if( $currentChar == &#8220;&lt;&#8221;) $isText = false;<br />
if( $isText ) {<br />
// Memorize last space position<br />
if( $currentChar == &#8221; &#8221; ) { $lastSpacePosition = $j; }<br />
else { $lastChar = $currentChar; }<br />
$i++;<br />
}else{<br />
$currentTag .= $currentChar;<br />
}<br />
// Greater than event<br />
if( $currentChar == &#8220;&gt;&#8221; ) {<br />
$isText = true;<br />
// Opening tag handler<br />
if( ( strpos( $currentTag, &#8220;&lt;&#8221; ) !== FALSE ) &amp;&amp; ( strpos( $currentTag, &#8220;/&gt;&#8221; ) === FALSE ) &amp;&amp; ( strpos( $currentTag, &#8220;&lt;/&#8221;) === FALSE ) ) {<br />
// Tag has attribute(s)<br />
if( strpos( $currentTag, &#8221; &#8221; ) !== FALSE ) {<br />
$currentTag = substr( $currentTag, 1, strpos( $currentTag, &#8221; &#8221; ) - 1 );<br />
}else{<br />
// Tag doesn&#8217;t have attribute(s)<br />
$currentTag = substr( $currentTag, 1, -1 );<br />
}<br />
array_push( $tagsArray, $currentTag );<br />
}else if( strpos( $currentTag, &#8220;&lt;/&#8221; ) !== FALSE ){<br />
array_pop( $tagsArray );<br />
}<br />
$currentTag = &#8220;&#8221;;<br />
}<br />
if( $i &gt;= $length) {<br />
break;<br />
}<br />
}<br />
// Cut HTML string at last space position<br />
if( $length &lt; $noTagLength ) {<br />
if( $lastSpacePosition != -1 ) {<br />
$ret = substr( $string, 0, $lastSpacePosition );<br />
}else{<br />
$ret = substr( $string, $j );<br />
}<br />
}<br />
// Close broken XHTML elements<br />
while( sizeof( $tagsArray ) != 0 ) {<br />
$aTag = array_pop( $tagsArray );<br />
$ret .= &#8220;&lt;/&#8221; . $aTag . &#8220;&gt;\n&#8221;;<br />
}<br />
}else{<br />
$ret = &#8220;&#8221;;<br />
}<br />
// only add string if text was cut<br />
if ( strlen($string) &gt; $length ) {<br />
return( $ret.$addstring );<br />
}<br />
else {<br />
return ( $res );<br />
}<br />
}else {<br />
return ( $string );<br />
}</p></blockquote>
<p>}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/05/26/safe-html-truncation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>1.9 Miles to Freedom</title>
		<link>http://www.freemikekelly.org/2008/05/26/19-miles-to-freedom/</link>
		<comments>http://www.freemikekelly.org/2008/05/26/19-miles-to-freedom/#comments</comments>
		<pubDate>Mon, 26 May 2008 16:26:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/05/26/19-miles-to-freedom/</guid>
		<description><![CDATA[At the turn of 2008, Erin and I were fairly certain we were going to pack our bags by February and be on our way to a new life in Denver.  Plans change, as they always do.  There was a reason Denver wasn&#8217;t happening.  We narrowed it down to that we needed a change in [...]]]></description>
			<content:encoded><![CDATA[<p>At the turn of 2008, Erin and I were fairly certain we were going to pack our bags by February and be on our way to a new life in Denver.  Plans change, as they always do.  There was a reason Denver wasn&#8217;t happening.  We narrowed it down to that we needed a change in venue.  Our apartment in Cliffside Park, NJ had more than worn out its welcome with us.  On paper the apartment looked great.  We had a lot of room, parking in the back, not that far from bus transportation, and rent that was $850 a month (a total steal to anyone who knows NYC rents).  The Cliffside Park apartment did fail, however, in person.  Sure there was a lot of room, but it wasn&#8217;t used that well as it still felt small and cramped.  It was located right on Palisade Ave which is a superhighway for noisy trucks and cars, so if you opened the window, you couldn&#8217;t hear yourself think.  The sun constantly blazed through all of the windows heating the place like a greenhouse.  Then there was the town of Cliffside Park.  It was just kinda there&#8230;. no personality or vibe (except the vibrations of 18 wheelers barreling by)</p>
<p>So maybe it wasn&#8217;t Denver we needed, but Cliffside Park we needed to get away from.  We started our apartment search in our price range.  We still wanted to say in Jersey to keep the car, make paperwork easy and pay cheaper rent, but needed a cooler place.  The first place one thinks of is Hoboken.  I love Hoboken, but its just as crowded as Manhattan and almost just as expensive.  Then come the people that say Newark or Jersey City.  These aren&#8217;t horrible locations but not really nice either.  Newark is just plain ghetto, and although Jersey City is getting better, it doesn&#8217;t feel solid yet.  Erin found the answer on craigslist in a place 1.9 miles away called Guttenberg, NJ.  You&#8217;ve probably never heard of it, and there is a good reason.   It&#8217;s only 4 blocks wide!  Thats right, its a little town crammed in between West New York and North Bergen.</p>
<p>This apartment on paper looked worse than our other place.  It was less floorspace, only street parking (if your lucky) and more money!  Its charm, however beats any number on paper.  It was less floorspace but it uses it great in its open layout.  Most of the windows are shaded and the apartment stays naturally cool.  The neighborhood is dead quiet yet a block in any direction will get you to the police station, post office, minute marts, chinese food places, bars, pizza places, etc&#8230; Its a cool neighborhood.  And as a bonus, we were allowed to have a dog.  (see the Blue pictures)  The new place is also less than 1/2 block from Blvd East, which is not only breathtaking for views of the city, but every transportation vehicle in the area goes down it, so catching a bus into the city takes 10 minutes tops and only takes about 20 minutes until your in Times Square.</p>
<p>We&#8217;ve been here officially since  April 15th and have never looked back.  Our lives have completely changed for the better.  It amazing what can be just around the corner.  We&#8217;re not in no rush to move anywhere for a while.  Being in a place like this makes New York a wonder place to be near.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/05/26/19-miles-to-freedom/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Boy Named Blue</title>
		<link>http://www.freemikekelly.org/2008/05/24/a-boy-named-blue/</link>
		<comments>http://www.freemikekelly.org/2008/05/24/a-boy-named-blue/#comments</comments>
		<pubDate>Sat, 24 May 2008 14:16:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Photos]]></category>

		<guid isPermaLink="false">http://www.freemikekelly.org/2008/05/24/a-boy-named-blue/</guid>
		<description><![CDATA[Everyone, meet blue.  He&#8217;s a 3 year old Shiba Inu rescued from the Boston area.  Blue has been in our apartment for 3 weeks now and really getting used to things around here.  He&#8217;s super super smart which is nice because you can teach him things so easily.  However, he will use his smarts to [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone, meet blue.  He&#8217;s a 3 year old Shiba Inu rescued from the Boston area.  Blue has been in our apartment for 3 weeks now and really getting used to things around here.  He&#8217;s super super smart which is nice because you can teach him things so easily.  However, he will use his smarts to take advantage of you if your not paying attention, so its a double edged sword.  As with most Shibas, you must remain very &#8220;alpha&#8221; around them and they have to know who is boss.  Shibas are a very primative dog breed and dominant when left to their own devices.  The rewards are spectacular though.  We love him very much and he&#8217;s a great dog.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.freemikekelly.org/2008/05/24/a-boy-named-blue/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
