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

<channel>
	<title>Ryan Kanno: The diary of an Enginerd in Hawaii&#187; Work</title>
	<atom:link href="http://blog.localkinegrinds.com/category/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.localkinegrinds.com</link>
	<description>Everything you&#039;ve ever thought, but never had the balls to say.</description>
	<lastBuildDate>Thu, 05 Aug 2010 20:59:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Another turning point, a fork stuck in the road&#8230;</title>
		<link>http://blog.localkinegrinds.com/2008/10/10/another-turning-point-a-fork-stuck-in-the-road/</link>
		<comments>http://blog.localkinegrinds.com/2008/10/10/another-turning-point-a-fork-stuck-in-the-road/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 13:54:31 +0000</pubDate>
		<dc:creator>ryankanno</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[compacflt]]></category>
		<category><![CDATA[farewell]]></category>
		<category><![CDATA[navy]]></category>
		<category><![CDATA[spawar]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://blog.localkinegrinds.com/?p=244</guid>
		<description><![CDATA[&#8220;50 years from now, when you look back at your life, don&#8217;t you want to say you had the guts to get in the car?&#8221; Shia LaBeouf as Sam Witwicky, Transformers As some of you may know, I recently left my position as a Navy contractor at COMPACFLT for another position at a small, local [...]]]></description>
			<content:encoded><![CDATA[<h3>&#8220;50 years from now, when you look back at your life, don&#8217;t you want to say you had the guts to get in the car?&#8221;</h3>
<p align="right"><strong><i>Shia LaBeouf as Sam Witwicky, Transformers</i></strong></p>
<p>As some of you may know, I recently left my position as a Navy contractor at <a href="http://www.cpf.navy.mil/">COMPACFLT</a> for another position at a small, local technology startup.   Having come from a family of &#8220;lifers&#8221;, it wasn&#8217;t an easy decision.  Even though I absolutely loved both the work and people, I felt that I would have too many regrets not taking this opportunity.</p>
<p><strong>So with that said, here&#8217;s a few of my lasting memories:</strong></p>
<ul>
<li>Late nights in the dreaded server room with Wally and co.</li>
<li>The lunchroom gang &#8211; Our topics ranged the gamut; from MMA to the next <a href="http://en.wikipedia.org/wiki/4chan">4chan</a> meme.
<li>Admiral&#8217;s Cup &#8211; We won a basketball game! (Not by forfeit!)</li>
<li>Ping pong Fridays!</li>
<li>Almost killing my co-worker Cindy with the Wii controller&#8230; and then my yo-yo.</li>
<li>Monday morning chats with Gits about his weekend PS3 adventures.</li>
<li>Steve&#8217;s yellow lunch truck</li>
</ul>
<p>Though I came in a contractor, I feel as though I&#8217;m leaving as family.  So with that said, farewell, good luck, and Godspeed to everyone at FLT!</p>
<p align="center">
<a href="http://flickr.com/photos/ryankanno/sets/72157607882338532/"><img src="http://blog.localkinegrinds.com/wp-content/uploads/2008/10/mullet.jpg" alt="" title="mullet" width="500" height="375" class="aligncenter size-full wp-image-252" style="padding:5px; border:1px solid #114477;"/></a>
</p>
<p style="text-align:center;">
Click on my picture to check out <a href="http://flickr.com/photos/ryankanno/sets/72157607882338532/">my flickr set</a>!</p>
<img src="http://blog.localkinegrinds.com/?ak_action=api_record_view&id=244&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.localkinegrinds.com/2008/10/10/another-turning-point-a-fork-stuck-in-the-road/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OSCON: Day 3, 4, and 5!</title>
		<link>http://blog.localkinegrinds.com/2007/07/31/oscon-day-3-4-and-5/</link>
		<comments>http://blog.localkinegrinds.com/2007/07/31/oscon-day-3-4-and-5/#comments</comments>
		<pubDate>Tue, 31 Jul 2007 19:25:33 +0000</pubDate>
		<dc:creator>ryankanno</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[oscon]]></category>
		<category><![CDATA[oscon-2007]]></category>
		<category><![CDATA[portland]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://blog.localkinegrinds.com/2007/07/31/oscon-day-3-4-and-5/</guid>
		<description><![CDATA[I&#8217;m sorry. I know I&#8217;m late with my updates, but I&#8217;m currently enrolled in the final project based MBA class at the University of Hawaii and it&#8217;s been kicking my @$$. In any case, enough excuses&#8230; here&#8217;s the quick rundown of the presentations I attended on Day 3, 4, and 5 at OSCON. Btw, all [...]]]></description>
			<content:encoded><![CDATA[<p><strong>I&#8217;m sorry.</strong></p>
<p>I know I&#8217;m late with my updates, but I&#8217;m currently enrolled in the final project based <a href="http://www.shidler.hawaii.edu/Default.aspx?tabid=146">MBA</a> class at the <a href="http://www.hawaii.edu">University of Hawaii</a> and it&#8217;s been kicking my @$$.  In any case, enough excuses&#8230; here&#8217;s the quick rundown of the presentations I attended on Day 3, 4, and 5 at <a href="http://conferences.oreillynet.com/os2007/">OSCON</a>.  Btw, all the presentation files can be found <a href="http://conferences.oreillynet.com/pub/w/58/presentations.html">online</a>! (Don&#8217;t you love open source).  Not to mention, I&#8217;ve tried to scour the web for reviews notes for each session and linked them appropriately.</p>
<h2 style="margin-top:.5em;"><u>Day 3</u></h2>
<p><b>Session 1: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12901">Subversion: Powerful New Toys</a> with Director for The Apache Software Foundation, <a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/1247">Justin Erenkrantz</a></p>
<p>Since we&#8217;ve implemented Subversion at work, I wanted to be forward thinking and check out all the new features and the direction of the project.  It&#8217;s nice to know they&#8217;re looking at <a href="http://www.selenic.com/mercurial/wiki/">Mercurial&#8217;s</a> revlog.</p>
<p><b>Session 2: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13730">Who Gets to Decide What Open Source Means?</a> with a really powerful panel of people. <img src='http://blog.localkinegrinds.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>With a panel of supastahs, I wanted to hear the debate about all the confusion surrounding the word &#8220;free&#8221; software and what exactly constitutes open source.  Pretty interesting to see what all the fuss is about especially once the software crosses over into the Enterprise.</p>
<p><b>Session 3: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12736">PHP: Bigger and Faster</a> with <a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/106">Rasmus Lerdorf</a>, creator of PHP.</p>
<p>It&#8217;s funny; I ate lunch with Rasmus and I didn&#8217;t even know it.  Really interesting talk about <a href="http://www.php.net/">PHP</a>.  I&#8217;m not a hugeeee PHP fan but still interesting nonetheless.  First introduction to <a href="http://developer.yahoo.com/yslow/">YSlow for Firebug</a>.</p>
<p><b>Session 4: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13110">Using Trac Efficiently: Work Smarter, Not Harder</a> with <a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/1775">Vivek Khera</a></p>
<p>Since I just installed a <a href="http://www.vmware.com/">VMWare</a> image of a <a href="http://trac.edgewall.org/">Trac</a> install on Windows, I wanted to see what the community buzz was all about.  The talk was really, really crowded; not to mention I heard numerous speakers over the course of the conference pimp out Trac.  People mentioned having trouble installing Trac on Windows, but I followed the <a href="http://trac.edgewall.org/wiki/TracOnWindows">wiki instructions</a> and it was fine &#8211; not sure what all the fuss is about.  I&#8217;ll have to get back to the office and figure out how to setup the authentication and hooks into our repository so we can actually use the installation I configured at work.</p>
<p><b>Session 5: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12199">High Performance Web Pages</a> with Chief Performance Yahoo!, <a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/3241">Steve Souders</a></p>
<p>Steve introduced an internal Yahoo! tool, <a href="http://developer.yahoo.com/yslow">YSlow</a>, that hooked into the lovely <a href="http://www.getfirebug.com/ ">Firebug</a> to grade the performance of a website.  After having played with it for a few days, I&#8217;m loving it.  Nothing like instant gratification in the form of a score.  And if you develop ANYTHING on the web and you&#8217;re not using Firebug, it&#8217;s best advised that you do. <img src='http://blog.localkinegrinds.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2 style="margin-top:.5em;"><u>Day 4</u></h2>
<p><b>Session 1: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/14668">Why Observability Matters &#8211; How DTrace Helped Twitter</a> with Adam Leventhal and Brandon Gregg. </p>
<p>After reading about all the <a href="http://romeda.org/blog/2007/04/scaling-twitter-talk.html">scaling troubles</a> of <a href="http://twitter.com/ ">Twitter</a>, I really wanted to see what tools helped determine the root cause of the problem.  <a href="http://www.sun.com/bigadmin/content/dtrace/">Sun&#8217;s DTrace</a> is a fascinating real time, trace tool that can help debug and trace pretty much any issue that you&#8217;d encounter.  Though I can&#8217;t use it at work, I still love to see the low level tools that are being developed.  If you&#8217;re lost, don&#8217;t worry I was too, read more about <a href="http://www.sun.com/bigadmin/content/dtrace/">DTrace at Wikipedia</a>.  </p>
<p><b>Session 2: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12980">Using and Writing Rails Plugins</a> with <a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/1829">Eric Pugh</a></p>
<p>Since I&#8217;ve slowly been delving in the <a href="http://www.rubyonrails.org/ ">Rails</a> world, I wanted to see what the plugin system was all about.  The session was pretty informative, even recommending <a href="http://workingwithrails.com/">sites</a> that give statistics on the most frequently used plugins.  (Don&#8217;t worry, I still love my <a href="http://www.djangoproject.com">Django</a>).</p>
<p><b>Session 3: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12753">Python 3000</a> with <a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/118">Guido van Rossum</a></p>
<p>Hearing the God of <a href="http://www.python.org/">Python</a> speak about its future is pretty fascinating.  I find it interesting that Py3K will break compatibility with Python 2.X.  If you don&#8217;t know what that means, basically &#8211; you have to upgrade all your Python scripts to 2.6, then a source-code conversion tool will be used to convert your source files in Python 2.6 to Py3K.  Scary but rest assured that these guys are super smart.  To read more about Py3K, you can check out the <a href="http://www.python.org/dev/peps/pep-3000/">PEP</a> for it. </p>
<p><b>Session 4: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/14038">Advanced Spring Framework</a> with CEO of Interface21, <a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/3571">Rod Johnson</a></p>
<p>I&#8217;ve heard Rod speak a number of times at <a href="http://sun.com/javaone">JavaOne</a> and since I&#8217;ve converted all my projects to use <a href="http://www.springframework.org/">Spring</a> in some fashion or another, I always like to see what&#8217;s going on in the community.  Btw, if you&#8217;re not using a <a href="http://en.wikipedia.org/wiki/Dependency_injection">dependency injection</a> framework, you really, really, really need to look into them. <img src='http://blog.localkinegrinds.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2 style="margin-top:.5em;"><u>Day 5</u></h2>
<p><b>Session 1: </b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/12974">Subversion Worst Practices</a> with Google employees, <a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/1882">Brian Fitzpatrick</a>and <a href="http://conferences.oreillynet.com/cs/os2007/view/e_spkr/2762">Ben Collins-Sussman</a>.</p>
<p>Since <a href="http://harperreed.org">Harper</a> and <a href="http://www.morefishthanman.com/">Scoot</a> are friends of Brian&#8217;s in Chitown and we use <a href="http://subversion.tigris.org">Subversion</a> at work, I wanted to see what the core development team thought about the worst practices.  This was by far the funniest of all the sessions I attended, and it was SRO only.  To read about notes from last year&#8217;s session named &#8220;Subversion Best Practices&#8221;, check them out <a href="http://bradchoate.com/weblog/2006/07/27/oscon-subversion-best-practices">here</a>.  Or&#8230; even better, check out <a href="http://fitz.blogspot.com/2007/07/oscon-2007-presentations.html">Fitz&#8217;s blog</a> about this year&#8217;s presentation.</p>
<p>Whew.  All in all, a very awesome conference.  Hopefully, I can convince management that this <strong>is</strong> the future.  // KANNO</p>
<img src="http://blog.localkinegrinds.com/?ak_action=api_record_view&id=117&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.localkinegrinds.com/2007/07/31/oscon-day-3-4-and-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON: Day 2</title>
		<link>http://blog.localkinegrinds.com/2007/07/24/oscon-day-2/</link>
		<comments>http://blog.localkinegrinds.com/2007/07/24/oscon-day-2/#comments</comments>
		<pubDate>Wed, 25 Jul 2007 01:00:38 +0000</pubDate>
		<dc:creator>ryankanno</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[oscon]]></category>
		<category><![CDATA[oscon-2007]]></category>
		<category><![CDATA[portland]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[technical-management]]></category>

		<guid isPermaLink="false">http://blog.localkinegrinds.com/2007/07/26/oscon-day-2/</guid>
		<description><![CDATA[Morning Tutorial Technical Management of Software Development with Uber Technical Lead @ Google, Alex Martelli Mr. Martelli covered a gauntlet of topics pertaining to technical management including empowering your team, optimal team size, time management skills, and test-driven development. Even though his tutorial regurgitated a lot of the obvious, it&#8217;s nice to hear it being [...]]]></description>
			<content:encoded><![CDATA[<h2 style="margin-top:.5em;"><u>Morning Tutorial</u></h2>
<p><b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13066">Technical Management of Software Development</a> with Uber Technical Lead @ Google, <a href="http://www.oreillynet.com/pub/au/918">Alex Martelli</a></b></p>
<p>Mr. Martelli covered a gauntlet of topics pertaining to technical management including empowering your team, optimal team size, time management skills, and test-driven development.  Even though his tutorial regurgitated a lot of the obvious, it&#8217;s nice to hear it being preached by important people at large corporations.  What I found most useful in Mr. Martelli&#8217;s presentation was his extensive list of suggested reading material about management.  I&#8217;ll post them when I get a chance to go over his slides. <img src='http://blog.localkinegrinds.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><b>Overall grade:</b> <span style="font-weight:bold; font-size:125%;">A-</span></p>
<h2><u>Afternoon Tutorial</u></h2>
<p><b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13132">Introduction to Rails</a> with <a href="http://www.vanderburg.org/">Glenn Vanderburg</a></b></p>
<p>Unlike the Ruby presentation from a day ago, the Introduction to Rails was everything I hoped the Ruby talk was going to be (and more).  Even though Mr. Vanderburg only had three or so hours, he did a great job of covering quite a bit of material.  Topics he covered included the model, the controller, filters, flash, caching, layouts, views, the various helpers, form handling, migration, routing, and testing (*whew*).  Though he didn&#8217;t get into great detail on each subject, I felt that he covered enough to pique my interest.  I actually went back to the hotel itching to code a Rails app.</p>
<p><b>Overall grade:</b> <span style="font-weight:bold; font-size:125%;">A</span></p>
<p>Stay tuned for more updates from <a href="http://conferences.oreillynet.com/os2007/">OSCON 2007</a>!</p>
<img src="http://blog.localkinegrinds.com/?ak_action=api_record_view&id=116&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.localkinegrinds.com/2007/07/24/oscon-day-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON: Day 1</title>
		<link>http://blog.localkinegrinds.com/2007/07/23/oscon-day-1/</link>
		<comments>http://blog.localkinegrinds.com/2007/07/23/oscon-day-1/#comments</comments>
		<pubDate>Tue, 24 Jul 2007 01:23:57 +0000</pubDate>
		<dc:creator>ryankanno</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[oscon]]></category>
		<category><![CDATA[oscon-2007]]></category>
		<category><![CDATA[portland]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.localkinegrinds.com/2007/07/25/oscon-day-1/</guid>
		<description><![CDATA[Morning Tutorial Learning Ruby with Mike Fitzgerald Even though Mike is a renowned author in the technical community, I was not at all impressed with his presentation. Don&#8217;t get me wrong &#8211; the presentation went exactly as how it was described in the program guide. My issue was the fact that the tutorial seemed overly [...]]]></description>
			<content:encoded><![CDATA[<h2 style="margin-top:.5em;"><u>Morning Tutorial</u></h2>
<p><b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13206">Learning Ruby</a> with Mike Fitzgerald</b></p>
<p>Even though Mike is a <a href="http://www.oreillynet.com/pub/au/1365">renowned author</a> in the technical community, I was not at all impressed with his presentation.  Don&#8217;t get me wrong &#8211; the presentation went exactly as how it was described in the program guide.  My issue was the fact that the tutorial seemed overly simplified considering the background of the typical conference attendee.  I really was hoping to learn something I couldn&#8217;t find in one of <a href="http://www.amazon.com/exec/obidos/search-handle-url/104-7985244-5689537?%5Fencoding=UTF8&#038;search-type=ss&#038;index=books&#038;field-author=Michael%20Fitzgerald">his books</a>.</p>
<p><b>Overall grade:</b> <span style="font-weight:bold; font-size:125%;">C</span></p>
<h2><u>Afternoon Tutorial</u></h2>
<p><b><a href="http://conferences.oreillynet.com/cs/os2007/view/e_sess/13975">Django Master Class</a> with <a href="http://simonwillison.net/">Simon Willison</a>, <a href="http://www.jacobian.org/">Jacob Kaplan-Moss</a>, and Jeremy Dunck</b></p>
<p>Working on a <a href="http://test.wegoeat.com">personal project</a> (soon to be released in the wild) in <a href="http://www.djangoproject.com/">Django</a>, I had looked forward to this tutorial for several months.  I had really high expectations for this tutorial &#8211; and the Django team did not disappoint.  Some of the topics they covered included signals, <a href="http://www.djangoproject.com/documentation/templates_python/#writing-custom-template-tags">template tag</a> patterns, <a href="http://code.google.com/p/django-openid/">OpenID integration</a>, and scalability.  Though I&#8217;ve done work on all of the above, it was still interesting actually matching faces to names.  Not to mention, many of the attendees scored a free Django shirt and a few buttons. </p>
<p><b>Overall grade:</b> <span style="font-weight:bold; font-size:125%;">A</span></p>
<p>Stay tuned for more updates from <a href="http://conferences.oreillynet.com/os2007/">OSCON 2007</a>!</p>
<img src="http://blog.localkinegrinds.com/?ak_action=api_record_view&id=115&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.localkinegrinds.com/2007/07/23/oscon-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo! UI Grids &#8211; footerStickAlt (w/ jQuery goodness)</title>
		<link>http://blog.localkinegrinds.com/2007/06/30/yahoo-ui-grids-footerstickalt-w-jquery-goodness/</link>
		<comments>http://blog.localkinegrinds.com/2007/06/30/yahoo-ui-grids-footerstickalt-w-jquery-goodness/#comments</comments>
		<pubDate>Sat, 30 Jun 2007 22:17:51 +0000</pubDate>
		<dc:creator>ryankanno</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[dimensions]]></category>
		<category><![CDATA[footerStickAlt]]></category>
		<category><![CDATA[grids]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[yahoo!-ui]]></category>

		<guid isPermaLink="false">http://blog.localkinegrinds.com/2007/06/30/yahoo-ui-grids-footerstickalt-w-jquery-goodness/</guid>
		<description><![CDATA[My co-worker, Stephen, and I have implemented our layouts using the Yahoo! UI Grids library. One of the dilemmas we&#8217;ve been facing is the inability to use Cameron Adams&#8217; footerStickAlt CSS solution @ The Man In Blue. Basically, footerStickAlt is best described as sites that require the Web page footer to be positioned either at [...]]]></description>
			<content:encoded><![CDATA[<p>My co-worker, Stephen, and I have implemented our layouts using the <a href="http://developer.yahoo.com/yui/grids/">Yahoo! UI Grids </a>library.  One of the dilemmas we&#8217;ve been facing is the inability to use Cameron Adams&#8217; <a href="http://www.themaninblue.com/experiment/footerStickAlt/">footerStickAlt</a> CSS solution @ <a href="http://www.themaninblue.com/">The Man In Blue</a>.</p>
<p>Basically, footerStickAlt is best described as</p>
<blockquote><p>
sites that require the Web page footer to be positioned either at the bottom of the browser window or at the bottom of the Web page â€“ whichever is visually lowest.
</p></blockquote>
<p>Fast forward to the present, and using <a href="http://jquery.com/">JQuery</a>, <a href="http://jquery.com/plugins/project/dimensions">JQuery Dimensions plugin</a>, and a little nifty Javascript, we wrote up a solution at work for our Yahoo! layouts.  One thing to remember is that this solution won&#8217;t work in browsers with Javascript disabled, i.e. it degrades to whatever Yahoo! grid layout you&#8217;re using.</p>
<p>It&#8217;s been tested in <a href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx">IE</a> 5.5+ and <a href="http://www.mozilla.com/en-US/firefox/">Firefox</a> 2. (I think =P). </p>
<p>*<b>Note</b>*:  In this implementation, I don&#8217;t check for the margin on the &#8216;body&#8217; element since we&#8217;ve set all our margins and padding on <body> to 0.  See the demos for details.</p>
<h2 style="text-decoration:underline;">Requirements</h2>
<ol>
<li>Yahoo! UI Grids [<a href="http://developer.yahoo.com/yui/download/">download</a>]
<li>JQuery 1.1.2+ [<a href="http://code.jquery.com/jquery-latest.js">uncompressed</a>] [<a href="http://code.jquery.com/jquery-latest.pack.js">compressed</a>]</li>
<li>Dimensions plugin 1.0.0-b2 [<a href="http://jquery.com/plugins/files/dimensions-1.0b2.zip">zip</a>]</li>
<li>The Javascript below in a file of your choosing! Don&#8217;t forget to include it in your page!</li>
</ol>
<pre style="font-size:125%; background-color:#ffffee; border:1px solid #ccc; padding:1em;">
$(document).ready(function() {
     if ($(window).height() > $(document).height()) {
          $('#bd').css({
               height: $('#bd').height() +
                         ($(window).height() -
                          $(document).height()) + 'px'
          });
     }
});
</pre>
<p>Check out the demos here: <a href="http://www.localkinegrinds.com/demo/footerStickAlt/demo-short.html">page with short content</a>, <a href="http://www.localkinegrinds.com/demo/footerStickAlt/demo-long.html">page with long content</a>!</p>
<h3>Enjoy!</h3>
<img src="http://blog.localkinegrinds.com/?ak_action=api_record_view&id=109&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.localkinegrinds.com/2007/06/30/yahoo-ui-grids-footerstickalt-w-jquery-goodness/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CakePHP and IIS and ISAPI Rewrite &#8211; Demystified!</title>
		<link>http://blog.localkinegrinds.com/2006/07/28/cakephp-and-iis-solved/</link>
		<comments>http://blog.localkinegrinds.com/2006/07/28/cakephp-and-iis-solved/#comments</comments>
		<pubDate>Sat, 29 Jul 2006 00:46:42 +0000</pubDate>
		<dc:creator>ryankanno</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[pretty-urls]]></category>
		<category><![CDATA[rewrite]]></category>

		<guid isPermaLink="false">http://blog.localkinegrinds.com/2006/07/28/cakephp-and-iis-solved/</guid>
		<description><![CDATA[Update: 11/16/2007 One of my commenters, James has provided a working production solution versus my &#8220;hacked&#8221; solution. See the comments and be sure to visit his site. Thank you James! @ work, Stephen and I were tasked with fulfilling a requirement for the big boss, so we selected an up and coming Rails-like framework called [...]]]></description>
			<content:encoded><![CDATA[<h2>Update: 11/16/2007</h2>
<p>One of my commenters, <a href="http://james.revillini.com/">James</a> has provided a working production solution versus my &#8220;hacked&#8221; solution.  See the comments and be sure to visit his site. <img src='http://blog.localkinegrinds.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Thank you James!</p>
<hr/>
<p>@ work, <a href="http://del.icio.us/sfigart">Stephen</a> and I were tasked with fulfilling a requirement for the big boss, so we selected an up and coming <a href="http://www.rubyonrails.org/">Rails</a>-like framework called <a href="http://www.cakephp.org">CakePHP</a>.  Cake&#8217;s really fun and easy to use and like <a href="http://www.ubuntu.com/">Ubuntu</a>, &#8220;<em>everything just works</em>&#8220;&#8230; until you try hooking it up into <a href="http://en.wikipedia.org/wiki/IIS">IIS</a> with &#8216;pretty URLs&#8217;.  It took us a day of testing, hair pulling, more testing, more hair pulling, but finally &#8211; we&#8217;ve debunked the mystery.  </p>
<p>First, let me start off by saying that we read all the <a href="http://wiki.cakephp.org">wiki documentation</a>, searched <a href="http://groups.google.com/group/cake-php">google groups</a>, and though we found people doing similar things, we didn&#8217;t find any solution that satisifed our needs.  We found partial solutions with <a href="http://wiki.cakephp.org/tutorials:cake_under_iis ">poorly written wiki tutorials</a>, so that&#8217;s why you&#8217;re reading a brand-new one.  </p>
<h3><u>The setup</u></h3>
<p>Our setup consisted of the Cake framework (cake_1.1.6.3264.zip) running on <a href="http://en.wikipedia.org/wiki/Win2k">Win2K</a> w/ <a href="http://en.wikipedia.org/wiki/Internet_Information_Server">IIS5</a> and <a href="http://en.wikipedia.org/wiki/Php#PHP_5">PHP5</a> running as an <a href="http://en.wikipedia.org/wiki/ISAPI">ISAPI</a> Dll.  We created a virtual directory named &#8220;tp&#8221; that&#8217;s currently mapped to the app/webroot directory in our Cake installation directory.  From reading all the available tutorials, Cake&#8217;s functionality all boils down to passing index.php in the app/webroot directory the following:<br/><br/><br />
<code style="background-color:#fafbfc; border:1px solid #ccc; color: #000; padding:.75em;">?url=/controllerName/action/params</code><br/><br/></p>
<p>This, my friend, is how all the magic begins.  So, from the web, I should always be able to reach the following URL:<br/><br/><br />
<code style="background-color:#fafbfc; border:1px solid #ccc; color: #000; padding:.75em;">http://domain.com/tp/index.php?url=/controllerName/action/params</code><br/><br/></p>
<h3><u>The get-go</u></h3>
<p>Here are the following results from our tests:</p>
<h4><u>Test 1</u>: Do nothing</h4>
<p>Stephen and I both hypothesized that by doing nothing, we&#8217;d just manually echo out all linking URL&#8217;s, i.e. we wouldn&#8217;t use the $html->link helper function.  <strong><u>This works, period.</u></strong>  However, if we do nothing to the configuration, and we do employ the $html->link helper, $html->link(&#8221;/controllerName/action&#8221;) writes out the following URL:<br/><br/><br />
<code style="background-color:#fafbfc; border:1px solid #ccc; color: #000; padding:.75em;">http://domain.com/controllerName/action</code><br/><br/></p>
<p>First off, since we have a virtual directory named &#8220;tp&#8221;, this obviously won&#8217;t work.  Second, if I define (&#8216;WEBROOT_DIR&#8217;, &#8216;tp&#8217;) within app/webroot/index.php and then use $html->link(&#8216;/controllerName/action&#8217;), I get the following URL instead:<br/><br/><br />
<code style="background-color:#fafbfc; border:1px solid #ccc; color: #000; padding:.75em;">http://domain.com/tp/controllerName/action</code><br/><br/></p>
<p>Closer, but this still doesn&#8217;t work because ISAPI Rewrite isn&#8217;t enabled.  So&#8230; that leaves us wondering, how do we use $html->link without modifying the configuration?  In any case, we revert the variable WEBROOT_DIR back to its original setting for our next test.</p>
<h4><u>Test 2</u>: Enable Cake Short URLs</h4>
<p>With Cake Short URLs enabled, a user will be able to access particular actions via the following URL:<br/><br/><br />
<code style="background-color:#fafbfc; border:1px solid #ccc; color: #000; padding:.75em;">http://domain.com/tp/index.php/controllerName/action</code><br/><br/></p>
<p>To enable the short URLs, I followed the <a href="ki.cakephp.org/tutorials:cake_under_iis_without_rewrite ">wiki tutorial</a>.  Basically, this involves uncommenting the BASE_URL environment variable and defining (&#8216;SERVER_IIS&#8217;, true) in core.php in the app/config directory.  Now, when I use the $html->link helper, these configurations enabled inserting /tp/index.php/ into the url and everything works!  For example,    $html->link(&#8216;/controllerName/action&#8217;) now prints the following:<br/><br/><br />
<code style="background-color:#fafbfc; border:1px solid #ccc; color: #000; padding:.75em;">http://domain.com/tp/index.php/controllerName/action</code><br/><br/><br />
(<em>And it works too!</em>)</p>
<p>This solves the problem but still doesn&#8217;t give us the ideal solution.  After all, who wants that index.php within the URL?  Not to mention, enabling this configuration setting made it impossible to access the following (original) URL:<br/><br/><br />
<code style="background-color:#fafbfc; border:1px solid #ccc; color: #000;  padding:.75em;">http://domain.com/tp/index.php?url=/controllerName/action/params</code><br/><br/></p>
<p>Is this the expected behavior?  As a side note, I can now access URLS as such:<br/><br/><br />
<code style="background-color:#fafbfc; border:1px solid #ccc; color: #000;  padding:.75em;">http://domain.com/tp/index.php?/controllerName/action/params</code><br/><br/></p>
<p>Notice the &#8216;?&#8217; without the &#8216;url=&#8217;.  Is this expected behavior as well?  In any case, on to enable <a href="http://www.isapirewrite.com/">ISAPI Rewrite</a>.</p>
<h4><u>Test 3</u>: Enable ISAPI Rewrite</h4>
<p>To enable <a href="http://www.isapirewrite.com/">ISAPI Rewrite</a>, we know we had to disable Cake Short URLs by disabling the BASE_URL variable, but at the same time, we decided to leave the IIS_SERVER variable to true.  Next, we decided to follow <a href="http://wiki.cakephp.org/tutorials:cake_under_iis ">this tutorial</a> on the <a href="http://wiki.cakephp.org">Cake wiki</a>.  No offense to the author, but this entry is incomplete and leaves no explanation as to how the author came to those Rewrite rules.  Also, the tutorial doesn&#8217;t explain how to enable the pretty URLs for a site running in a virtual directory.  </p>
<p>So, we downloaded the ISAPI Rewrite Dll from <a href="http://www.isapirewrite.com/ ">http://www.isapirewrite.com/</a>.  Note, download the free version, but realize that there are limitations on what it can do.  Enable the ISAPI Dll @ the Site level since you need the full version for granularity at the virtual directory level.  The httpd.ini file that&#8217;s listed in the <a href="http://wiki.cakephp.org">wiki</a> only works if you&#8217;re running Cake from the IIS Site level and not from a virtual directory.</p>
<h3><u>Our configuration</u></h3>
<p>Here&#8217;s what we did to enable the ISAPI Rewrite from a virtual directory.  Our httpd.ini file looks like the following:</p>
<pre style="font-size:125%; background-color:#ffffee; border:1px solid #ccc; padding:1em;">
[ISAPI_Rewrite] 

// This rule catches the Short URL settings
RewriteRule (.*?\\.php)(\\?[^/]*)?/([^/]*)/(.*) $1(?2$2&#038;:\\?url=/$3/$4) 

//This rule performs the ISAPI Rewrite rules
RewriteRule ^/VIRTUAL_DIRECTORY_NAME_HERE/(.*)/ /VIRTUAL_DIRECTORY_NAME_HERE/index.php?url=/$1
</pre>
<p>Note, replace <strong>virtual_directory_name_here</strong> with the name of your virtual directory.  As you can see, RewriteRule ^/VIRTUAL_DIRECTORY_NAME_HERE/(.*)/ /VIRTUAL_DIRECTORY_NAME_HERE/index.php?url=/$1 is taking the following URL:</p>
<p>/virtual_directory/controllerName/action/ and rewriting it to /virtual_directory/index.php?url=/controllerName/action.  </p>
<p><span style="font-weight:bold;font-size:110%;">This is exactly how we want it!</span></p>
<p>Wait, as you can see though, the RewriteRule matches URLs that have a slash at the end.  We figured that the original wiki poster left the slash so that this rule wouldn&#8217;t match any of the files being served out of app/webroot such as the css/img files.</p>
<p><em>Wait&#8230; what implications does this have?</em></p>
<p>Well, this just means that when you use the $html->link helper, you&#8217;ll need to end all your actions with a &#8220;/&#8221;.  For example,  if you want to link to /controllerName/action, you must now type $html->link(&#8221;/controllerName/action/&#8221;).  Now, this will match the second RewriteRule and everything will work!</p>
<p>However, there&#8217;s just one tiny piece we&#8217;re forgetting.  If you did try this out on your site, you&#8217;ll find that the URLs generated from $html->link still don&#8217;t have the virtual directory name in it.  You&#8217;ll see that the links generated will be http://www.domain.com/controllerName/action/.  Well, from our experience in past tests, this means you have to define(&#8216;WEBROOT_DIR&#8217;, &#8216;virtual_directory_name&#8217;) in the app/webroot/index.php file and voila&#8230;</p>
<h3>Everything now works!</h3>
<img src="http://blog.localkinegrinds.com/?ak_action=api_record_view&id=14&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://blog.localkinegrinds.com/2006/07/28/cakephp-and-iis-solved/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
