About Adam

Adam Stout works in the technology field and is currently located in San Diego, CA.




Recent Entries


My family has used Skype for several years now.  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.  It even allowed my Grandfather to stay in contact with his brother even though they lived on different continents.  It is amazing technology, but at this point, I'm ready to drop it completely.

The one thing it had going for it over Google Hangouts was that it ran in the background and you didn't have to be on the site to use it.  Now with the Hangout client I talked about a few days ago (which is really just Chrome running in the background), that is no longer a difference.

Now that Skype and Hangouts can compete on features, the balanced has shifted way over to the Hangout side.  This one picture says a lot for me:

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 Great-Grandfather).  Skype can do this, but you have to pay for it.  In Hangouts it is built in.

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.

There is also the ability 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. 
While do have my own web server, I prefer to use Gmail for my email client rather than maintain my own.  However, I want to be able to switch mail services when ever I want, so I don't give out my Gmail address.  I have configured Gmail to send mail via my server.  This allows you to get rid of the "on behalf of" message that Gmail will add to out going messages if you send the mail through Google's servers.  This defeats the whole purpose of using your own server since now people will have your Gmail address and email you there.

I don't run an open relay, so there is a little more configuration to ensure safe communication.  

If you would like to have Gmail send email through your web server and not have that annoying "on behalf of", here is how to do it:

1) Click on Options in the Top Right corner

2) Select Settings

3) Click on the Accounts tab

4) Click Edit Info for the account you want to edit

5) Enter your name as you want it displayed

6) Select ďSend through YOURDOMAINHERE SMTP server.
Enter your SMTP server (smtp.YOURDOMAINNAMEHERE.com).  
Select ďSecured connection using SSLĒ
Enter Port 465

Your email will now be sent from Gmail through your server with no traces of Gmail for the average user.

Setting up Google Hangout Client

Posted: Oct 15, 2013
In our family, we use video conferencing a lot.  With family across the US and around the world, everyone like to see each other as well as hear each other (especially with our son).  For years we have used Skype, but over the years it has stayed the same and just hasn't kept up with other technologies.  Lately I have become a fan of Google+ Hang Outs.  The quality has been better than Skype and the ability to conference call with multiple people with multiple cameras is the killer feature.

The big own side is that you have to be in a browser to see a Hangout.  This is ok for me since I always have a browser open, but this has proved a problem for older members of my family.

There is a solution.

I don't know why Google doesn't make a bigger deal about this.  There is a Chrome plug in from Google that basically runs Chrome in the background of your computer all the time and allows you to get instant messages and Hang Out requests even when you aren't in your browser and while other applications are running.  Now we have a Skype killer.

Here is how to set it up:

1) Open Chrome

2) Go to http://www.google.com/hangouts/

3) Click on ďAvailable for your computerĒ

4) When prompted click yes

5) You should now see a Google icon in your task bar.

6) You can control whether you are signed in or out by clicking on the icon from the taskbar .

7) You will now see Hangouts popup even if you arenít logged into Google+

It's been a while

Posted: Oct 15, 2013
I'll give you it has been a while since I posted anything here.  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.  Be sure to login and leave your thoughts as well.

Exporting SVN Change Log in Phing

Posted: Jul 17, 2010
Last night I was working on add a phpDocumentor task to a Phing build script I have been working on.  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.  However, one great feature of Phing is how easy it is to expand.  I wrote this little ad-hoc task to export the SVN history to a file which I then include in the documentation.

Here is the code if you'd like to add it to your build scripts:

<adhoc-task name="svnlog">
svnLog extends Task 
setFile($file) { 
$this->file $file
setSvnPath($svnpath) { 
$this->svnpath $svnpath
setRepositoryUrl($repositoryurl) { 
$this->repositoryurl $repositoryurl
    private function 
$cmd $svnpath " log " $repositoryurl " > " $file;
$cmd "\n";
main() { 
$this->writeSvnLog($svnpath $this->svnpath$repositoryurl $this->repositoryurl$file $this->file);

Here is how you call it:
<svnlog svnpath="/usr/bin/svn" repositoryurl="http://rex/svn/${package}/" file="${workingDir}/CHANGELOG"></svnlog>

Do you Care?

Posted: Jul 12, 2010
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.  For this, I figured I should at least watch the video since he gave up his job for it.

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.  Well worth the three minutes to watch it.

On a related note, if you don't watch Futurama, you should.  The last episode, "Attack of the Killer App" was awesome.  They really got the essence of the nonsensical hype that is apple.

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?

FuturamaThursdays 10pm / 9c
The Twit Worm
Futurama New EpisodesFuturama New EpisodesIt's Always Sunny in Philadelphia

Deploying PHP with PHING

Posted: Jul 06, 2010
A couple of months ago I came across PHING, a deployment system for PHP.  It seems pretty straight forward to use and really tuned for PHP.  It has tons of extensions to use all the tools a PHP developer would want.  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.

I alike that it is so easily customizable as well.  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).  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.  A couple of lines of PHP in my PHING build.xml and I'm up and running.

¬†¬†¬† <adhoc-task name="copyrecurse">
¬†¬†¬† <![CDATA[
¬†¬†¬† class copyRecurse extends Task 
¬†¬†¬† ¬†¬†¬† private $file;
¬†¬†¬† ¬†¬†¬† private $todir;
¬†¬†¬† ¬†¬†¬† private $file_name;
¬†¬†¬† ¬†¬†¬† 
¬†¬†¬† ¬†¬†¬† 
function setFile($file) { 
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† $this->file $file
¬†¬†¬† ¬†¬†¬† }
¬†¬†¬† ¬†¬†¬† 
¬†¬†¬† ¬†¬†¬† 
function setToDir($todir) {
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† $this->todir $todir
¬†¬†¬† ¬†¬†¬† }
¬†¬†¬† ¬†¬†¬†
¬†¬†¬† ¬†¬†¬† 
private function getDirectoryTree($BASE_DIR,$LEVEL=1){
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† $THIS_DIR array_diffscandir($BASE_DIR), array_merge(array( ".""..",".svn")) );
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† foreach( $THIS_DIR as $DIR ) {
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† if(is_dir($BASE_DIR."/".$DIR)){
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† copy($this->file$BASE_DIR."/".$DIR "/" $this->file_name);
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† $this->getDirectoryTree($BASE_DIR."/".$DIR);
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† }
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† }
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† return true;
¬†¬†¬† ¬†¬†¬† 
¬†¬†¬† ¬†¬†¬† <br>¬†¬†¬† ¬†¬†¬† function main() { 
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† $this->file_name basename($this->file);
¬†¬†¬† ¬†¬†¬† ¬†¬†¬† $this->getDirectoryTree($BASE_DIR $this->todir);
¬†¬†¬† ¬†¬†¬† 
¬†¬†¬† }
¬†¬†¬† ]]>
¬†¬†¬† </adhoc-task>
¬†¬†¬† <copyrecurse file="${workingDir}php.ini" todir="${workingDir}/>

I'm looking forward to using PHING in the future and integrating some of the tools it gives me access to.  Hopefully more of us will start using it to help ensure it is maintained going forward.