AdamStout.com 2013-10-20T10:44:09-07:00-07:00 AdamStout.com Adam Stout http://adamstout.com/ adam@adamstout.com Stout Enterprises 159 1 25 1382291049 2013-10-20T10:44:09-07:00-07:00 2013-10-30T16:19:48-07:00-07:00 Why Google Hangouts are Better than Skype My family has used <a href="http://www.skype.com/en/">Skype </a>for several years now. &nbsp;Making free video calls across the US and around the world has helped us stay a part of each other's lives even though we live different time zones. &nbsp;It even allowed my Grandfather to stay in contact with his brother even though they lived on different continents. &nbsp;It is amazing technology, but at this point, I'm ready to drop it completely.<br><br>The one thing it had going for it over <a href="http://www.google.com/hangouts/">Google Hangouts</a> was that it ran in the background and you didn't have to be on the site to use it. &nbsp;Now with the Hangout client <a href="http://adamstout.com/entry/2013/10/setting-up-google-hangout-client.html">I talked about a few days ago</a> (which is really just Chrome running in the background), that is no longer a difference.<br><br>Now that Skype and Hangouts can compete on features, the balanced has shifted way over to the Hangout side. &nbsp;This one picture says a lot for me:<br><br><div style="text-align: center;"><img src="https://www.evernote.com/shard/s314/sh/e66273ea-ebab-4dca-b51d-4721513f2441/75266a6debc0dc7ed005d865fe25b2be" class="selected " alt="" style="line-height: 1.22; width: 538px;"><br><div style="text-align: left;">Here we have my son and I video conferencing with his Grandmother (located a few cities away), his Great-Grandfather (2,000) miles away, and his Aunt (in the room next to his&nbsp;<span style="line-height: 1.22;">Great-Grandfather). &nbsp;Skype can do this, but you have to pay for it. &nbsp;In Hangouts it is built in.</span><br><br><span style="line-height: 1.22;">Add to that, the ability to take pictures during a Hangout (like where this came from) and my son loves to play with the hats and other things you can digital add to people and you get a great family oriented video conferencing system.</span><br><br><span style="line-height: 1.22;">There is also the&nbsp;</span>ability<span style="line-height: 1.22;">&nbsp;to use remote desktop in a Hangout which is a great feature since you don't have to deal with firewalls or other issues that have caused me problems with the past when connecting to help people, but that is the subject for another day.&nbsp;</span> Adam Stout http://adamstout.com/ adam@adamstout.com 0 1381979542 2013-10-16T20:12:22-07:00-07:00 2013-10-16T20:12:22-07:00-07:00 Setting up Gmail to go through your SMTP server Adam Stout http://adamstout.com/ adam@adamstout.com 0 1381888135 2013-10-15T18:48:55-07:00-07:00 2013-10-16T20:14:49-07:00-07:00 Setting up Google Hangout Client Adam Stout http://adamstout.com/ adam@adamstout.com 0 1381808189 2013-10-14T20:36:29-07:00-07:00 2013-10-14T20:36:29-07:00-07:00 It's been a while I'll give you it has been a while since I posted anything here. &nbsp;Well, I finally fixed the spam problem with the comments and integrated with Google+, Facebook, and LinkedIn so I'll try to post some more on here. &nbsp;Be sure to login and leave your thoughts as well. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1279398151 2010-07-17T08:22:31-07:00-07:00 2010-07-17T08:29:29-07:00-07:00 Exporting SVN Change Log in Phing Last night I was working on add a <a href="http://www.phpdoc.org/">phpDocumentor</a> task to a <a href="http://phing.info">Phing</a> build script I have been working on.&nbsp; While Phing offers integration with phpDocumentor as well as some SVN task such as commuting, updating, and exporting, it doesn't have a native way to export the change log which I would like to include in the documentation.&nbsp; However, one great feature of Phing is how easy it is to expand.&nbsp; I wrote this little ad-hoc task to export the SVN history to a file which I then include in the documentation.<br><br>Here is the code if you'd like to add it to your build scripts: <br><br> <div class="code"><code><span style="color: #000000"> <span style="color: #0000BB"></span><span style="color: #007700">&lt;</span><span style="color: #0000BB">adhoc</span><span style="color: #007700">-</span><span style="color: #0000BB">task&nbsp;name</span><span style="color: #007700">=</span><span style="color: #DD0000">"svnlog"</span><span style="color: #007700">&gt; <br />&lt;!--[</span><span style="color: #0000BB">CDATA</span><span style="color: #007700">[ <br />class&nbsp;</span><span style="color: #0000BB">svnLog&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">Task&nbsp;</span><span style="color: #007700">{&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="color: #0000BB">$file</span><span style="color: #007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="color: #0000BB">$svnpath</span><span style="color: #007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="color: #0000BB">$repositoryurl</span><span style="color: #007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">setFile</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">)&nbsp;{&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">file&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$file</span><span style="color: #007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">setSvnPath</span><span style="color: #007700">(</span><span style="color: #0000BB">$svnpath</span><span style="color: #007700">)&nbsp;{&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">svnpath&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$svnpath</span><span style="color: #007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">setRepositoryUrl</span><span style="color: #007700">(</span><span style="color: #0000BB">$repositoryurl</span><span style="color: #007700">)&nbsp;{&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">repositoryurl&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$repositoryurl</span><span style="color: #007700">;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">writeSvnLog</span><span style="color: #007700">(</span><span style="color: #0000BB">$svnpath</span><span style="color: #007700">=</span><span style="color: #DD0000">"/usr/bin/svn"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$repositoryurl</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$file</span><span style="color: #007700">){ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$cmd&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$svnpath&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"&nbsp;log&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$repositoryurl&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"&nbsp;&gt;&nbsp;"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$file</span><span style="color: #007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">$cmd&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">system</span><span style="color: #007700">(</span><span style="color: #0000BB">$cmd</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">; <br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;</span><span style="color: #0000BB">main</span><span style="color: #007700">()&nbsp;{&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">writeSvnLog</span><span style="color: #007700">(</span><span style="color: #0000BB">$svnpath&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">svnpath</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$repositoryurl&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">repositoryurl</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$file&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">file</span><span style="color: #007700">); <br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp; <br />} <br />]]--&gt; <br />&lt;/</span><span style="color: #0000BB">adhoc</span><span style="color: #007700">-</span><span style="color: #0000BB">task</span><span style="color: #007700">&gt;</span> </span> </code><br /></div> <br> Here is how you call it: <div class="code"><code><span style="color: #000000"> <span style="color: #0000BB"></span><span style="color: #007700">&lt;</span><span style="color: #0000BB">svnlog&nbsp;svnpath</span><span style="color: #007700">=</span><span style="color: #DD0000">"/usr/bin/svn"&nbsp;</span><span style="color: #0000BB">repositoryurl</span><span style="color: #007700">=</span><span style="color: #DD0000">"http://rex/svn/</span><span style="color: #007700">${</span><span style="color: #0000BB">package</span><span style="color: #007700">}</span><span style="color: #DD0000">/"&nbsp;</span><span style="color: #0000BB">file</span><span style="color: #007700">=</span><span style="color: #DD0000">"</span><span style="color: #007700">${</span><span style="color: #0000BB">workingDir</span><span style="color: #007700">}</span><span style="color: #DD0000">/CHANGELOG"</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">svnlog</span><span style="color: #007700">&gt;</span> </span> </code><br /></div> Adam Stout http://adamstout.com/ adam@adamstout.com 0 1278979798 2010-07-12T12:09:58-07:00-07:00 2010-07-12T12:11:29-07:00-07:00 Do you Care? I was flipping through some news the other day and read a story about how a BestBuy employee was expecting to be fired after releasing a video which in didn't mention BestBuy, didn't he was an employee of BestBuy, and didn't even mention his name.&nbsp; For this, I figured I should at least watch the video since he gave up his job for it.<br><br>This classic tale tells the story of an typical Apple customer asking for an iPhone and can't tell you why or listen to any evidence that the iPhone isn't the greatest thing ever.&nbsp; Well worth the three minutes to watch it.<br> <object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/FL7yD-0pqZg&hl=en_US&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/FL7yD-0pqZg&hl=en_US&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></object> <br>On a related note, if you don't watch <a href="http://www.imdb.com/title/tt0149460/">Futurama</a>, you should.&nbsp; The last episode, "<a href="http://www.imdb.com/title/tt1630892/">Attack of the Killer App</a>" was awesome.&nbsp; They really got the essence of the nonsensical hype that is apple.<br><br>This isn't the best part, but I love the observations that since it is Twitter and not Tweeter, a message isn't a tweet, it is a twit, right?<br><br> <table style="font: 11px arial; color: #333333; background-color: #f5f5f5;" cellpadding="0" cellspacing="0" width="360" height="353"><tbody><tr style="background-color: #e5e5e5;" valign="middle"><td style="padding: 2px 1px 0px 5px;"><a target="_blank" style="color: #333333; text-decoration: none; font-weight: bold;" href="http://www.comedycentral.com/shows/futurama/index.jhtml">Futurama</a></td><td style="padding: 2px 5px 0px; text-align: right; font-weight: bold;">Thursdays 10pm / 9c</td></tr><tr style="height: 14px;" valign="middle"><td style="padding: 2px 1px 0px 5px;" colspan="2"><a target="_blank" style="color: #333333; text-decoration: none; font-weight: bold;" href="http://www.comedycentral.com/videos/index.jhtml?videoId=340940&title=the-twit-worm">The Twit Worm</a></td></tr><tr style="height: 14px; background-color: #353535;" valign="middle"><td colspan="2" style="padding: 2px 5px 0px; width: 360px; overflow: hidden; text-align: right;"><a target="_blank" style="color: #96deff; text-decoration: none; font-weight: bold;" href="http://www.comedycentral.com/">www.comedycentral.com</a></td></tr><tr valign="middle"><td style="padding: 0px;" colspan="2"><embed style="display: block;" src="http://media.mtvnservices.com/mgid:cms:item:comedycentral.com:340940" type="application/x-shockwave-flash" wmode="window" allowfullscreen="true" flashvars="autoPlay=false" allowscriptaccess="always" allownetworking="all" bgcolor="#000000" width="360" height="301"></td></tr><tr style="height: 18px;" valign="middle"><td style="padding: 0px;" colspan="2"><table style="margin: 0px; text-align: center;" cellpadding="0" cellspacing="0" width="100%" height="100%"><tbody><tr valign="middle"><td style="padding: 3px; width: 33%;"><a target="_blank" style="font: 10px arial; color: #333333; text-decoration: none;" href="http://www.comedycentral.com/shows/futurama/index.jhtml">Futurama New Episodes</a></td><td style="padding: 3px; width: 33%;"><a target="_blank" style="font: 10px arial; color: #333333; text-decoration: none;" href="http://www.comedycentral.com/shows/futurama/index.jhtml">Futurama New Episodes</a></td><td style="padding: 3px; width: 33%;"><a target="_blank" style="font: 10px arial; color: #333333; text-decoration: none;" href="http://www.comedycentral.com/shows/sunny/index.jhtml">It's Always Sunny in Philadelphia</a></td></tr></tbody></table></td></tr></tbody></table> Adam Stout http://adamstout.com/ adam@adamstout.com 0 1278441961 2010-07-06T06:46:01-07:00-07:00 2010-07-06T06:55:01-07:00-07:00 Deploying PHP with PHING A couple of months ago I came across <a href="http://phing.info/trac/">PHING</a>, a deployment system for PHP.&nbsp; It seems pretty straight forward to use and really tuned for PHP.&nbsp; It has tons of extensions to use all the tools a PHP developer would want.&nbsp; I finally have something that will run on Windows or Linux and will mange deployments on my local box, a prototype server, or my productions servers and all I have to do is put together a little XML config file.<br><br>I alike that it is so easily customizable as well.&nbsp; For instance, my production server runs PHP in cgi mode so I can't change PHP settings in the .htaccess fiel so I have to have a php.ini file in every directory that has PHP to change these settings (on a side note, I'm looking forword to getting php5.3 installed which introduces the .user.ini setting which works like a .htaccess just for PHP).&nbsp; I really didn't want to maintain serveral copies of the same php.ini file so I wrote a little adhoc-task which expands PHING to copy a single file to every directory in the tree.&nbsp; A couple of lines of PHP in my PHING build.xml and I'm up and running.<br><br> <div class="code"><code><span style="color: #000000"> <span style="color: #0000BB">   &nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">adhoc</span><span style="color: #007700">-</span><span style="color: #0000BB">task&nbsp;name</span><span style="color: #007700">=</span><span style="color: #DD0000">"copyrecurse"</span><span style="color: #007700">&gt; <br /></span><span style="color: #0000BB">   &nbsp;</span><span style="color: #007700">&lt;![</span><span style="color: #0000BB">CDATA</span><span style="color: #007700">[ <br /></span><span style="color: #0000BB">   &nbsp;</span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">copyRecurse&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">Task&nbsp;</span><span style="color: #007700">{&nbsp; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$file</span><span style="color: #007700">; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$todir</span><span style="color: #007700">; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$file_name</span><span style="color: #007700">; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp; <br />   &nbsp;   &nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">setFile</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">)&nbsp;{&nbsp; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">file&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$file</span><span style="color: #007700">;&nbsp; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;</span><span style="color: #007700">} <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp; <br />   &nbsp;   &nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">setToDir</span><span style="color: #007700">(</span><span style="color: #0000BB">$todir</span><span style="color: #007700">)&nbsp;{ <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">todir&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$todir</span><span style="color: #007700">;&nbsp; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;</span><span style="color: #007700">} <br /></span><span style="color: #0000BB">   &nbsp;    <br />   &nbsp;   &nbsp;</span><span style="color: #007700">private&nbsp;function&nbsp;</span><span style="color: #0000BB">getDirectoryTree</span><span style="color: #007700">(</span><span style="color: #0000BB">$BASE_DIR</span><span style="color: #007700">,</span><span style="color: #0000BB">$LEVEL</span><span style="color: #007700">=</span><span style="color: #0000BB">1</span><span style="color: #007700">){ <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;$THIS_DIR&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">array_diff</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">scandir</span><span style="color: #007700">(</span><span style="color: #0000BB">$BASE_DIR</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">array_merge</span><span style="color: #007700">(array(&nbsp;</span><span style="color: #DD0000">"."</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">".."</span><span style="color: #007700">,</span><span style="color: #DD0000">".svn"</span><span style="color: #007700">))&nbsp;); <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;</span><span style="color: #007700">foreach(&nbsp;</span><span style="color: #0000BB">$THIS_DIR&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$DIR&nbsp;</span><span style="color: #007700">)&nbsp;{ <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;   &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">is_dir</span><span style="color: #007700">(</span><span style="color: #0000BB">$BASE_DIR</span><span style="color: #007700">.</span><span style="color: #DD0000">"/"</span><span style="color: #007700">.</span><span style="color: #0000BB">$DIR</span><span style="color: #007700">)){ <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp;copy</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">file</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$BASE_DIR</span><span style="color: #007700">.</span><span style="color: #DD0000">"/"</span><span style="color: #007700">.</span><span style="color: #0000BB">$DIR&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"/"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">file_name</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp;$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getDirectoryTree</span><span style="color: #007700">(</span><span style="color: #0000BB">$BASE_DIR</span><span style="color: #007700">.</span><span style="color: #DD0000">"/"</span><span style="color: #007700">.</span><span style="color: #0000BB">$DIR</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;   &nbsp;</span><span style="color: #007700">} <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;</span><span style="color: #007700">} <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;</span><span style="color: #007700">}&nbsp; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">br</span><span style="color: #007700">&gt;</span><span style="color: #0000BB">   &nbsp;   &nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">main</span><span style="color: #007700">()&nbsp;{&nbsp; <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">file_name&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">basename</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">file</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;   &nbsp;$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getDirectoryTree</span><span style="color: #007700">(</span><span style="color: #0000BB">$BASE_DIR&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">todir</span><span style="color: #007700">); <br /></span><span style="color: #0000BB">   &nbsp;   &nbsp;</span><span style="color: #007700">}&nbsp; <br /></span><span style="color: #0000BB">   &nbsp;</span><span style="color: #007700">} <br /></span><span style="color: #0000BB">   &nbsp;</span><span style="color: #007700">]]&gt; <br /></span><span style="color: #0000BB">   &nbsp;</span><span style="color: #007700">&lt;/</span><span style="color: #0000BB">adhoc</span><span style="color: #007700">-</span><span style="color: #0000BB">task</span><span style="color: #007700">&gt; <br /></span><span style="color: #0000BB">   &nbsp;</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">copyrecurse&nbsp;file</span><span style="color: #007700">=</span><span style="color: #DD0000">"</span><span style="color: #007700">${</span><span style="color: #0000BB">workingDir</span><span style="color: #007700">}</span><span style="color: #DD0000">php.ini"&nbsp;</span><span style="color: #0000BB">todir</span><span style="color: #007700">=</span><span style="color: #DD0000">"</span><span style="color: #007700">${</span><span style="color: #0000BB">workingDir</span><span style="color: #007700">}</span><span style="color: #DD0000">"&nbsp;</span><span style="color: #007700">/&gt;</span> </span> </code><br /></div> <br><br>I'm looking forward to using PHING in the future and integrating some of the tools it gives me access to.&nbsp; Hopefully more of us will start using it to help ensure it is maintained going forward. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1278441110 2010-06-27T17:00:00-07:00-07:00 2010-07-06T06:31:50-07:00-07:00 I Love it When a Movie Comes Together <img alt="" src="http://lh6.ggpht.com/_d44GyKsQt2w/TDNzhKA6TwI/AAAAAAAAJfU/4VDkadV9xik/the_a_team.jpg" align="right">If I ever doubted how much my wife loves (which I don't after she moved to Pittsburgh with me), it is gone.&nbsp; Last night she had the idea that we go see the <a href="http://www.imdb.com/title/tt0429493/">A-Team</a>.&nbsp; Not because she wanted to see it (I actually believe the opposite to be true) but because she knew I would like it.&nbsp; After watching <a href="http://www.adamstout.com/entry/2009/10/go-joe-just-not-to-the-movie.html">G.I. Joe</a> last fall, I was a little scared about seeing a movie based on a show from my childhood.&nbsp; <br><br>I came in with very low expectations, and with that said, it was a really good movie.&nbsp; Not the best movie ever made but a good couple of hours.&nbsp; I wasn't optimistic about seeing <a href="http://www.imdb.com/name/nm0000553/">Liam Neeson</a> as Hannibal, but he did ok.&nbsp; I was however really impressed with the casting for Face and Murdoch.&nbsp; <a href="http://www.imdb.com/name/nm0177896/">Bradley Cooper</a> did a great job of playing Face bringing a great conman-esqe presense to teh character.&nbsp; The part I like the most was Murdoch played by <a href="http://www.imdb.com/name/nm1663205/">Sharlto Copely</a>.&nbsp; I didn't recognize Copely at first, but then it came back to me when I saw he was in <a href="http://adamstout.com/entry/2009/09/district-9-is-better-than-i-thought.html">District 9</a>.&nbsp; I don't really know his back story about how he got into acting as IMDB only lists him in a 2005 movie I have never head of and then District 9 and the A-Team.&nbsp; I'm looking forward to seeing his next project (and hopefully in an A-Team sequel.<br><br>If you liked the TV show, I recommend seeing the movie either in the theater or at least on DVD.&nbsp; If you haven't see the TV show, it may not be the same as someone how knows the characters.&nbsp; Lucky for you, all six seasons are streaming on Netflix (I'm rewatching them now). Adam Stout http://adamstout.com/ adam@adamstout.com 0 1276821522 2010-06-12T16:30:00-07:00-07:00 2010-06-17T12:38:42-07:00-07:00 Making Other People Look Funny for 20 Years <img alt="" src="http://lh3.ggpht.com/_d44GyKsQt2w/TBq3ibAbuEI/AAAAAAAAJdE/ecTrzPYWHVg/rob-schneider.jpg" align="left">Tonight Jenny and went to go see <a href="http://www.imdb.com/name/nm0001705/">Rob Schneider</a> at the <a href="http://www.dcimprov.com/">D.C. Improv</a>.&nbsp; So far everyone I told about we were going seemed rather unimpressed.&nbsp; The comment I liked the most was that Rob Schneider was only good at making other people look funny.&nbsp; While true he is good at that, he was great live.&nbsp; He did a long set which was nice since he was who I was paying to see.&nbsp; It took him a few minutes to warm up, but once he got going, he was really funny.&nbsp; Totally worth the $25 for the ticket.<br><br>Beyond the comedy, the thing I remember is that he was really doing what people wanted.&nbsp; Unlike some other comedians, he got up on stage and gave us the "You Can Doooo It" voice a few times along with several other of his more famous lines.&nbsp; He has gt to be sick of those, but he gave us what we wanted.&nbsp; He also told a great story about "You Can Do It" which you'll have to see him to hear, but in any case, he does a great <a href="http://www.imdb.com/name/nm0001191/">Adam Sandler</a> impression.<br><br>Another expected bonus was that after the show, he came out to the front of the house and signed autographs.&nbsp;&nbsp; Although he was selling shirts that he would sign, I believe he was signing other things and talking to people for no charge.&nbsp; For a guy who has been a celebrity for so long, it is nice to see that he remember who pays him.&nbsp; BTW, he is really short. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1272827878 2010-04-17T17:00:00-07:00-07:00 2010-05-02T12:25:56-07:00-07:00 iPad Printing <img alt="iPad Printer" title="iPad Printer" src="http://lh5.ggpht.com/_d44GyKsQt2w/S93O4jA1WGI/AAAAAAAAJcI/O-99yKjXIPQ/iPad-printing-e1271524644377.jpg" align="right"><br>In case you got home with your new iPad and then realized that you can't really do much with it, there is some hope.&nbsp; Although Apple doesn't think you need to be able to print anything anymore (they are very forward thinking remember), HP has created a new all in one printer/scanner/copier that is compatible with the iPad.&nbsp; While not officially supported by Apple, it is your best option for printing from your iPad.<br><br><br>Enjoy your iPad!!! Adam Stout http://adamstout.com/ adam@adamstout.com 0 1272826246 2010-04-15T17:00:00-07:00-07:00 2010-05-02T12:25:21-07:00-07:00 The Entire Web (Except the Stuff Apple Can't Charge You For) Adam Stout http://adamstout.com/ adam@adamstout.com 0 1272846269 2010-04-14T17:00:00-07:00-07:00 2010-05-02T12:24:29-07:00-07:00 Kick Ass Does <img alt="Kick Ass" title="Kick Ass" src="http://lh3.ggpht.com/_d44GyKsQt2w/S94U-6QZIlI/AAAAAAAAJco/XsY24pHDUuk/s400/kick_ass_poster.jpg" align="right">Last night I wanted to go see a light hearted comedy, something I didn't have to think about for some quick laughs.&nbsp; It seemed a little childish, but we choose <a href="http://www.imdb.com/title/tt1250777/">Kick Ass</a>... Kid Super Heroes???&nbsp; How silly could it get?<br><br>In this case, I was wrong about the movie, it was a rather dark comedy about kid super heroes, definitely not the light hearted 90 minutes I expected.&nbsp; While the premise is a bit odd, awkwardness displayed by <a href="http://www.imdb.com/name/nm1093951/">Aaron Johnson</a> was perfect for the part.&nbsp; I thought <a href="http://www.imdb.com/name/nm0000115/">Nick Cage</a>'s Big Daddy was good although I thought it could have done without the Batman reference.&nbsp; It was funny, but a little unneeded as the rest of the characters seemed very unique (although I can't claim to be a huge comic book buff).<br><br>If you miss this in the theater, I recommend adding it to your Netflix queue.&nbsp; This is a nice dark comedy set on a rather odd premise. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1270954543 2010-04-10T14:55:43-07:00-07:00 2010-04-10T14:55:43-07:00-07:00 How to Setup Remote Backups for Free Last fall I purchased a network storage device (NAS) to store all of my music and pictures in my house.&nbsp; This allows for Jenny and I not to duplicate what we have on our computers and instead share everything.&nbsp; This is also a great place to run our backups to.&nbsp; The NAS is running RAID 1 so my data will be safe even if one of the drives fails.&nbsp; Hard drives will fail so you need to plan accordingly.&nbsp; Anyone who writes their data to only a single drive (especially an external drive that they move around) is just asking for trouble.<br><br>Once I got this online and moved my data and my backups to the new NAS, I felt much better knowing my data was secure.&nbsp; However, I realized that a fire or flood would destroy both drives as well as my computers so I still wasn't really safe.&nbsp; One feature that I'm glad I had on my NAS was a built in FTP server.&nbsp; Actually, me having it is nice, but my brother's NAS having FTP is what is really great.&nbsp; With a built in FTP server, I'm able to FTP my really important files to his NAS in California and he is able to do the same to D.C.&nbsp; It is really pretty cool that we are able to do this without any real cost.&nbsp; Now even if one of us has a fire and we lose everything, we will still have some important files (like insurance documents or scans of important paperwork).&nbsp; Now except for Clan Warfare, I'm pretty ok.<br><br><img alt="" src="http://lh4.ggpht.com/_d44GyKsQt2w/S8E2ny-XPRI/AAAAAAAAJcA/xys3Pg-XI5o/cobian.png" align="left">One really important component of my remote backup plan is the use of <a href="http://www.educ.umu.se/%7Ecobian/cobianbackup.htm">Cobian Backup</a>.&nbsp; I first found out about Cobian while at school at <a href="http://www.cmu.edu">Carnegie Mellon</a>.&nbsp; I figure if it is used there, it must be decent.&nbsp; It is a great freeware backup program (no longer open source, but Cobian seem to be well supported none-the-less).&nbsp; In Cobian, I setup a job to backup everything on my computer to the NAS each night as an incremental backup with a full backup once a week (and since I have the space, I keep a few full backups).&nbsp; I then setup another job to do a full backup once a week with differential updates each night that is zipped up, encrypted, and FTPed to my brother's NAS.&nbsp; It seems to work pretty well and it was surprisingly easy to setup.&nbsp; So easy in fact, my brother and I are setting up our parents' and grandparents' computers to do that backups as well.<br><br>Now if you don't have someone you can trust with your backups, you can always use a service like <a href="http://mozy.com/">Mozy</a> or <a href="http://www.carbonite.com">Carbonite</a> that allow you to backup to the cloud.&nbsp; This seems like a good option as well, but at around $60 a year, it is cheaper to just backup to back up to a friend's NAS that is already paid for.&nbsp; If I had a lot to backup, the unlimted space that is offered by these companies does seem to be reasonable priced.<br><br>Another alternative that a friend of mine mentioned was using a <a href="http://www.engadget.com/2005/03/01/how-to-use-your-gmail-account-as-a-personal-file-server/">GMail Virtual Drive</a> to backup to.&nbsp; If you created a new GMail account just for your backups, this would give you 8GB of free storage.&nbsp; The down side to this is that this may not be compliant to the terms of service of GMail, but since they haven't stopped this ustility from working in the past five years, you should be ok.&nbsp; If they do turn it off, you should still have access to the files, you just wouldn't be able to write any new backups to GMail.<br><br>To the point, spend the $0 and get <a href="http://www.educ.umu.se/%7Ecobian/cobianbackup.htm">Cobian</a> (or something like it), and do a remote backup somewhere either to Google or to a friend NAS that isn't in your house.&nbsp; If you run a business, this is even more important. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1270950644 2010-04-04T15:30:00-07:00-07:00 2010-04-10T13:50:44-07:00-07:00 Alice In 3D <img alt="" src="http://lh6.ggpht.com/_d44GyKsQt2w/S8EnwRKHbaI/AAAAAAAAJb4/YFcX05Xo4sw/alice_in_wonderland.jpg" align="right">While I miss the dollar theater I used to go to back in Texas, Jenny convinced me to go to the movies today.&nbsp; There wasn't much playing but the one thing that I wanted to see was <a href="http://www.imdb.com/title/tt1014759/">Alice in Wonderland</a>. I like <a href="http://www.imdb.com/name/nm0000318/">Tim Burton'</a>s movies in general so I thought it would be worth it to spring for the 3D tickets.&nbsp; That was of course before I realized that two 3D tickets would cost me $28.&nbsp; Since I'm still used to the $1 per ticket price, there was a bit of sticker shock.&nbsp; But I digress, as for the movie, it was pretty good.&nbsp; I liked the idea that this isn't a remake, it instead is a sequel to the previous movies based on the book.&nbsp; That being the premise, Burton was able to pull off a different story line with the same characters compared to what has been done before.<br><br>Visually, the movie was pretty impressive.&nbsp; Perhaps not as breathtaking as <a href="http://www.adamstout.com/entry/2010/01/avatar-is-no-matrix-but-still-a-must-see.html">Avatar</a>, but very good none the less.&nbsp; One thing that I could have done without though is the 3D.&nbsp; In Avatar, I found some scenes very difficult to watch and although that occurred less with Alice, there were still some times where I found myself closing one eye to make it easier to see.&nbsp; I think I'm done paying the extra for something that is just distracting.&nbsp; The scene I remember being most impressive in 3D in both Avatar and Alice are the credits.&nbsp; They looked really cool in 3D but I don't see the need to pay $3 or $4 just to see them.&nbsp; I'll try 3D again in a couple of more years when they can improve the technology a bit more. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1270949360 2010-03-18T11:30:00-07:00-07:00 2010-04-10T13:29:20-07:00-07:00 What Can't You Get at Costco? <img alt="" src="http://lh4.ggpht.com/_d44GyKsQt2w/S8Ej0LtesUI/AAAAAAAAJb0/0SknvWeldUE/idiocracy_costco.jpg" align="left">Apparently while I was at work today, Jenny got a call at home from Costco.&nbsp; They were conducting a survey to see whether or not we would be interested in buying health insurance from them.&nbsp; While I do like Costco and I think they sell many quality products, I'm not sure I want to buy my health insurance and toilet paper from the same place.&nbsp; I can't help but think about Mike Judge film, <a href="http://www.imdb.com/title/tt0387808/">Idiocracy</a>.&nbsp; In the movie (seen on the left), Costco sells everything.&nbsp; The main character's lawyer even got his law degree there.<br><br>Regardless, it is Costco, and I trust them so once they start offering insurance in Virginia, I'm sure I'll at least get a quote from them.<br><br>Welcome to Costco... I love you. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1266802660 2010-02-21T11:37:40-08:00-08:00 2010-02-21T11:37:40-08:00-08:00 Outlook's Social Connector Now Available for Older Versions of Outlook A couple of months ago I downloaded the public beta of Office 2010.&nbsp; Overall it seemed fine although it was difficult to see what was really changed.&nbsp; Most of the apps looked essentially the same as in Office 2007 except I did notice that Groove was renamed to SharePoint Workspace.&nbsp; It seems to work the same (with some small enhancements) but overall, it looks the same to me.&nbsp; <br><br><img style="width: 500px; height: 432px;" alt="" src="http://lh6.ggpht.com/_d44GyKsQt2w/S4Hdd65lLcI/AAAAAAAAJa0/C59MZ6FNO1U/SocialConnector.png" align="right">The one exception to this was Outlook 2010.&nbsp; It didn't sync correctly with my BlackBerry so I couldn't use it for long and had to revert to Outlook 2007, but the one feature I really liked was the Social Network integration.&nbsp; This is similar to how smart phones sync with Facebook (and how Linked In should) so the profile picture and phone numbers stay in sync with what your contact has listed on the site.&nbsp; This is a great feature to help ensure you don't have stale email address or phone numbers which both seem to change a little too often now a days.&nbsp; In Outlook 2010, Microsoft allows 3rd party developers to create connections between Outlook and what ever internet service they want to help sync the information.&nbsp; <br><br>This integration is made most obvious through the "Person Pane" (see to the right) in an Outlook mail message although you will see it when you open a contact directly as well.&nbsp; This single feature would have pushed me to upgrade to 2010, but Microsoft did something unexpected that will make me rethink that...<br><br>They released this feature as a free add-on to older versions of Outlook.&nbsp; You can <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c87e257c-d76f-4785-a09b-af36babd6e32&displaylang=en">download the beta version of Outlook Social Connector</a> which works with Outlook 2003 and 2007 (and of course this is built into Outlook 2010).&nbsp; Once you have the Social Connector installed, you can get the<a href="http://www.linkedin.com/outlook"> connector for LinkedIn from their site for free</a> as well.&nbsp; You can expect that a connector for Facebook will be forthcoming after the release of Office 2010 (or perhaps even earlier), but for now, I'm happy with <a href="http://www.linkedin.com/">LinkedIn</a> since those are the contacts I'm not concerned with anyway. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1266247821 2010-02-15T01:30:21-08:00-08:00 2010-02-21T11:39:25-08:00-08:00 Snowmageddon <img alt="" style="width: 150px; height: 200px;" src="http://lh3.ggpht.com/_d44GyKsQt2w/S3lmsm937kI/AAAAAAAAJYw/s3A260v8hkk/IMG00016-20100214-1243.jpg" align="left">Yesterday Jenny and I were out and stopped by a local restaurant for lunch.&nbsp; It is obvious to me that we have now come to the time of Snowmageddon.&nbsp; Why else would you have a sign like this on your patio?&nbsp; As a native San Diegian, this is just not right. <br><br>After lunch we stopped by a nearby Home Depot.&nbsp; While shoveling the never ending snow the last week, we broke the shaft on our steel reinforced snow shovel so we decided to pick up a new one.&nbsp; The local grocery stores have been sold out for a while, but we figured that Home Depot may have gotten some new shovels in this weekend in preparation for the next round of snow next week.<br><div style="text-align: left;"><br>Well, I was wrong, they didn't have any shovels but they did have a box of these upfront:<br><br><img alt="" style="width: 400px; height: 300px;" src="http://lh6.ggpht.com/_d44GyKsQt2w/S3loT2YhcWI/AAAAAAAAJY0/p9EyfpKkfVA/IMG00018-20100214-1641.jpg" align="right"><br><br>For those of you who want to see more of Snowmageddon, take a look at my <a href="http://adamstout.com/gallery/set/snowpocalypse-2010/">photo album from the last week</a>.<br></div> Adam Stout http://adamstout.com/ adam@adamstout.com 0 1266277687 2010-02-13T11:30:00-08:00-08:00 2010-02-15T09:48:07-08:00-08:00 Stout Ale is in the Bottles <img alt="" src="http://farm3.static.flickr.com/2799/4354016383_aca31d3a6b_m.jpg" align="right">As a Christmas present, Jenny got me a Home Brewing kit from <a href="http://www.mrbeer.com/">Mr. Beer</a>.&nbsp; I had mentioned in the past that I wanted to brew some "Stout's Stout" mostly as a joke (since I don't really care for stouts) but underneath that joke, I really did want to try a home brew.&nbsp; This kit was a great starter, it come with everything I needed and instructions on how not to screw it up.&nbsp; To the right you can see some of bottled beverages that were produced.&nbsp; Now we just a have a few more weeks to wait while the carbonation kicks in a then the Stout Ale will be ready for consumption.<br><br>Brewing is fun but what I really want to try is distilling.&nbsp; I'm not sure if it is legal where I live but after I do some more home brewing, I think I'm going to look into that. Have you had any luck with home distilling?<br><br>We took <a href="http://adamstout.com/gallery/set/beer-making-1st-brew/">pictures from the brewing a few weekends ago along with the bottling from today</a>. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1265427498 2010-02-05T13:38:18-08:00-08:00 2010-02-05T13:38:18-08:00-08:00 The Snowpocalypse Is Here For those of you who haven't heard, the Snowpocalypse is upon us, we are supposed to get 20" to 30" of snow tonight.&nbsp; And on top of that there is supposed to be lighting.&nbsp; <br><div style="text-align: center; width: 100%;"><img alt="" style="display: block;" src="http://farm3.static.flickr.com/2698/4333314633_9db6267e0b.jpg" align="center"></div>This picture is from the <a href="http://adamstout.com/gallery/shopper-stopper-blizzard-of-09/">Shopper Stopper</a> we had last month but it should give you an idea of what is to come.&nbsp; Being from San Diego originally, this is all a bit to absorb but it was nice to get kicked out of the office at 2 and told to go home.&nbsp; I never got a snow day from school, so I'll take what I can get and enjoy it.<br><br>One plus side of this weekend is that I learned the term "<a href="http://www.urbandictionary.com/define.php?term=snowtarded">snowtarded</a>".&nbsp; UrbanDictionary.com lists the definition as, "Those who have no clue how to drive/function in the snow" and there is no better way to describe the people out here in D.C.&nbsp; This storm is bad, but it will be clear in a few days.&nbsp; There is no need to buy up a month of supplies from the store like people seem to be doing.&nbsp; These are the same idiots who don't realize you need to drive slower on snow regardless of teh speed limit.<br><br>I'm just going to try to stay home this weekend.<br> Adam Stout http://adamstout.com/ adam@adamstout.com 0 1264394137 2010-01-24T14:35:37-08:00-08:00 2010-01-24T14:35:37-08:00-08:00 Annoying CSS <img style="width: 256px; height: 185px;" alt="" src="http://lh6.ggpht.com/_d44GyKsQt2w/S10atHdwxhI/AAAAAAAAJYo/UghBiDpxE8I/gallery.narrow.png" align="left">I've spent the last few evenings trying to update the layout of my site to handle resizing better.&nbsp; Before it was hard-coded to be 972 pixels wide.&nbsp; This looked fine on my laptop (and I'm hoping on most other people's computer's) but since I bought I 24" wide screen monitor I realized there was lots of unused space that could really be used by my photo gallery.&nbsp; On the left, you can see what the gallery looked like before my changes.&nbsp; There was only a fixed number of pictures per row which once again was fine on my laptop but left a lot of unused space on larger monitors.<br><br>To my point, I tried to allow the CSS template to flow with the center expanding but I just couldn't get it to work right.&nbsp; I need to have three variable height columns to work but that just doesn't seem possible.&nbsp; <a href="http://matthewjamestaylor.com/blog/equal-height-columns-cross-browser-css-no-hacks">This is the closest I found</a> to what I wanted but it couldn't use a background image for the side columns (other than that, it would have been fine).<br><br><img style="width: 300px; height: 188px;" alt="" src="http://lh3.ggpht.com/_d44GyKsQt2w/S10eUBfh5YI/AAAAAAAAJYs/9vsMVjMVg-Q/gallery.wide.png" align="right">I ended up using the old borderless table technique.&nbsp; I wanted to stick to CSS only, but like I said, I don't think it is possible (I though you could use the new table emulation in CSS but that isn't support everywhere and is basically just using a table anyway).<br><br>Moral of the story, sometimes you should just use the simplest approach instead of wasting time trying to fancy.&nbsp; On the plus side, you see on the right the same photo gallery as on the left but now it is stretched out and can take up more of the screen space which is a good thing for the galleries that have hundreds of pictures as well as when viewing all the photos with a certain tag (which is a recent feature added to <a href="http://adamstout.com/gallery/">the gallery</a>).<br><br> Adam Stout http://adamstout.com/ adam@adamstout.com 0 1263992775 2010-01-19T23:06:15-08:00-08:00 2010-01-19T23:06:15-08:00-08:00 What does love really mean? <img alt="" src="http://lh4.ggpht.com/_d44GyKsQt2w/S1b-Yc7IxRI/AAAAAAAAJYk/dwV0hPqZU-M/3488767177_75a52cc794_m.jpg" align="right">I'm not going to go into detail about ho much spare time I have, but yesterday I was reading a dictionary and came across an explanation of why we use the word "love" in tennis to describe zero points.<br><br>Although after a little more research this seems in doubt, what I read was that <a href="http://www.topendsports.com/sport/tennis/scoring.htm">love is an Americanization of the French word "L'euf"</a> meaning egg (which is what a 0 kin of looks like right?).&nbsp; <br><br>Even if it didn't come from the French, people seem to agree it is from Americans mispronouncing the original (which is also perhaps Dutch). Adam Stout http://adamstout.com/ adam@adamstout.com 0 1263532721 2010-01-14T15:18:41-08:00-08:00 2010-01-14T15:18:42-08:00-08:00 Photo Gallery Update In April of last year, <a href="http://www.adamstout.com/entry/2009/04/flickr-gallery-beta.html">I migrated my Picasa based photo gallery to use Flickr</a> instead.&nbsp; I like the <a href="http://www.flickr.com/services/api/">Flickr's API</a> much better than the crap Google offers for Picasa.&nbsp; In addition to the API Flickr offers unlimited storage of pictures for about the same price as a few GB of storage with Google (at the time at least).&nbsp; I believe they have since lowered their prices so you can get unlimited storage with Flickr or 80 GB with Google.&nbsp; If Google makes some enhancements to the API, I may end up switching back.<br><br>To the point, with nearly 70 photo albums, the Flickr API was a little too robust to use real time.&nbsp; To get around this, wrote a small MySQL database to cache all the data I need locally (still hosting the pictures on Flickr).&nbsp; This has greatly improved the load time of all the pages.&nbsp; For instance, the main gallery page now loads in .4 seconds instead of the 20+ seconds it was taking before.&nbsp; While the API had everything I want, not everything was in the right call, so I had to make several calls per page instead of just one large call to the API.&nbsp; This really slowed things down.&nbsp; Now I just call a single MySQL query (that still needs to be optimized).<br><br><div style="text-align: center;"><img alt="" style="width: 500px; height: 407px; display: block;" src="http://lh4.ggpht.com/_d44GyKsQt2w/S0_5tUCHPSI/AAAAAAAAJYg/asFmf4feQ4M/flickrgallery.png" align="center"><br><div style="text-align: left;">I'm also taking the opportunity to clean up the accordion menu by switching from a one off script to a <a href="http://www.i-marco.nl/weblog/yui-accordion/">YUI based solution</a>.&nbsp; This change will allow me to do some additional expansions in the future to allow for more groupings and possibly some more display options.<br><br>Let me know what you think<br></div></div> Adam Stout http://adamstout.com/ adam@adamstout.com 0 1263315273 2010-01-12T02:54:33-08:00-08:00 2010-01-12T02:59:40-08:00-08:00 Google's Motives For Giving Away Internet If you have traveled through any airports lately you may have noticed that <a href="http://money.cnn.com/2009/11/10/technology/Google_free_wifi_airports/">several airports have free WiFi</a> (through January 15th) thanks to Google (via what appears to be a partnership with Boingo).&nbsp; It is interesting to me that included on the <a href="http://www.freeholidaywifi.com/">list of airports Google is providing WiFi</a> for is San Diego and Pittsburgh both of which already had free WiFi.&nbsp; I've only traveled through a few of the airports on the list where I've tried to use the internet, and although I know Dulles (Washington, D.C.) and Austin do not normally have free WiFi, my sampling shows 50% of the airports already had free WiFi.&nbsp; It is also interesting that while <a href="http://www.bing.com/news/search?q=google+free+internet+airport&FORM=BNFD">Google is getting a lot of press</a> for this "<em>benevolent</em>" action, there are others (like E-Bay) that are sponsoring free internet in other places but not getting much press.<br><br>A few weeks ago, I was traveling through Austin and when I connected to Google's sponsored connection and got a clue as to why they are really doing this.&nbsp; Here is a screen shot of what I saw:<br><br><div style="text-align: center;"><img alt="" style="width: 512px; height: 353px; display: block;" src="http://lh4.ggpht.com/_d44GyKsQt2w/S0yoIzHo3jI/AAAAAAAAJYY/PnxUP8qWbyY/freegoogle.screenshot.png" align="center"><br></div>While at first this looks like a normal Terms of Service agreement that you have to click on to get onto a public network, it really is a way to grab some more market share for Chrome.&nbsp; While people are just trying to get on-line in a hurry, they are going to download Chrome because they think they need it to continue onto the internet.&nbsp; I almost clicked on it and I'm a pretty technical person, I would love to see how many people Google tricked into downloading Chrome and having it automatically become the default browser.<br><br>If GMail didn't make Google Evil, Chrome certainly did.<br><br>On a side note, while trying to find the list of airports that Google is providing the WiFi for, I searched for "google free internet" and came across Google's free at home internet, <a href="http://www.google.com/tisp/">TiSP</a>.&nbsp; If you search either Google or Bing you'll see this comes up first.&nbsp; So while Google is Evil, at least they have a sense of humor. Adam Stout http://adamstout.com/ adam@adamstout.com 0 1263255902 2010-01-11T10:25:02-08:00-08:00 2010-01-11T10:26:10-08:00-08:00 CNN Needs an Editor as Well Yesterday I pointed out that Reuters needs to get a new editor who can proof read their articles, it looks like CNN needs one as well.&nbsp; I was reading an <a href="http://edition.cnn.com/2010/POLITICS/01/11/palin.fox/">article about Palin's new deal with Fox</a> when I learned that the GOP had presidential primaries in <em><strong style="color: #c00000;">2009</strong></em>.&nbsp; I must be behind the times, I thought all the primaries were in 2008 when we had the general election for president.<br><img alt="" style="height: 615px; width: 622px;" src="http://lh4.ggpht.com/_d44GyKsQt2w/S0vBFoyO01I/AAAAAAAAJYU/Sroj_2dtBM8/cnntypo.png"> Adam Stout http://adamstout.com/ adam@adamstout.com 0 1263255068 2010-01-11T10:11:08-08:00-08:00 2010-01-11T10:13:55-08:00-08:00 Finding Duplicate Music and Pictures <img alt="" style="height: 90px;" src="http://lh3.ggpht.com/_d44GyKsQt2w/S0u1Ynmtp0I/AAAAAAAAJYQ/8ajPaMbbAo4/iomega_logo.png" align="right">A couple of months ago I bought an Iomega ix2 <a href="http://iomega.com/nas/index.html">Network Attached Storage</a> device.&nbsp; While Iomega's name isn't what it was back in the day of the zip drive, since they are now owned by EMC, I figured the quality must be ok.&nbsp; Overall, I think I got what I paid for, but the drives are a little slow when serving pictures and music.&nbsp; It works fine for my back ups, but I think I'll buy something a little faster next time to at as a home media server.<br><br>The major thing I wanted to accomplish with my new shared storage was to get all the pictures and MP3s that I had on my laptop, desktop, a my wife's desktop into a central location that was backed up and accessible to all the systems.&nbsp; The Iomega NAS worked great but once I got everything in one location, I realized that I had a lot of duplicate pictures between the three systems I merged together.&nbsp; I started looking into writing an application to help de-duplicate the files but before I got too far, I took a look at what freeware was out there.&nbsp; <br><br><div style="text-align: center; width: 100%;"><img style="width: 512px; height: 369px;" alt="" src="http://lh3.ggpht.com/_d44GyKsQt2w/S0uyKbji9hI/AAAAAAAAJYM/M8CEa-ieZfs/dupcleaner.png" align="left"></div>I tried a few of the applications out there, but quickly settled on <a href="http://www.digitalvolcano.co.uk/content/duplicate-cleaner">Duplicate Cleaner</a>.&nbsp; It is a nice little app that quickly searches your directories for duplicates based on different (and configurable) criteria.&nbsp; While there were some other apps the specialized in images and others in music, this handles music, pictures, videos, and documents.<br><br>The guys at <a href="http://www.digitalvolcano.co.uk/content/">DigitalVolcano</a> really saved me some time compared to writing something and I appreciate they didn't try to charge me $50 for something I only need to use every once in a while.&nbsp; Some of their other apps on the site seem a little odd, but what ever floats their boat.&nbsp; This one is a nice light weight app. Adam Stout http://adamstout.com/ adam@adamstout.com 0