<?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>jeremykendall.net</title>
	<atom:link href="http://www.jeremykendall.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeremykendall.net</link>
	<description>{web developer, entrepreneur }</description>
	<lastBuildDate>Fri, 23 Jul 2010 19:18:30 +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>Memphis PHP #3 &#8211; Presentation Slides and Example Code Included</title>
		<link>http://www.jeremykendall.net/2010/07/23/memphis-php-3-presentation-slides-and-example-code-included/</link>
		<comments>http://www.jeremykendall.net/2010/07/23/memphis-php-3-presentation-slides-and-example-code-included/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 19:08:32 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=359</guid>
		<description><![CDATA[We had a great time last night at Memphis PHP.  The turnout was great, it was fun meeting new folks and seeing old friends, and the conversations before and after the meeting were worth the drive to East Memphis. I had a blast presenting &#8220;A Brief Introduction to Zend_Form.&#8221;  I love presenting, especially when the [...]]]></description>
			<content:encoded><![CDATA[<p>We had a great time last night at <a href="http://memphisphp.org">Memphis PHP</a>.  The turnout was great, it was fun meeting new folks and seeing old friends, and the conversations before and after the meeting were worth the drive to East Memphis.</p>
<p>I had a blast presenting &#8220;<a href="http://www.slideshare.net/jeremykendall/a-brief-introduction-to-zendform">A Brief Introduction to Zend_Form</a>.&#8221;  I love presenting, especially when the audience gets into the act, asking tons of good questions and laughing at my horrible jokes.  Thanks to all who showed up and for making Memphis PHP and last night&#8217;s event such a great success.</p>
<p><strong>Slides and Example Code</strong></p>
<p>As promised, I&#8217;ve posted &#8220;<a href="http://www.slideshare.net/jeremykendall/a-brief-introduction-to-zendform">A Brief Introduction to Zend_Form</a>&#8221; at SlideShare.  Included below are links to the example code on pastebin.</p>
<ul>
<li><a href="http://pastebin.com/nmu7a89Y">Example.php</a>: The example Zend_Form</li>
<li><a href="http://pastebin.com/EruVtysF">IndexController.php</a>: The example MVC application&#8217;s controller</li>
<li><a href="http://pastebin.com/fN22fFTC">index.phtml</a>: The example MVC application&#8217;s view</li>
<li><a href="http://pastebin.com/jMqrPCWb">index.php</a>: The example standalone script.</li>
<li><a href="http://pastebin.com/fpmSsrBb">zend_form.css</a>: The css applied to the example form (thanks to Robert Basic for the <a href="http://robertbasic.com/blog/styling-the-default-zend_form-layout/">css and examples</a>)</li>
</ul>
<p>The best way to run the MVC example is to whip up a Zend Framework project and drop Example.php into /application/forms.  If you&#8217;re unfamiliar with how to get a Zend Framework project up and running, please see &#8220;<a href="http://www.jeremykendall.net/2010/04/17/from-zero-to-zend-framework-project-in-10-minutes/">From Zero to Zend Framework Project in 10 Minutes</a>.&#8221;</p>
<p><strong>Thanks to our Sponsors</strong></p>
<p>Many thanks to <a href="http://twitter.com/lalunablanca">Dave Barger</a> of <a href="http://www.lunaweb.net/">LunaWeb</a> for kindly allowing us to use the LunaWeb offices for our meeting place, providing food, soda, and even beer.  Yup.  Free beer.  Not bad for our third event, eh?</p>
<p>Dave shared some information last night about his company, LunaWeb, some upcoming events, and some of their current and upcoming projects.  Here&#8217;s a list of the links that he referred to.</p>
<p>For your radars:</p>
<ul>
<li>South by Southwest (<a href="http://sxsw.com" target="_blank">SxSW</a>) March 2011, Austin TX</li>
<li><a href="http://launchmemphis.org">LaunchMemphis</a>: <a href="http://twitter.com/launchmemphis" target="_blank">@launchmemphis</a> &amp; <a href="http://www.facebook.com/launchmemphis" target="_blank">Facebook</a></li>
<li><a href="http://www.fuelfilm.org/" target="_blank">FuelFilm</a>: This weekend <a href="http://www.fuelfilm.org/48hourlaunch.html" target="_blank">48Hour Film Launch</a></li>
<li><a href="http://socialexpedition.com" target="_blank">SocialExpedition</a>: Meetups &amp; PodCast</li>
<li><a href="http://lunaweb.com/Contact" target="_blank">LunaWeb</a> seeking to connect with contract talent</li>
</ul>
<p>Big thanks to <a href="http://www.g-2technology.com/">G2 Technology</a> for helping us spread the word about Memphis PHP.  They work hard every month to promote our events, and I&#8217;m grateful to them for all they do.</p>
<p><strong>Join Us</strong></p>
<p>If you&#8217;re local to the Memphis area, visiting Memphis, or close enough to drive in, and you&#8217;re not a member of Memphis PHP, we&#8217;d love to have you join us.  Head over to <a href="http://memphisphp.org">MemphisPHP.org</a> and join the group.  You&#8217;ll get announcements from the group, info about meetings, and be able to RSVP for events.  I look forward to meeting you at our <a href="http://www.memphisphp.org/calendar/13909461/?from=list&amp;offset=0">next event</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2010/07/23/memphis-php-3-presentation-slides-and-example-code-included/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Announcing Memphis PHP</title>
		<link>http://www.jeremykendall.net/2010/05/24/announcing-memphis-php/</link>
		<comments>http://www.jeremykendall.net/2010/05/24/announcing-memphis-php/#comments</comments>
		<pubDate>Mon, 24 May 2010 20:40:51 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=347</guid>
		<description><![CDATA[It&#8217;s my pleasure to announce the formation of Memphis PHP, a PHP user group serving Memphis, TN and the mid-south.  The goal of Memphis PHP is to grow and nurture an active PHP community in the local area.  It&#8217;s going to take a lot of work to get Memphis PHP off the ground, but having [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s my pleasure to announce the formation of <a href="http://memphisPHP.org">Memphis PHP</a>, a PHP user group serving Memphis, TN and the mid-south.  The goal of Memphis PHP is to grow and nurture an active PHP community in the local area.  It&#8217;s going to take a lot of work to get Memphis PHP off the ground, but having an active community of PHP developers in Memphis is long overdue.  The hard work will be more than worth it, and I&#8217;m going to need your help to accomplish that goal.</p>
<p>My first exposure to the PHP community at large came when I attended <a title="ZendCon" href="http://zendcon.com/">ZendCon</a> in 2008.  After getting a taste of what the PHP community had to offer, I was pretty bummed out that we didn&#8217;t have anything going in Memphis.  Attending ZendCon in &#8217;08 led to attending ZendCon in &#8217;09, Nashville&#8217;s excellent <a title="Big LAMP Camp" href="http://enterpriselamp.org/">Big LAMP Camp</a> event last November, and I just returned from the <a href="http://tek.phparch.com/">tek-X</a> conference in Chicago.</p>
<p>One of my favorite sessions at this year&#8217;s tek-X was the <a href="http://joind.in/talk/view/1698">Community Roundtable</a>, &#8220;an all-star lineup of community members&#8221; discussing user groups: what they are, how to start them, and how to keep them going.  It was the Community Roundtable that finally convinced me enough was enough, that it was time to start a user group right here in Memphis, TN.</p>
<p><strong>The Details</strong></p>
<ul>
<li>Memphis PHP will meet on the <strong>4th Thursday</strong> of every month at 6:30pm (currently searching for a suitable location).</li>
<li>Memphis PHP uses <a title="Memphis PHP on Meetup.com" href="http://www.meetup.com/memphisPHP">Meetup.com</a> for membership,  event and meeting announcements, RSVPs, etc.</li>
<li>Our first event will be a <a title="Road trip!" href="http://www.meetup.com/memphisPHP/calendar/13578277/">road trip to  Nashville</a> on June 8th to visit the Nashville PHP user group.</li>
<li>Our <a title="Memphis PHP inaugural meeting" href="http://www.meetup.com/memphisPHP/calendar/13573568/">first  official meeting</a> will be on June 24th, location and speaker/agenda  TBA.</li>
<li>Follow <a href="http://twitter.com/MemphisPHP">@MemphisPHP</a> on Twitter for community updates and the like.<a href="http://twitter.com/MemphisPHP"></a>
<ul>
<li>If you&#8217;re on Twitter and would like to be added to the <a title="Memphis PHP developers" href="http://twitter.com/MemphisPHP/memphisphp-devs">memphisPHP-devs</a> list, let me know.</li>
<li>Our official hashtag is <a href="http://twitter.com/#search?q=%23memphisPHP">#memphisPHP</a>.</li>
</ul>
</li>
<li>Our general discussion group and mailing list is hosted at <a title="Memphis PHP at Google Groups" href="http://groups.google.com/group/memphis-php">Google Groups</a></li>
<li>Employers and recruiters are more than welcome to post opportunities to our discussion list. Please  read the guidelines for <a rel="nofollow" href="http://groups.google.com/group/memphis-php/web/posting-employment-opportunities?_done=%2Fgroup%2Fmemphis-php%3F">Posting  Employment Opportunities</a> first.</li>
</ul>
<p>Welcome to Memphis PHP!  I hope you&#8217;ll join me in making Memphis PHP a huge success.</p>
<p><strong>Big Thanks</strong></p>
<p>Special thanks go out to the Community Roundtable panel (<a href="http://twitter.com/DragonBe">@DragonBe</a>, <a href="http://twitter.com/lornajane">@LornaJane</a>, <a href="http://twitter.com/rdohms">@rdohms</a>, <a href="http://twitter.com/ramsey">@ramsey</a>, <a href="http://twitter.com/caseysoftware">@CaseySoftware</a>) at tek-X for direction and tips, <a href="http://benramsey.com/">Ben Ramsey</a> of <a href="http://www.nashvillephp.org/">Nashville PHP</a> for his guidance and support, and <a href="chancegarcia">Chance Garcia</a> for beating me to the punch.</p>
<p>I&#8217;d also like to thank Wes Hicks and the team at <a href="http://www.g2technology.com/">G2 Technology</a> for offering to help spread the word about Memphis PHP and help find a meeting place.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2010/05/24/announcing-memphis-php/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>My Top 5 Favorite Geek T-Shirts (That I Own)</title>
		<link>http://www.jeremykendall.net/2010/05/12/my-top-5-favorite-geek-t-shirts/</link>
		<comments>http://www.jeremykendall.net/2010/05/12/my-top-5-favorite-geek-t-shirts/#comments</comments>
		<pubDate>Wed, 12 May 2010 11:32:22 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[clothing]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[t-shirts]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=311</guid>
		<description><![CDATA[I&#8217;m a sucker for t-shirts, have been all my life. My high school sweetheart gave me grief for always wearing t-shirt and jeans. During my college years, credit card companies found me an easy mark by offering free t-shirts in exchange for my John Hancock. When I go out with Charly I still use the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a sucker for t-shirts, have been all my life.  My high school sweetheart gave me grief for always wearing t-shirt and jeans.  During my college years, credit card companies found me an easy mark by offering free t-shirts in exchange for my John Hancock.  When I go out with <a href="http://chachacharlys.com">Charly</a> I still use the old, tired, &#8220;I&#8217;ll put on my dress t-shirt&#8221; joke.</p>
<p>If I had the means, I would be the <a href="http://www.time.com/time/magazine/article/0,9171,963620,00.html">Imelda Marcos</a> of bad-ass t-shirts.  Since I&#8217;m not (yet) independently wealthy, I need to be selective, feeding my addiction with nothing but primo stuff.  Selecting from the geek category, in no particular order, here are my top 5 favorite geek t-shirts of all time (that I own).</p>
<p><strong>I&#8217;m Well Built</strong></p>
<div id="attachment_319" class="wp-caption alignleft" style="width: 160px"><a href="http://www.ptxstore.com/atlassian/product_info.php?products_id=43&amp;osCsid=ae37328640a3deb205d3c644cb3f3dab"><img class="size-thumbnail wp-image-319  " title="I'm Well Built - Atlassian Bamboo" src="http://www.jeremykendall.net/wp-content/uploads/2010/05/im-well-built-150x150.jpg" alt="" width="150" height="150" /></a><p class="wp-caption-text">Atlassian - $19.95</p></div>
<p>Atlassian makes a lot of <a href="http://www.atlassian.com/software/jira/">really</a> <a href="http://www.atlassian.com/software/confluence/">sweet</a> <a href="http://www.atlassian.com/software/crowd/">software</a>, stuff I use on a daily basis, both at the house and at the day job.  While I&#8217;ve never actually used <a href="http://www.atlassian.com/software/bamboo/">Bamboo</a> (that&#8217;s next on the project list), I dig the shirt for a couple of reasons.  First, I&#8217;m a fan of all the Atlassian products that I&#8217;ve used so far, and I&#8217;ve always had good experiences dealing with Atlassian support.  Second, while you can&#8217;t tell from the lame graphic, this is actually a really good looking shirt.  Third, not being particularly well built, I love wearing a shirt that says I am.  It reminds me of my old &#8220;Who needs hair with a body like this?&#8221; shirt I wore when I was 220lbs of out of shape slob.  Oh sweet, sweet juxtaposition.</p>
<p>Get yours <a href="http://www.ptxstore.com/atlassian/product_info.php?products_id=43&amp;osCsid=ae37328640a3deb205d3c644cb3f3dab">here</a>.</p>
<p><strong>Mine</strong></p>
<div id="attachment_321" class="wp-caption alignright" style="width: 160px"><a href="http://www.thinkgeek.com/tshirts-apparel/unisex/popculture/9644/"><img class="size-thumbnail wp-image-321 " title="Mine" src="http://www.jeremykendall.net/wp-content/uploads/2010/05/mine-150x150.jpg" alt="" width="150" height="150" /></a><p class="wp-caption-text">ThinkGeek - $17.99</p></div>
<p>What can I say about this one? It was love at first sight.  The only way I could love it more is if it were an official Office Space Hawaiian shirt, which does not exist and would be another post anyhow.  The thing I can&#8217;t understand is how few people recognize the <a href="http://www.thinkgeek.com/homeoffice/supplies/61b7/">red Swingline stapler</a> for what it is.  Last time I was traveling, the only guy that got the joke was a ticketing agent at the airport.   We both had a good laugh.  Everyone else just looked at us funny.</p>
<p>Get yours <a href="http://www.thinkgeek.com/tshirts-apparel/unisex/popculture/9644/">here</a>.</p>
<p><strong>fork you</strong></p>
<div id="attachment_323" class="wp-caption alignleft" style="width: 160px"><strong><strong><a href="http://rubyrags.com/products/10"><img class="size-thumbnail wp-image-323" title="fork you" src="http://www.jeremykendall.net/wp-content/uploads/2010/05/forkyou-150x150.png" alt="" width="150" height="150" /></a></strong></strong><p class="wp-caption-text">RubyRags - $18</p></div>
<p>I haven&#8217;t ever used <a href="http://git-scm.com/">Git</a>, I&#8217;m not a fan of their marketing strategies (svn sucks! Whaa?), I&#8217;m irrationally prejudiced against <a title="Fails" href="http://www.etsy.com/listing/34431985/fails-stickers-set-of-5">Rails</a>, but I still love this t-shirt.  Grey is a splash of color in my mostly black wardrobe, it features cool typography, short, punchy copy, and it&#8217;s got a spot on the back intended for a little DIY customization, Sharpie style.  Mine says &#8220;sucks.&#8221;  Take that, Git.  Har, har, har.  Also, this is the shirt you want if you&#8217;re just angsty enough to want the world to fork off every once in a while, but not angsty enough to get yourself an <a href="http://en.wiktionary.org/wiki/FTW">FTW</a> face tattoo (and I don&#8217;t mean &#8220;for the win&#8221;).</p>
<p>Get yours <a href="http://rubyrags.com/products/10">here</a>.</p>
<p><strong>SQL query</strong></p>
<div id="attachment_326" class="wp-caption alignright" style="width: 160px"><strong><strong><a href="http://www.thinkgeek.com/tshirts-apparel/unisex/itdepartment/595d/"><img class="size-thumbnail wp-image-326" title="return 0 rows" src="http://www.jeremykendall.net/wp-content/uploads/2010/05/no-clue-150x150.jpg" alt="" width="150" height="150" /></a></strong></strong><p class="wp-caption-text">ThinkGeek - $17.99</p></div>
<p>I picked this one up when I was working as a technical support rep, taking calls for 8 to 10 hours a day and hating my life.  While the tech support career path doesn&#8217;t generally leave one with a working knowledge of <a href="http://en.wikipedia.org/wiki/Sql">SQL</a>, I was doing everything I could to teach myself to program so that I would never have to take another support call as long as I lived.  While that hasn&#8217;t quite worked out (I don&#8217;t take calls directly, but I live in <a href="http://www.atlassian.com/software/jira/">JIRA</a>), this shirt has remained hilarious and relevant from the first time I put it on.  Making jokes in code is like learning to swear in a foreign language, you can express your frustration about those around you without having to worry about being understood and a) getting <a href="http://www.youtube.com/watch?v=RN-qS1YU4Ik">punched in the jeans</a>, b) getting fired, or c) getting punched in the jeans and then getting fired.  WARNING: when you start making jokes in code, you&#8217;ve crossed the line from earth person to geek.  There is no going back.</p>
<p>Get yours <a href="http://www.thinkgeek.com/tshirts-apparel/unisex/itdepartment/595d/">here</a>.</p>
<p><strong>Real Programmers Wear Corpsepaint</strong></p>
<div id="attachment_328" class="wp-caption alignleft" style="width: 160px"><strong><strong><a href="http://spaz.spreadshirt.com/real-programmers-wear-corpsepaint-A4939254"><img class="size-thumbnail wp-image-328" title="Real Programmers Wear Corpsepaint" src="http://www.jeremykendall.net/wp-content/uploads/2010/05/corpsepaint-150x150.png" alt="" width="150" height="150" /></a></strong></strong><p class="wp-caption-text">Spaz - $17</p></div>
<p>I grew up as a metal baby in the late 80s/early 90s, and I&#8217;ve never lost my taste for the hard stuff.  The combination of two of my great loves, heavy metal and computer programming, in one of my favorite mediums, the t-shirt, makes this an instant favorite.  </p>
<p>Fun fact: Although not widely known, <a href="http://en.wikipedia.org/wiki/Corpse_paint">corpse paint</a> has been worn by computer programmers as early as the late 1960s.  It&#8217;s rumored that Kim Petersen, better known as <a href="http://en.wikipedia.org/wiki/King_Diamond">King Diamond</a>, was first exposed to corpse paint by some <a href="http://en.wikipedia.org/wiki/Lisp_(programming_language)">LISP</a> developers who were attending a mathematics conference in Denmark in the early 1970s.</p>
<p>Pro-tip: While real programmers wear <em>do</em> wear corpsepaint, real programmers <em>do not</em> wear <a href="http://www.jeremykendall.net/wp-content/uploads/2010/05/Kerry-King-december-05.jpg">nail studded gauntlets</a>.  They&#8217;re a major contributing factor in repetitive stress injuries.</p>
<p>Get yours <a href="http://spaz.spreadshirt.com/real-programmers-wear-corpsepaint-A4939254">here</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2010/05/12/my-top-5-favorite-geek-t-shirts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Two More Apache Tweaks Required After Ubuntu 10.04 Upgrade</title>
		<link>http://www.jeremykendall.net/2010/05/03/two-more-apache-tweaks-required-after-ubuntu-10-04-upgrade/</link>
		<comments>http://www.jeremykendall.net/2010/05/03/two-more-apache-tweaks-required-after-ubuntu-10-04-upgrade/#comments</comments>
		<pubDate>Mon, 03 May 2010 13:30:41 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=296</guid>
		<description><![CDATA[While I was troubleshooting why Apache stopped serving php apps from my home directory, I ran into two more annoyances that required attention. I figured I&#8217;d share them as well in case you run into them yourself. Here&#8217;s what I saw when I reloaded Apache: jkendall@san-diego:/etc/apache2$ sudo /etc/init.d/apache2 reload * Reloading web server config apache2 [...]]]></description>
			<content:encoded><![CDATA[<p>While I was troubleshooting why <a href="http://www.jeremykendall.net/2010/04/30/upgrading-to-ubuntu-10-04-breaks-serving-php-from-home-directories/">Apache stopped serving php apps from my home directory</a>, I ran into two more annoyances that required attention.  I figured I&#8217;d share them as well in case you run into them yourself.</p>
<p>Here&#8217;s what I saw when I reloaded Apache:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">jkendall@san-diego:/etc/apache2$ sudo /etc/init.d/apache2 reload
  * Reloading web server config apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Fri Apr 30 13:47:38 2010] [warn] NameVirtualHost *:80 has no VirtualHosts
                                                                                    [ OK ]</pre></div></div>

<p>As you can see, Apache reloaded fine, but I don&#8217;t like seeing anything other than <code>[ OK ]</code> when I&#8217;m reloading my web server.  Let&#8217;s tackle these one at a time.</p>
<p><strong>Could not reliably determine the server&#8217;s fully qualified domain name</strong></p>
<p>Why is Apache all of a sudden complaining about what&#8217;s worked for so long?  I&#8217;m not sure exactly, but thankfully the fix was simple and easy.  Simply adding &#8220;<code>ServerName localhost</code>&#8221; to <code>/etc/apache2/httpd.conf</code> took care of the first complaint (Big thanks to Mohamed Aslam for <a href="http://mohamedaslam.com/how-to-fix-apache-could-not-reliably-determine-the-servers-fully-qualified-domain-name-using-127011-for-servername-error-on-ubuntu/">his clear instructions</a> on how to get this fixed.).</p>
<p><strong>NameVirtualHost *:80 has no VirtualHosts</strong></p>
<p>The problem boiled down to having <code>NameVirtualHost</code> defined in more than one place.  In my case, <code>NameVirtualHost</code> was defined both in <code>/ect/apache2/ports.conf</code> and <code>/etc/apache2/sites-available/default</code>.  Commenting out the <code>NameVirtualHost *:80</code> line in <code>/etc/apache2/sites-available/default</code> did the trick (Thanks to the guys in <a href="http://serverfault.com/questions/1405/apache2-startup-warning-namevirtualhost-80-has-no-virtualhosts">this Server Fault thread</a>, especially to <a href="http://serverfault.com/users/942/ivan">Ivan</a>, for providing the necessary clues to track this one down.).</p>
<p>After making the above changes, reloading Apache didn&#8217;t throw any more warnings. w00t!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2010/05/03/two-more-apache-tweaks-required-after-ubuntu-10-04-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading to Ubuntu 10.04 Breaks Serving php from Home Directories</title>
		<link>http://www.jeremykendall.net/2010/04/30/upgrading-to-ubuntu-10-04-breaks-serving-php-from-home-directories/</link>
		<comments>http://www.jeremykendall.net/2010/04/30/upgrading-to-ubuntu-10-04-breaks-serving-php-from-home-directories/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 16:45:31 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=288</guid>
		<description><![CDATA[I upgraded to Ubuntu 10.04 this morning and immediately noticed I could no longer serve php applications from my home directory. When I tried to visit one of my projects, http://test.local for example, Firefox opened a download dialog with a message similar to &#8220;You have chosen to open index.phtml . . .&#8221; After quite a [...]]]></description>
			<content:encoded><![CDATA[<p>I upgraded to <a href="http://ubuntu.com">Ubuntu 10.04</a> this morning and immediately noticed I could no longer serve php applications from my home directory.  When I tried to visit one of my projects, http://test.local for example, Firefox opened a download dialog with a message similar to &#8220;You have chosen to open index.phtml . . .&#8221;</p>
<p>After quite a bit of googling and forum searching, I went to Twitter asking for help.  Many thanks to <a href="http://twitter.com/sypherNL">@sypherNL</a> for helping me resolve this one.</p>
<p>It seems that something has changed in /etc/apache2/mods-enabled/php5.conf.  If you&#8217;re experiencing this same issue, check your php5.conf and see if it matches mine.</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">&lt;<span style="color: #000000; font-weight:bold;">IfModule</span> mod_php5.c&gt;
    &lt;<span style="color: #000000; font-weight:bold;">FilesMatch</span> <span style="color: #7f007f;">&quot;<span style="color: #000099; font-weight: bold;">\.</span>ph(p3?|tml)$&quot;</span>&gt;
        <span style="color: #00007f;">SetHandler</span> application/x-httpd-php
    &lt;/<span style="color: #000000; font-weight:bold;">FilesMatch</span>&gt;
    &lt;<span style="color: #000000; font-weight:bold;">FilesMatch</span> <span style="color: #7f007f;">&quot;<span style="color: #000099; font-weight: bold;">\.</span>phps$&quot;</span>&gt;
        <span style="color: #00007f;">SetHandler</span> application/x-httpd-php-source
    &lt;/<span style="color: #000000; font-weight:bold;">FilesMatch</span>&gt;
    <span style="color: #adadad; font-style: italic;"># To re-enable php in user directories comment the following lines</span>
    <span style="color: #adadad; font-style: italic;"># (from &lt;IfModule ...&gt; to &lt;/IfModule&gt;.) Do NOT set it to On as it</span>
    <span style="color: #adadad; font-style: italic;"># prevents .htaccess files from disabling it.</span>
    &lt;<span style="color: #000000; font-weight:bold;">IfModule</span> mod_userdir.c&gt;
        &lt;<span style="color: #000000; font-weight:bold;">Directory</span> /home/*/public_html&gt;
            <span style="color: #00007f;">php_admin_value</span> engine <span style="color: #0000ff;">Off</span>
        &lt;/<span style="color: #000000; font-weight:bold;">Directory</span>&gt;
    &lt;/<span style="color: #000000; font-weight:bold;">IfModule</span>&gt;
&lt;/<span style="color: #000000; font-weight:bold;">IfModule</span>&gt;</pre></div></div>

<p>If your php5.conf file looks like the one above, simply comment out the</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">&lt;<span style="color: #000000; font-weight:bold;">IfModule</span> mod_userdir.c&gt;</pre></div></div>

<p> lines as instructed.  Once that&#8217;s done, restart apache with the following command:</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">sudo /etc/init.d/apache2 reload</pre></div></div>

<p>Clear your browser&#8217;s cache and try to visit your site again.  I didn&#8217;t think the fix took at first, but after clearing cache everything worked just fine.</p>
<p><strong>Related Links</strong></p>
<ul>
<li>Thanks again to <a href="http://twitter.com/sypherNL">@sypherNL</a> for showing me how to resolve this one.</li>
<li>Also see Marco Rodrigues&#8217; post <a href="http://marco.tondela.org/2010/03/your-public_html-with-php5-isnt-working-in-ubuntu-lucid/">Your public_html with PHP5 isn’t working in Ubuntu 10.04 Lucid?</a></li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2010/04/30/upgrading-to-ubuntu-10-04-breaks-serving-php-from-home-directories/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>From Zero to Zend Framework Project in 10 Minutes</title>
		<link>http://www.jeremykendall.net/2010/04/17/from-zero-to-zend-framework-project-in-10-minutes/</link>
		<comments>http://www.jeremykendall.net/2010/04/17/from-zero-to-zend-framework-project-in-10-minutes/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 19:18:46 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[zend tool]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=243</guid>
		<description><![CDATA[I first started working with the Zend Framework in July of 2007. The framework has come a long way since then, and one of my favorite new components is Zend Tool. Until Zend Tool came on the scene, my least favorite part of any Zend Framework project was getting the project up and running, from [...]]]></description>
			<content:encoded><![CDATA[<p>I first started working with the <a href="http://framework.zend.com">Zend Framework</a> in July of 2007.  The framework has come a long way since then, and one of my favorite new components is <a href="http://framework.zend.com/manual/en/zend.tool.html">Zend Tool</a>.  Until Zend Tool came on the scene, my least favorite part of any Zend Framework project was getting the project up and running, from zero to &#8220;Hello World,&#8221; if you will.  I always left out some important piece of configuration, screwed up the directory structure, or made some other equally foolish, simple mistake that kept me chasing my tail until I finally got everything set up just right.  No longer! Zend Tool does all of that work for me, allowing me to get to work on the meat of my project right away.</p>
<p>Of course, you can&#8217;t use Zend Tool until you&#8217;ve got the framework installed.  Once the framework is installed, there are very specific steps required to fire up Zend Tool.  Once Zend Tool builds the project for you, you&#8217;re going to need a <a href="http://httpd.apache.org/docs/2.0/vhosts/">virtual host</a> set up so that you can actually run the thing. No problem, right?  Well, maybe not.</p>
<p>It can be really challenging for the new guy to get from zero to a Zend Framework project without wanting to chunk his computer out the window (<a href="http://www.urbandictionary.com/define.php?term=headdesk&amp;defid=2569861">headdesk</a> anyone?).  I know it was that way for me.  In the interest of saving his sanity and helping the new gal get going, I&#8217;ve tried to put all the necessary steps together in one place.</p>
<p>Here&#8217;s what we&#8217;re going to do:</p>
<ul>
<li>Install the Zend Framework</li>
<li>Get Zend Tool up and running</li>
<li>Create a new Zend Framework project</li>
<li>Get an virtual host up and running</li>
<li>Celebrate victory!</li>
</ul>
<p><strong>Disclaimer</strong></p>
<p>While I&#8217;m going try to stay true to my &#8220;Zero to Zend Framework Project&#8221; thesis, I am making a few assumptions.  This tutorial is written for <a href="http://www.ubuntu.com/">Ubuntu</a>, <a href="http://php.net/">PHP 5</a>, and <a href="http://httpd.apache.org/">Apache</a>. While I&#8217;d love to be able to address Windows, Mac, and other *nix distros, I can only share what I know.  I&#8217;m also assuming PHP 5 (PHP 5.2.4 at minimum) and Apache are both installed and functioning correctly, and Apache&#8217;s <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewrite</a> module is up and running.  If that&#8217;s not the case, please refer to the resources section at the end of this post to find instructions on getting everything ready to go.</p>
<p><strong>Installing the Zend Framework</strong></p>
<p>Installing the Zend Framework is as easy as downloading a .zip or .tar.gz file (your choice) and extracting the contents onto your machine.</p>
<ul>
<li>Create a directory named phplib in your home folder.</li>
<li>Head over to <a href="http://framework.zend.com/download/latest">Zend Framework: Downloads</a> and download Zend Framework &lt;version_num&gt; Full.</li>
<li>Double click on the downloaded file, choose &#8220;Extract,&#8221; navigate to the phplib directory, and click &#8220;Extract.&#8221;</li>
</ul>
<p>As of this writing, the most recent version of the Zend Framework is 1.10.3, so the full path to my Zend Framework installation would be</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">/home/jkendall/phplib/ZendFramework-1.10.3</pre></div></div>

<p><strong>IMPORTANT</strong>: Make sure that you downloaded Zend Framework &lt;version_num&gt; Full.  That will be important later.</p>
<p><strong>TIP</strong>: As new versions of the framework are released, I like to be able to switch between them easily.  I always make a <a href="http://en.wikipedia.org/wiki/Symbolic_link">soft link (symbolic link, symlink)</a> to the latest release and name it Zend.  You can either right-click on the ZendFramework-1.10.3 folder and select &#8220;Make Link&#8221; (make sure to name the link &#8220;Zend&#8221;), or create a soft link from the command line like so:</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">~/phplib/ZendFramework-1.10.3$ ln -s ZendFramework-1.10.3 Zend</pre></div></div>

<p>When a new version of the framework is released, I install the new version to its own folder and switch the soft link to target the directory containing the latest release.  That can come in handy down the road.</p>
<p><strong>Get Zend Tool running</strong></p>
<p>There are a <a href="http://framework.zend.com/manual/en/zend.tool.usage.cli.html">few different ways to get Zend Tool running</a>, perhaps better than mine, but I like to create a <a href="http://www.sucka.net/2009/09/ubuntu-command-line-tip-1-%E2%80%93-aliases/">bash alias</a> for zf.sh (For information on how to get bash aliases working, see this <a href="http://www.sucka.net/2009/09/ubuntu-command-line-tip-1-%E2%80%93-aliases/">bash aliases tutorial</a>.).  My alias looks like <code>alias zf='/usr/share/phplib/Zend/bin/zf.sh'</code>.</p>
<p>Whichever method you use, make sure to test your alias by calling <code>zf --help</code> from the command line.</p>
<p><strong>Creating a new Zend Framework Project</strong></p>
<p>Now we&#8217;re getting to the good stuff.  First, head back to your home directory and create a new directory called public_html.  This is where you&#8217;re going to store your Zend Framework project (and any future web projects, for that matter).</p>
<p>Next, cd into the public_html directory and execute the following command:</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">~/public_html$ zf create project ZeroToZF</pre></div></div>

<p>That&#8217;s all there is to it!  You&#8217;ve got your project structure in place, a default IndexController and ErrorController, your application config, the necessary view scripts, etc (See the <a href="http://framework.zend.com/manual/en/zend.application.quick-start.html">Zend Application Quick Start</a> for full rundown of what got created.).</p>
<p><strong>IMPORTANT</strong>: While the full project structure is now in place, the Zend Framework <strong>is not included in your project for you</strong>.  Deciding how the framework should be included in the project is up to the developer.  I like to copy the library out of the Zend Framework install folder into the application&#8217;s library folder.  In our example, I would copy</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">/home/jkendall/phplib/ZendFramework-1.10.3/library/Zend</pre></div></div>

<p>into</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">/home/jkendall/public_html/ZeroToZF/library</pre></div></div>

<p>When done properly, the full path to Zend/Log.php in your application should be</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">/home/&lt;username&gt;/public_html/ZeroToZF/library/Zend/Log.php</pre></div></div>

<p>Sweet!  We&#8217;re almost there.</p>
<p><strong>Creating a Virtual Host</strong></p>
<p>There are a decent number of steps here, but executing them is straightforward, so bear with me.  Also, a lot of these steps need to be executed from the command line.  <a href="http://idioms.thefreedictionary.com/Forewarned+is+forearmed">Forewarned is forearmed</a> and all that.</p>
<p>If you have not done so already, open the terminal application (Applications -&gt; Accessories -&gt; Terminal) and cd into <code>/etc/apache2/sites-available</code>.  Here you&#8217;ll find virtual host definitions.  Most likely you&#8217;ll see a file named default (or possibly 000-default).  Peek at that if you&#8217;d like to see an example of a virtual host, but what we&#8217;re going to put together is a lot simpler.</p>
<p><strong>IMPORTANT</strong>: Since <code>/etc</code> and its subfolders are owned by root, you&#8217;ll need to run all of the following commands as root.  We&#8217;ll be using both the <a href="https://help.ubuntu.com/community/RootSudo#sudo">sudo</a> and the <a href="https://help.ubuntu.com/community/RootSudo#Graphical sudo">gksudo</a> commands to do that.</p>
<p>After using the command line to cd into <code>/etc/apache2/sites-available</code>, execute the following command to create your own vhost file:</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">/etc/apache2/sites-available$ gksudo gedit ZeroToZf.local</pre></div></div>

<p>The file extension isn&#8217;t important, a lot of people use .conf, but I like to use .local for sites hosted locally.</p>
<p>Once you&#8217;ve got gedit open, the file&#8217;s contents should look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">&lt;VirtualHost *:80&gt;
        ServerName zerotozf.local
        DocumentRoot /home/jkendall/public_html/ZeroToZF/public
&lt;/VirtualHost&gt;</pre></div></div>

<p>Of course, jkendall should be replaced by your username.</p>
<p>Next we need to make your new virtual host file available to Apache.  You can do that by executing</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">/etc/apache2/sites-available$ sudo a2ensite ZeroToZF.local</pre></div></div>

<p>If everything worked properly, you should see the following message:</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">Enabling site ZeroToZF.local.
Run '/etc/init.d/apache2 reload' to activate new configuration!</pre></div></div>

<p>Next, edit your <code>/etc/hosts</code> file by adding <code>zerotozf.local</code> like so:</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">/etc/apache2/sites-available$ gksudo gedit /etc/hosts</pre></div></div>

<p>Add the following line below the entry for localhost</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">127.0.0.1 zerotozf.local</pre></div></div>

<p><strong>NOTE</strong>: When adding a host to /etc/hosts, the case of the hostname is not important.  I like to add hostnames in lowercase, but you can add it as ZeroToZF.local if you like.</p>
<p>Save the file, close gedit, and execute</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">/etc/apache2/sites-available$ sudo /etc/init.d/apache2 reload</pre></div></div>

<p>You should see the message</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">* Reloading web server config apache2                                          [ OK ]</pre></div></div>

<p>Open up your browser and visit <a href="http://zerotozf.local">http://zerotozf.local</a>.  You should see the Zend Framework welcome screen.</p>
<p>Congrats!  You did it!</p>
<p><strong>Next Steps</strong></p>
<p>Now that you&#8217;ve got your first project up and running, you&#8217;re probably going to want to actually do something with it.  I&#8217;d highly recommend heading over to <a href="http://akrabat.com/">Rob Allen&#8217;s site</a> for his excellent <a href="http://akrabat.com/zend-framework-tutorial/">Getting Started with Zend Framework</a> tutorial.  It&#8217;s the same tutorial I followed when I first started with the framework (an earlier version, of course), and I&#8217;ve referred back to it many times since.</p>
<p><strong>Wrapping Up</strong></p>
<p>Getting started with the Zend Framework was a challenging proposition for me.  Just getting to the point where I could start working on a project was sometimes maddening as a result of all the steps involved, many of which had nothing to do with the framework, at least not directly.  I&#8217;ve tried, hopefully successfully, to lay out all the steps you might need to get from zero to a Zend Framework project in (about) 10 minutes.</p>
<p>Working with the Zend Framework has been a rich and rewarding experience for me.  I&#8217;ve learned <em>almost</em> everything I know about best practices, object oriented programming, *nix, and Apache (to name just a few) as a direct or indirect result of the Zend Framework.  I wouldn&#8217;t have been able to do that without the help of the Zend Framework community.  I won&#8217;t name names, as I&#8217;m sure to unintentionally leave out some great folks, so I&#8217;ll throw you a link to the <a href="http://n4.nabble.com/Zend-Framework-Community-f634137.html">Zend Framework Community Forum</a>.  Head over there when you&#8217;ve got a Zend Framework problem you just can&#8217;t solve on your own.  You&#8217;ll meet some great folks and learn a lot in the process.  They&#8217;ve saved my bacon more than once.</p>
<p>If I&#8217;ve left out any steps or made some egregious error, please let me know in the comments.  I&#8217;ll be grateful and post updates and corrections as soon as possible.</p>
<p><strong>Resources</strong></p>
<ul>
<li>How to <a href="https://help.ubuntu.com/9.10/serverguide/C/php5.html">install PHP in Ubuntu</a></li>
<li>How to <a href="https://help.ubuntu.com/9.10/serverguide/C/httpd.html">install Apache in Ubuntu</a></li>
<li><a href="http://www.ghacks.net/2009/12/05/enable-mod_rewrite-in-a-ubuntu-server/">Enabling mod_rewrite</a></li>
<li>A great <a href="http://www.sucka.net/2009/09/ubuntu-command-line-tip-1-%E2%80%93-aliases/">bash aliases</a> tutorial for Ubuntu</li>
<li>Setting up <a href="http://www.armando.ws/2009/05/how-to-set-up-zend_tool-on-windows/comment-page-1/">Zend Tool on Windows</a></li>
<li>The <a href="http://n4.nabble.com/Zend-Framework-Community-f634137.html">Zend Framework Community Forum</a> on Nabble</li>
<li><a href="http://akrabat.com/zend-framework-tutorial/">Getting Started with Zend Framework</a> by Rob Allen</li>
</ul>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2010/04/17/from-zero-to-zend-framework-project-in-10-minutes/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>DIY Network Monitoring and Logging with Perl</title>
		<link>http://www.jeremykendall.net/2009/10/27/network-monitoring-and-logging-with-perl/</link>
		<comments>http://www.jeremykendall.net/2009/10/27/network-monitoring-and-logging-with-perl/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 04:12:17 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[att]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=223</guid>
		<description><![CDATA[The Problem I&#8217;ve been having trouble with my AT&#038;T DSL installation here at the new place. My internet connection will come and go, seemingly at random, and for random amounts of time. I tweeted about it once already, hoping that sharing my frustration with the world might make me feel a little better. Nope. Didn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The Problem</strong></p>
<p>I&#8217;ve been having trouble with my AT&#038;T DSL installation here at the new place.  My internet connection will come and go, seemingly at random, and for random amounts of time.  I <a href="http://twitter.com/JeremyKendall/status/5193232511">tweeted about it</a> once already, hoping that sharing my frustration with the world might make me feel a little better.  Nope.  Didn&#8217;t work.</p>
<p>I&#8217;ve had this problem before with AT&#038;T, when I got DSL installed at my last place.  Things were rough for a while, and then somehow they seemed to straighten out on their own.  I&#8217;m not crossing my fingers that I&#8217;ll have such luck again.</p>
<p><strong>What&#8217;s Really Going On?</strong></p>
<p>I decided to try and log the bounces so that I could get a better feel for what was going on.  I couldn&#8217;t find exactly what I wanted online (and I couldn&#8217;t always get online), so I whipped up a <a href="http://en.wikipedia.org/wiki/Perl">Perl</a> script to keep an eye on my connection for me.</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;"># Test AT&amp;T DSL connectivity. If network is down, log to file</span>
<span style="color: #666666; font-style: italic;"># Will use log info as ammo when I call tech support.</span>
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> warnings<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Log<span style="color: #339933;">::</span><span style="color: #006600;">Handler</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Ping</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Sys<span style="color: #339933;">::</span><span style="color: #006600;">HostIP</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$log</span> <span style="color: #339933;">=</span> Log<span style="color: #339933;">::</span><span style="color: #006600;">Handler</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$log</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">add</span><span style="color: #009900;">&#40;</span>
    file <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#123;</span>
        filename <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;/var/log/testNetwork.log&quot;</span><span style="color: #339933;">,</span>
        mode     <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;append&quot;</span><span style="color: #339933;">,</span>
        maxlevel <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;info&quot;</span><span style="color: #339933;">,</span>
        minlevel <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;warning&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$ipAddress</span>          <span style="color: #339933;">=</span> Sys<span style="color: #339933;">::</span><span style="color: #006600;">HostIP</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">ip</span><span style="color: #339933;">;</span> 
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$matchHomeNetworkIp</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$ipAddress</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/^192\.168\.10\.\d{1,3}$/</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$matchHomeNetworkIp</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #0000ff;">$log</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">debug</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Current IP $ipAddress does not appear to be on your home network. Exiting&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$router</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;192.168.10.1&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$modem</span>  <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;192.168.1.254&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$host</span>   <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;www.yahoo.com&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$p</span> <span style="color: #339933;">=</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Ping</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;icmp&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$p</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">ping</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$router</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #0000ff;">$log</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">warning</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Router $router is unreachable. Exiting.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$p</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">ping</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$modem</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #0000ff;">$log</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">warning</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Modem $modem is unreachable. Exiting.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$p</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">ping</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$host</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #0000ff;">$log</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">info</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;$host is reachable&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #0000ff;">$log</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">warning</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;$host is NOT reachable&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">$p</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Code Review</strong></p>
<p>While the code is simple, there are a couple of things to note.  First, you&#8217;ll notice I&#8217;ve baked my router&#8217;s IP range into a <a href="http://en.wikipedia.org/wiki/Regular_expressions">regex</a> that will tell me if I can even get that far.  If not, there&#8217;s no point in checking anything else, so I exit.</p>
<p>Next I fire up <a href="http://search.cpan.org/~smpeters/Net-Ping-2.36/lib/Net/Ping.pm">Net::Ping</a>.  While there are six different options for Net::Ping->new(), the only one that worked for me was icmp.  Icmp requires root privileges to run, so keep that in mind. </p>
<p>Next I <a href="http://en.wikipedia.org/wiki/Ping">ping</a> important parts of the home network.  I want to be sure that my wireless router and the DSL modem are both online before I try and ping an external site.</p>
<p>If everything looks good on the inside, I&#8217;ll ping an external site and see if I get anything back.  You&#8217;ll notice that I&#8217;ve added a second parameter to ping this time.  That&#8217;s the number of seconds I&#8217;ll wait for a response before failing (of course, it is possible that Yahoo! won&#8217;t respond to a ping request here and there, making it appear as if the network is down, but I&#8217;m not so worried about a false positive or two).</p>
<p><strong>Implementation</strong></p>
<p>Now that I&#8217;ve got this nifty script to tell me about the health of my network, I need a way to run it on a regular basis.  It&#8217;s important to run it as root because of the icmp ping.  <a href="http://en.wikipedia.org/wiki/Cron">Cron</a> was the obvious solution, as it&#8217;s purpose is to run commands on a predetermined schedule. As long as I add the script to root&#8217;s cron file, it&#8217;ll run with root permissions.  Sweet!</p>
<p>Adding my script to the root cron file was as easy as issuing</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">sudo crontab -e</pre></div></div>

<p> and adding the following line:</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">*/1 * * * * perl /home/jkendall/dev/perl/util/testNetwork.pl</pre></div></div>

<p>With my cron file in place, my script fires off every minute.  As long as I&#8217;m on my home network, I&#8217;ll get a log entry telling me whether or not the network is up.</p>
<p><strong>Keeping an Eye on the Results</strong></p>
<p>Now that my script is actually doing something, I need to be able to parse the results.  A quick</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">tail -f /var/log/testNetwork.log</pre></div></div>

<p> allows me to keep track of the results as they come in.  I&#8217;m also using grep to pull all of the &#8220;NOT reachable&#8221; lines out of the log file with</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">grep -n --color &quot;NOT reachable&quot; /var/log/testNetwork.log</pre></div></div>

<p>  I could always just open the log file and read through it from top to bottom, but what fun is that?  A decent tool to parse the fail log is going to be necessary, but I haven&#8217;t whipped it up yet. </p>
<p><strong>Teh Suck</strong></p>
<p>As I&#8217;ve been writing this blog post, I&#8217;ve been running this script in the background.  Here are the results of an hour or so of logging (all times are CDT):</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">Oct 27 21:03:33 [INFO] www.yahoo.com is reachable
Oct 27 21:04:03 [WARNING] Router 192.168.10.1 is unreachable. Exiting.
Oct 27 21:05:02 [INFO] www.yahoo.com is reachable
Oct 27 21:06:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:07:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:08:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:09:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:10:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:11:02 [INFO] www.yahoo.com is reachable
Oct 27 21:12:01 [INFO] www.yahoo.com is reachable
Oct 27 21:13:01 [INFO] www.yahoo.com is reachable
Oct 27 21:14:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:15:32 [INFO] www.yahoo.com is reachable
Oct 27 21:16:01 [INFO] www.yahoo.com is reachable
Oct 27 21:17:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:18:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:19:11 [INFO] www.yahoo.com is reachable
Oct 27 21:20:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:21:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:22:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:23:03 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:24:01 [INFO] www.yahoo.com is reachable
Oct 27 21:25:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:26:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:27:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:28:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:29:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:30:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:31:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:32:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:33:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:34:21 [INFO] www.yahoo.com is reachable
Oct 27 21:35:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:36:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:37:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:38:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:39:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:40:12 [INFO] www.yahoo.com is reachable
Oct 27 21:41:01 [INFO] www.yahoo.com is reachable
Oct 27 21:42:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:43:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:44:31 [INFO] www.yahoo.com is reachable
Oct 27 21:45:01 [INFO] www.yahoo.com is reachable
Oct 27 21:46:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:47:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:48:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:49:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:50:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:51:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:52:42 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:53:41 [WARNING] www.yahoo.com is NOT reachable
Oct 27 21:54:01 [INFO] www.yahoo.com is reachable</pre></div></div>

<p>Weak sauce, man.  Weak sauce.</p>
<p><strong>Wrapping Up</strong></p>
<p>Having this script handy doesn&#8217;t make the <a href="http://failblog.org/">fail</a> any better, but at least I know a little more about what&#8217;s happening.  I&#8217;d like to think it&#8217;ll give me some leverage when I try to get this worked out with AT&#038;T, but who knows.  I&#8217;ll let you know how it goes.</p>
<p>[<strong>Update</strong>: post title change to better reflect content]</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2009/10/27/network-monitoring-and-logging-with-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZF-7984 &#8211; Zend_Tool Exits with Fatal Errors after installing PHPUnit 3.4.0+</title>
		<link>http://www.jeremykendall.net/2009/10/21/zf-7984-zend_tool-exits-with-fatal-errors-after-installing-phpunit-3-4-0/</link>
		<comments>http://www.jeremykendall.net/2009/10/21/zf-7984-zend_tool-exits-with-fatal-errors-after-installing-phpunit-3-4-0/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 15:28:14 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=197</guid>
		<description><![CDATA[I&#8217;m lucky enough to have made it to ZendCon again this year, and I&#8217;m having a blast learning new stuff, hanging out with old friends, making new friends, and generally grabbing up as much schwag as possible. One of the topics that I&#8217;m most interested in is unit testing, specifically unit testing Zend Framework MVC [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m lucky enough to have made it to <a href="http://zendcon.com/">ZendCon</a> again this year, and I&#8217;m having a blast learning new stuff, hanging out with old friends, making new friends, and generally grabbing up as much schwag as possible.</p>
<p>One of the topics that I&#8217;m most interested in is unit testing, specifically unit testing <a href="http://framework.zend.com/">Zend Framework</a> MVC apps.  While there&#8217;s a lot I have yet to learn on that topic, I ran into a bug last night that I wanted to let you know about.</p>
<p>In preparation to dig into ZF unit testing, I updated my install of <a href="http://www.phpunit.de/">PHPUnit</a> to the latest version (currently 3.4.1, installed via <a href="http://pear.php.net/">PEAR</a>).  When I tried to create a new ZF project using <a href="http://framework.zend.com/manual/en/zend.application.quick-start.html#zend.application.quick-start.zend-tool">Zend_Tool</a>, I received the following error:</p>

<div class="wp_syntax"><div class="code"><pre class="code" style="font-family:monospace;">jkendall@san-diego:~/dev/www$ zf create project asplode
&nbsp;
Fatal error: Cannot redeclare class phpunit_framework_testsuite_dataprovider in /usr/share/php/PHPUnit/Framework/TestSuite/DataProvider.php on line 64
&nbsp;
Call Stack:
    0.0020     111440   1. {main}() /usr/share/phplib/ZendFramework-1.9.3PL1/bin/zf.php:0
    0.0020     111560   2. zf_main() /usr/share/phplib/ZendFramework-1.9.3PL1/bin/zf.php:23
    0.0220     686832   3. zf_run($zfConfig = array ('HOME' =&gt; '/home/jkendall')) /usr/share/phplib/ZendFramework-1.9.3PL1/bin/zf.php:36
    0.0221     686952   4. Zend_Tool_Framework_Client_Console::main($options = array ()) /usr/share/phplib/ZendFramework-1.9.3PL1/bin/zf.php:214
    0.0221     687440   5. Zend_Tool_Framework_Client_Abstract-&gt;dispatch() /usr/share/phplib/ZendFramework-1.9.3PL1/library/Zend/Tool/Framework/Client/Console.php:96
    0.0222     687560   6. Zend_Tool_Framework_Client_Abstract-&gt;initialize() /usr/share/phplib/ZendFramework-1.9.3PL1/library/Zend/Tool/Framework/Client/Abstract.php:209
    0.0296     866600   7. Zend_Tool_Framework_Loader_Abstract-&gt;load() /usr/share/phplib/ZendFramework-1.9.3PL1/library/Zend/Tool/Framework/Client/Abstract.php:118
    0.4100    2729736   8. include_once('/usr/share/php/PHPUnit/Framework/TestSuite/DataProvider.php') /usr/share/phplib/ZendFramework-1.9.3PL1/library/Zend/Tool/Framework/Loader/Abstract.php:90
&nbsp;
jkendall@san-diego:~/dev/www$</pre></div></div>

<p>As it turns out, this is a known bug in version 1.9.0+ of the Zend Framework.  See <a href="http://framework.zend.com/issues/browse/ZF-7894">ZF-7894</a> in the ZF issue tracker for full details.  While this issue is not yet resolved in the tracker, <a href="http://raphaelstolt.blogspot.com/">Raphael Stolt</a> has <a href="http://framework.zend.com/issues/browse/ZF-7894?focusedCommentId=34826&amp;page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_34826">provided a workaround</a> in the form of a diff file attached to the issue.  While your mileage may vary, the patch worked perfectly for me.  I&#8217;m able to go ahead and dive into unit testing my Zend Framework applications.</p>
<p><strong>UPDATE</strong>: <a href="http://framework.zend.com/issues/browse/ZF-7894">ZF-7894</a> was resolved during Bug Hunt days this week.  Many thanks to Benjamin Eberlei!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2009/10/21/zf-7984-zend_tool-exits-with-fatal-errors-after-installing-phpunit-3-4-0/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Help Fight Cancer by Supporting Linda Rambin&#8217;s Art</title>
		<link>http://www.jeremykendall.net/2009/02/23/help-fight-cancer-by-supporting-linda-rambins-art/</link>
		<comments>http://www.jeremykendall.net/2009/02/23/help-fight-cancer-by-supporting-linda-rambins-art/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 13:50:28 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[cancer]]></category>
		<category><![CDATA[etsy]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=188</guid>
		<description><![CDATA[A Louisiana artist, Linda Rambin has been painting for approximately six years. Unfortunately, her painting career has been postponed indefinitely due to the extremely aggressive form of brain cancer she is currently fighting, glioblastoma multiforme. Diagnosed in early October 2008, Linda has had brain surgery, chemotherapy and radiation, and she is currently participating in a [...]]]></description>
			<content:encoded><![CDATA[<p>A Louisiana artist, Linda Rambin has been painting for approximately six years. Unfortunately, her painting career has been postponed indefinitely due to the extremely aggressive form of brain cancer she is currently fighting, <a href="http://en.wikipedia.org/wiki/Glioblastoma_multiforme">glioblastoma multiforme</a>. Diagnosed in early October 2008, Linda has had brain surgery, chemotherapy and radiation, and she is currently participating in a clinical trial that is causing her a great deal of fatigue and a host of other side effects.</p>
<p>The cost of Linda&#8217;s treatment and care are exorbitant.  Just one of the medications for the clinical trial costs $4,500 per month, and that&#8217;s the co-pay!  You can help support Linda and the Rambin family by spreading the word about <a href="http://lindarambin.etsy.com">Paintings by Linda</a>, a collection of Linda&#8217;s original paintings on <a href="http://www.etsy.com">Etsy.com</a>.  The more people that visit <a href="http://lindarambin.etsy.com">Paintings by Linda</a>, the more of her paintings will sell, helping the family to defray the cost of her treatment. (If you&#8217;re sharing about Linda&#8217;s store on <a href="http://www.twitter.com">Twitter</a>, please use the hashtag <a href="http://search.twitter.com/search?q=%23charlysmom">#charlysmom</a>. Linda&#8217;s daughter <a href="http://twitter.com/CharlyRambin">Charly</a> has worked tirelessly on both Linda&#8217;s Etsy store and Linda&#8217;s Caring Bridge website.)</p>
<p>If you are interested in learning more about her story, please visit <a href="http://www.caringbridge.org/visit/lindarambin">Linda&#8217;s Caring Bridge website.</a> There you will find a more detailed account of her struggle, a daily blog, a guestbook for comments, and a photos page.</p>
<p>Please keep Linda in your thoughts as you enjoy her unique and vivid paintings. They have brought her much joy, and we hope they will do the same for you.</p>
<table style="text-align: center;">
<tr>
<td><object type="application/x-shockwave-flash" data="http://www.etsy.com/flash/spots/etsy_mini.swf?user_id=6963380&#038;user_name=lindarambin&#038;item_source=shop&#038;item_size=gallery&#038;rows=3&#038;columns=3" width="538" height="546"><param name="movie" value="http://www.etsy.com/flash/spots/etsy_mini.swf?user_id=6963380&#038;user_name=lindarambin&#038;item_source=shop&#038;item_size=gallery&#038;rows=3&#038;columns=3" /></object></td>
</tr>
<tr>
<td><a style="color:#D35701; font-size: 14px; text-decoration: none; font-family:Arial, Helvetica, sans-serif; font-weight:bold" href="http://www.etsy.com">Etsy: Your place to buy &amp; sell all things handmade</a><br/><a style="font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#0192B5; text-decoration: none;" href="http://lindarambin.etsy.com">lindarambin.etsy.com</a></td>
</tr>
</table>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2009/02/23/help-fight-cancer-by-supporting-linda-rambins-art/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Allow Myself to Introduce . . . Myself</title>
		<link>http://www.jeremykendall.net/2009/02/17/allow-myself-to-introduce-myself/</link>
		<comments>http://www.jeremykendall.net/2009/02/17/allow-myself-to-introduce-myself/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 16:16:06 +0000</pubDate>
		<dc:creator>Jeremy Kendall</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.jeremykendall.net/?p=186</guid>
		<description><![CDATA[www.youtube.com/watch?v=AOvkcIhzGvI]]></description>
			<content:encoded><![CDATA[<p><span class="youtube">
<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/AOvkcIhzGvI&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1" />
<param name="allowFullScreen" value="true" />
<embed wmode="transparent" src="http://www.youtube.com/v/AOvkcIhzGvI&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0?rel=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355"></embed>
<param name="wmode" value="transparent" />
</object>
</span><p><a href="http://www.youtube.com/watch?v=AOvkcIhzGvI">www.youtube.com/watch?v=AOvkcIhzGvI</a></p></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeremykendall.net/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jeremykendall.net/2009/02/17/allow-myself-to-introduce-myself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

