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

<channel>
	<title>GraysUnderground.com</title>
	<link>http://www.graysunderground.com</link>
	<description>Gray's Tech Blog</description>
	<pubDate>Sat, 24 May 2008 21:58:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.3</generator>
	<language>en</language>
			<item>
		<title>PHP Frameworks</title>
		<link>http://www.graysunderground.com/2008/05/24/php-frameworks/</link>
		<comments>http://www.graysunderground.com/2008/05/24/php-frameworks/#comments</comments>
		<pubDate>Sat, 24 May 2008 21:46:33 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[PHP]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/2008/05/24/php-frameworks/</guid>
		<description><![CDATA[Been thinking of using a PHP framework found a very interesting slideshow on the Zend Framework. Any opinions?





 &#124; View &#124; Upload your own


]]></description>
			<content:encoded><![CDATA[<p>Been thinking of using a PHP framework found a very interesting slideshow on the Zend Framework. Any opinions?</p>
<div style="width:425px;text-align:left" id="__ss_62816">
<object style="margin:0px" height="355" width="425">
<param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=phpbootcamp-zend-framework544"/>
<param name="allowFullScreen" value="true"/>
<param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=phpbootcamp-zend-framework544" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/thomasw/phpbootcamp-zend-framework" title="View this slideshow on SlideShare">View</a> | <a href="http://www.slideshare.net/upload">Upload your own</a></div>
</div>
<p><img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/CIMP/bT*xJmx*PTEyMTE1Nzg3ODg5MzMmcHQ9MTIxMTU3ODc5MzE3OCZwPTEwMTkxJmQ9Jm49Jmc9Mg==.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2008/05/24/php-frameworks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Top 10 Scalability Mistakes with PHP</title>
		<link>http://www.graysunderground.com/2008/05/23/top-10-scalability-mistakes-with-php/</link>
		<comments>http://www.graysunderground.com/2008/05/23/top-10-scalability-mistakes-with-php/#comments</comments>
		<pubDate>Fri, 23 May 2008 21:02:02 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[PHP]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/2008/05/23/top-10-scalability-mistakes-with-php/</guid>
		<description><![CDATA[Found a great slide that talks about the top 10 mistakes when programming scalable applications with PHP. Discusses everything from hardware to AJAX. The AJAX piece I found to be very interesting. Check it out and give me your thoughts.





 &#124; View &#124; Upload your own

]]></description>
			<content:encoded><![CDATA[<p>Found a great slide that talks about the top 10 mistakes when programming scalable applications with PHP. Discusses everything from hardware to AJAX. The AJAX piece I found to be very interesting. Check it out and give me your thoughts.</p>
<div style="width:425px;text-align:left" id="__ss_157937">
<object style="margin:0px" width="425" height="355">
<param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=top-10-scalability-mistakes-1194421978989888-1"/>
<param name="allowFullScreen" value="true"/>
<param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=top-10-scalability-mistakes-1194421978989888-1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/coogle/top-10-scalability-mistakes?src=embed" title="View Top 10 Scalability Mistakes on SlideShare">View</a> | <a href="http://www.slideshare.net/upload?src=embed">Upload your own</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2008/05/23/top-10-scalability-mistakes-with-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quick and easy PHP function to Validate email strings.</title>
		<link>http://www.graysunderground.com/2008/04/25/quick-and-easy-php-function-to-validate-email-strings/</link>
		<comments>http://www.graysunderground.com/2008/04/25/quick-and-easy-php-function-to-validate-email-strings/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 16:52:09 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[PHP]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/2008/04/25/quick-and-easy-php-function-to-validate-email-strings/</guid>
		<description><![CDATA[Quick and easy way to validate email strings. I picked this bit of code up from somewhere, not sure where&#8230;.Think it was the Zend site. Credit goes to the original unknown author, not me.
&#60;?php
 function is_email($address) {
 $rc1 = (ereg(&#8216;^[-!#$%&#38;&#8217;*+./0-9=?A-Z^_`a-z{&#124;}~]+&#8217;.
&#8216;@&#8217;.
&#8216;[-!#$%&#38;&#8217;*+\/0-9=?A-Z^_`a-z{&#124;}~]+.&#8216;.
&#8216;[-!#$%&#38;&#8217;*+\./0-9=?A-Z^_`a-z{&#124;}~]+$&#8217;,
 $address));
 $rc2 = (preg_match(&#8216;/.+.ww+$/&#8217;,$address));
return ($rc1 &#38;&#38; $rc2);
}
 ?&#62;
]]></description>
			<content:encoded><![CDATA[<p>Quick and easy way to validate email strings. I picked this bit of code up from somewhere, not sure where&#8230;.Think it was the Zend site. Credit goes to the original unknown author, not me.</p>
<div class="codesnip-container" ><font color="#000000"><font color="#0000bb">&lt;?php<br />
</font> <font color="#007700">function</font> <font color="#0000bb">is_email</font><font color="#007700">(</font><font color="#0000bb">$address</font><font color="#007700">) {<br />
</font> <font color="#0000bb">$rc1</font> <font color="#007700">= (</font><font color="#0000bb">ereg</font><font color="#007700">(</font><font color="#dd0000">&#8216;^[-!#$%&amp;&#8217;</font><font color="#007700">*+./</font><font color="#0000bb">0</font><font color="#007700">-</font><font color="#0000bb">9</font><font color="#007700">=?</font><font color="#0000bb">A</font><font color="#007700">-</font><font color="#0000bb">Z</font><font color="#007700">^</font><font color="#0000bb">_</font><font color="#007700">`</font><font color="#0000bb">a-z</font><font color="#007700">{</font><font color="#0000bb">|</font><font color="#007700">}</font><font color="#0000bb">~</font><font color="#007700">]</font><font color="#0000bb">+&#8217;.<br />
&#8216;@&#8217;.<br />
&#8216;</font><font color="#007700">[</font><font color="#0000bb">-!#</font><font color="#007700">$</font><font color="#0000bb">%&amp;&#8217;*+\/0-9=?A-Z^_</font><font color="#007700">`</font><font color="#0000bb">a</font><font color="#007700">-</font><font color="#0000bb">z</font><font color="#007700">{|}~]+.</font><font color="#dd0000">&#8216;.<br />
&#8216;</font><font color="#007700">[-!</font><font color="#ff8000">#$%&amp;&#8217;*+\./0-9=?A-Z^_`a-z{|}~]+$&#8217;,<br />
</font> <font color="#0000bb">$address</font><font color="#007700">));<br />
</font> <font color="#0000bb">$rc2</font> <font color="#007700">= (</font><font color="#0000bb">preg_match</font><font color="#007700">(</font><font color="#dd0000">&#8216;/.+.ww+$/&#8217;</font><font color="#007700">,</font><font color="#0000bb">$address</font><font color="#007700">));<br />
return (</font><font color="#0000bb">$rc1</font> <font color="#007700">&amp;&amp;</font> <font color="#0000bb">$rc2</font><font color="#007700">);<br />
}<br />
</font> <font color="#0000bb">?&gt;</font></font></div>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2008/04/25/quick-and-easy-php-function-to-validate-email-strings/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quick tip for you PHP/Opera Users!</title>
		<link>http://www.graysunderground.com/2008/04/24/quick-tip-for-you-phpopera-users/</link>
		<comments>http://www.graysunderground.com/2008/04/24/quick-tip-for-you-phpopera-users/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 16:49:21 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Opera]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/2008/04/24/quick-tip-for-you-phpopera-users/</guid>
		<description><![CDATA[  In Opera, go to Tools &#8211;&#62; Preferences, and click on the search tab. You  should &#8220;Add a new search engine&#8221; and fill in the blanks. Here is what I use:.

Name: PHP
Keyword: p
Address: http://www.php.net/search.php
Query string: pattern=%s&#38;show=quickref

  You have to check &#8220;Use POST&#8221; to be able to type in a query string.
Click OK, [...]]]></description>
			<content:encoded><![CDATA[<p>  In Opera, go to Tools &#8211;&gt; Preferences, and click on the search tab. You  should &#8220;Add a new search engine&#8221; and fill in the blanks. Here is what I use:.</p>
<ul>
<li>Name: PHP</li>
<li>Keyword: p</li>
<li>Address: http://www.php.net/search.php</li>
<li>Query string: pattern=%s&amp;show=quickref</li>
</ul>
<p class="note">  You have to check &#8220;Use POST&#8221; to be able to type in a query string.</p>
<p>Click OK, and then click Ok.</p>
<p>From now on you will be able to search  the PHP function list by typing &#8220;p function&#8221; in the address bar. You can change &#8220;quickref&#8221; to &#8220;all&#8221; if you want to  search all php.net sites, or &#8220;manual&#8221; for the online documentation.</p>
<p>Enjoy! I orignally picked this tip up from PHP.net, don&#8217;t know the exact URL tho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2008/04/24/quick-tip-for-you-phpopera-users/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Make sure you hide your Apache headers!!</title>
		<link>http://www.graysunderground.com/2008/02/08/make-sure-you-hide-your-apache-headers/</link>
		<comments>http://www.graysunderground.com/2008/02/08/make-sure-you-hide-your-apache-headers/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 15:10:48 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[Apache]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/2008/02/08/make-sure-you-hide-your-apache-headers/</guid>
		<description><![CDATA[When  Apache  generates any web pages or error pages, some important information about the version and other details implemented on the system are displayed in th web site server header. For example, the information text may be like this:
 Server: Apache/1.3.37 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 FrontPage/5.0.2.2635.SR1.2 mod_ssl/2.8.28 OpenSSL/0.9.7a PHP-CGI/0.1b
 Server: Apache/2.0.53 (Ubuntu) PHP/4.3.10-10ubuntu4 [...]]]></description>
			<content:encoded><![CDATA[<p>When  Apache <a href="http://amazon.com/gp/product/1576103919?ie=UTF8&amp;tag=techgadgetrev-20&amp;link_code=em1&amp;camp=212341&amp;creative=384061&amp;creativeASIN=1576103919&amp;adid=7e53cf3c-edcc-4185-859e-394fc11260a4" title="1576103919" name="1576103919" id="amzn_cl_link_0" style="border-bottom: 1px solid; color: #0000ff; text-decoration: underline; padding-bottom: 1px"></a> generates any web pages or error pages, some important information about the version and other details implemented on the system are displayed in th web site server header. For example, the information text may be like this:</p>
<blockquote><p> Server: Apache/1.3.37 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 FrontPage/5.0.2.2635.SR1.2 mod_ssl/2.8.28 OpenSSL/0.9.7a PHP-CGI/0.1b</p></blockquote>
<blockquote><p> Server: Apache/2.0.53 (Ubuntu) PHP/4.3.10-10ubuntu4 Server at xx.xx.xx.xx Port 80</p></blockquote>
<p><span id="more-4257"></span><br />
The line in the server header expose important version and variant information about the Linux operating system and Apache software used on the machine, indirectly expose the possible security holes that are existed to the hackers, or at least make malicious attackers easier to identify your system for available attack points.</p>
<p>To ensure that the Apache HTTP web server does not broadcast this message to the whole world publicly and fix possible security issue, modify these two directives <strong>ServerTokes</strong> and <strong>ServerSignature</strong> in httpd.conf<nobr></nobr> file.</p>
<ol>
<li>Login as root user or perform a sudo to the web server.</li>
<li>Open and edit httpd.conf or apache2.conf (in Apache 2) with vi or other text editor. The Apache  config <nobr></nobr> normally located in /etc/httpd/conf/ or /etc/apache2/ or /etc/apache/ (for Apache1.3) depending on which Unix you’re using.</li>
<li>Locate the line with <strong>ServerTokens</strong>. You can perform a search by typing “/ServerTokes” and hit Enter.</li>
<li>In Apache 1.3, you will likely to see a line starts with <strong>#ServerTokes Full</strong> In this case, remove or delete the # character (by pressing d key). Also modify the Full to become Prod (press r key to replace one character, or R to replace multiple characters), so that the line becomes <strong>ServerTokens Prod</strong>. In Apache 2.0 or 2.2, the line normally does not exist. So the search will fail. In this case, go to the bottom of config file, and add the new line with the following text. You can add new line by pressing o key.ServerTokens Prod</li>
<li>Next, search for ServerSignature. In Apache13, the line should just above the line of ServerTokens. Edit the line so that it looks like this, and in Apache2 which doesn’t already have this line, add in at new one.ServerSignature Off</li>
<li>By now the Apache configuration file should have this two directives set as below:ServerSignature Off<br />
ServerTokens ProdThe first line “ServerSignature Off” instructs Apache not to display a trailing footer line under server-generated documents (error messages, mod_proxy ftp directory listings, mod_info output, and etc) which displays server version number, ServerName of the serving virtual host, email setting, and creates a “mailto:” reference to the ServerAdmin of the referenced document.The second line “ServerTokens Prod” configures Apache to return only Apache as product in the server response header on very page request, suppressing OS, major and minor version info.</li>
<li>Save and close the config file by pressing Shift-Colon, and then type wq keys, and hit Enter.</li>
<li>Restart Apache. Typical command is <em>service httpd restart</em> or <em>/etc/init.d/apache2 restart</em>.</li>
<li>Now, you will get only the Apache in the server response header:Server: Apache</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2008/02/08/make-sure-you-hide-your-apache-headers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Some Programmer Humor</title>
		<link>http://www.graysunderground.com/2007/12/14/some-programmer-humor/</link>
		<comments>http://www.graysunderground.com/2007/12/14/some-programmer-humor/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 19:18:42 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[Humor]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/2007/12/14/some-programmer-humor/</guid>
		<description><![CDATA[This was sent to me by my brother. I do not in any way take responsibility or claim writing any of it. I am sure this has been passed around on the internet since the internet was conceived as a bunch of tubes.  Thats a bad attempt at humor BTW.
All credits to (unknown) original [...]]]></description>
			<content:encoded><![CDATA[<p>This was sent to me by my brother. I do not in any way take responsibility or claim writing any of it. I am sure this has been passed around on the internet since the internet was conceived as a bunch of tubes.  Thats a bad attempt at humor BTW.</p>
<p align="center"><font face="book antiqua, times new roman, times">All credits to (unknown) original author. Additions made by several others , and by myself</font></p>
<p align="center"><font face="book antiqua, times new roman, times"><big><font color="#ff0080"><big><strong><u>How to Shoot Yourself in the Foot using:</u></strong></big></font><br />
</big></font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Ada</big></strong></u></font><br />
After correctly packing your foot, you attempt to concurrently load the<br />
gun, pull the trigger, scream, and shoot yourself in the foot. When you<br />
try, however, you discover you can&#8217;t because your foot is of the wrong<br />
type.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>APL</big></strong></u></font><br />
You shoot yourself in the foot, then spend all day figuring out how to<br />
do it in fewer characters.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Access</big></strong></u></font><br />
You try to point the gun at your foot, but it shoots holes in all your<br />
Borland distribution diskettes instead.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>ActiveX</big></strong></u></font></font></p>
<p align="left"><font face="book antiqua, times new roman, times">Ole_Registration_Error: Cannot find object &#8220;ActiveFoot&#8221;,download the latest drivers.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Assembler </big></strong></u></font><br />
You try to shoot yourself in the foot, only to discover you must first<br />
invent the gun, the bullet, the trigger, and your foot.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Basic(interpreted)</big></strong></u></font><br />
You shoot yourself in the foot with a water pistol until your foot is<br />
waterlogged and rots off.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Basic(compiled) </big></strong></u></font><br />
You shoot yourself in the foot with a BB using a SCUD missile launcher.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Visual Basic</big></strong></u></font><br />
You&#8217;ll really only appear to have shot yourself in the foot, but you&#8217;ll<br />
have had so much fun doing it that you won&#8217;t care.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><strong><big><u>C</u> </big></strong></font><br />
You shoot yourself in the foot.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><u><font color="#ff0080"><strong><big>C++</big></strong></font></u><br />
You accidentally create a dozen instances of yourself and shoot them all<br />
in the foot. Providing emergency medical care is impossible since you<br />
can&#8217;t tell which are bitwise copies and which are just pointing at<br />
others and saying, &#8220;That&#8217;s me over there.&#8221;</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Cobol </big></strong></u></font><br />
USE HANDGUN.COLT(45), AIM AT LEG.FOOT, THEN WITH ARM.HAND.FINGER ON<br />
HANDGUN.COLT(TRIGGER) PERFORM.SQUEEZE RETURN HANDGUN.COLT(45) TO<br />
HIP.HOLSTER.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Concurrent Euclid</big></strong></u></font><br />
You shoot yourself in somebody else&#8217;s foot.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>dBase </big></strong></u></font><br />
You buy a gun. Bullets are only available from another company and are<br />
promised to work so you buy them. Then you find out that the next<br />
version of the gun is the one that is scheduled to actually shoot<br />
bullets.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Delphi</big></strong></u></font><br />
<font color="#000000">MyFoot := TFoot.Create( Self );<br />
Gun       := TGun.Create( .45, SOFT_NOSED_BULLETS, 6 );<br />
Gun.Aim( Self.MyFoot);<br />
while Gun.BulletsAvailable  do<br />
Gun.Shoot( Self.MyFoot ); </font></font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>FORTH</big></strong></u></font><br />
Foot in yourself shoot.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><strong><big><u>FORTRAN</u> </big></strong></font><br />
You shoot yourself in each toe, iteratively, until you run out of toes,<br />
then you read in the next foot and repeat. If you run out of bullets,<br />
you continue anyway because you have no exception handling ability.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>HTML</big></strong></u></font><br />
&lt;a target=&#8221;http://body/lower-half/leg/foot.appendage&#8221;&gt;Shoot here&lt;/a&gt;</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>HyperTalk</big></strong></u></font><br />
Put the first bullet of the gun into the foot left of leg of you. Answer<br />
the result.</font></p>
<p><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Java </big></strong></u></font><br />
The gun fires just fine, but your foot can&#8217;t figure out what the bullets<br />
are and ignores them.</font></p>
<p><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>LISP</big></strong></u></font><br />
You shoot yourself in the appendage which holds the gun with<br />
which you shoot yourself in the appendage which holds the gun with<br />
which you shoot yourself in the appendage which holds the gun with<br />
which you shoot yourself in the appendage which holds the gun with<br />
which you shoot yourself in the appendage which holds the gun with<br />
which you shoot yourself in the appendage which holds&#8230;</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Microsoft</big></strong></u></font><br />
&gt;ActiveX Object &#8220;Foot&#8221; not found.<br />
&gt;&#8221;Foot&#8221; will possibly be included in the next release.<br />
&gt;You can upgrade for $500.<br />
&gt;Press OK to Retry or Esc to cancel.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Modula2</big></strong></u></font><br />
After realizing that you can&#8217;t actually accomplish anything in this<br />
language, you shoot yourself in the head.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Motif </big></strong></u></font><br />
You spend days writing a UIL description of your foot, the trajectory,<br />
the bullet, and the intricate scrollwork on the ivory handles of the<br />
gun. When you finally get around to pulling the trigger, the gun jams.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><u><font color="#ff0080"><strong><big>NeXT</big></strong></font> </u><br />
We don&#8217;t sell guns anymore, just ammunition.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Paradox</big></strong></u></font><br />
Not only can <u>you</u> shoot yourself in your foot, your users can, too.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Pascal</big></strong></u></font><br />
The compiler won&#8217;t let you shoot yourself in the foot.</font></p>
<p><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Perl</big></strong></u></font><br />
1. You go to CPAN and download Geek, Body::Foot, Gadgets:Gun and<br />
Accesories::Bullet modules.<br />
2. Then:<br />
#!/usr/bin/perl -w<br />
use strict;<br />
use Geek;<br />
use Body::Foot;<br />
use Gadgets::Gun;<br />
use Accesories::Bullet;</font></p>
<p><font face="book antiqua, times new roman, times">my $me = Geek-&gt;getBorn($ENV{&#8217;USER&#8217;});<br />
my $foot = $me-&gt;{parts}-&gt;{feet}-&gt;[0];<br />
die &#8220;No feet (maybe both were cut off?), stopped&#8221;<br />
unless defined $foot;<br />
my $gun = ($me-&gt;{money} &gt;= Gadgets:Gun::price ? Gadgets:Gun-&gt;buy() : Gadgets:Gun-&gt;steal);<br />
my @bullets = map { Accesories::Bullet-&gt;new() } (0..5);</font></p>
<p><font face="book antiqua, times new roman, times">$gun-&gt;load(\@bullets);<br />
while ($gun-&gt;{bullets})<br />
{<br />
$gun-&gt;shoot($foot);<br />
last if $foot-&gt;shot();<br />
}<br />
print &#8220;Looser!\n&#8221; unless $foot-&gt;shot();</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>PL/1 </big></strong></u></font><br />
After consuming all system resources including bullets, the data<br />
processing department doubles its size, acquires 2 new mainframes and<br />
drops the original on your foot.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Prolog</big></strong></u></font><br />
You tell your program that you want to be shot in the foot. The program<br />
figures out how to do it, but the syntax doesn&#8217;t permit it to explain it<br />
to you.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>PHP</big></strong></u></font>  </font></font></font></p>
<p align="left"><font face="book antiqua, times new roman, times">After loading the gun you notice your foot is missing after some noob PHP programmer forgot to validate his input and now some  cross site scripting  has inflitrated and stole all your bullets.</font></p>
<p align="left"> <font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Smalltalk, Actor, et al</big></strong></u></font><br />
After playing with the graphics for 3 weeks, the programming manager<br />
shoots you in the head.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>SNOBOL</big></strong></u></font><br />
If you succeed, shoot yourself in the left foot. If you fail, shoot<br />
yourself in the right foot.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Sun</big></strong></u></font><br />
Just as soon as Solaris gets here, you can shoot yourself anywhere you<br />
want.</font></p>
<p align="left"><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Unix</big></strong></u></font><br />
% ls<br />
foot.c foot.h foot.o toe.c toe.o<br />
% rm * .o<br />
rm: .o: No such file or directory<br />
% ls<br />
%</font></p>
<p><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>XBase</big></strong></u></font><br />
Shooting yourself is no problem. If you want to shoot yourself in the<br />
foot, you&#8217;ll have to use Clipper.</font></p>
<p><font face="book antiqua, times new roman, times"><font color="#ff0080"><u><strong><big>Windows95 </big></strong></u></font><br />
&gt;shoot self in foot<br />
I don&#8217;t see any self here.</font></p>
<p><font face="book antiqua, times new roman, times">&gt;shoot me in foot<br />
There is no you in the foot.</font></p>
<p><font face="book antiqua, times new roman, times">&gt;shoot foot<br />
I don&#8217;t know which foot you&#8217;re talking about.</font></p>
<p><font face="book antiqua, times new roman, times">&gt;shoot left foot<br />
You don&#8217;t have the gun.</font></p>
<p><font face="book antiqua, times new roman, times">&gt;get gun<br />
You take the gun.<br />
You&#8217;re lantern just went out.<br />
* * * YOU HAVE DIED * * *<br />
Press OK to confirm.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2007/12/14/some-programmer-humor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Android SDK Now Available!</title>
		<link>http://www.graysunderground.com/2007/11/12/google-android-sdk-now-available/</link>
		<comments>http://www.graysunderground.com/2007/11/12/google-android-sdk-now-available/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 19:09:26 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[mobile]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/2007/11/12/google-android-sdk-now-available/</guid>
		<description><![CDATA[The Software development kit for google&#8217;s new mobile OS is now available! My hope that by Google realizing a new open source mobile platform that it will change how mobile phones are produced and distributed. To me it seems Google is not trying to directly compete with the iPhone but diminish the iPhone market by [...]]]></description>
			<content:encoded><![CDATA[<p>The Software development kit for google&#8217;s new mobile OS is now <a href="http://code.google.com/android/" target="_blank">available!</a> My hope that by Google realizing a new open source mobile platform that it will change how mobile phones are produced and distributed. To me it seems Google is not trying to directly compete with the iPhone but diminish the iPhone market by making the mobile platform more open and more competitive. How you ask? Well by giving all phone makers the ability to get a hold of a quality, free mobile OS platform that can compete with the apple iPhone, its only a matter of time before the market has a dozen or so Phones that can do what the iPhone can do, better, faster, cheaper and with more style. Open source rules.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2007/11/12/google-android-sdk-now-available/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP - Convert American to European Date Format</title>
		<link>http://www.graysunderground.com/2007/10/16/php-convert-american-to-european-date-format/</link>
		<comments>http://www.graysunderground.com/2007/10/16/php-convert-american-to-european-date-format/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 14:38:45 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[PHP]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/2007/10/16/php-convert-american-to-european-date-format/</guid>
		<description><![CDATA[Found a great little snippet of code to use for converting from American to Euro date format and back.
$date=’12/31/2006’;
print ereg_replace(”([0-9] )/([0-9] )/([0-9] )”,”\\2/\\1/\\3″,$date);

Thanks to last-child.com for the Snippet.
]]></description>
			<content:encoded><![CDATA[<p>Found a great little snippet of code to use for converting from American to Euro date format and back.</p>
<blockquote><div class="codesnip-container" >$date=’12/31/2006’;<br />
print ereg_replace(”([0-9] )/([0-9] )/([0-9] )”,”\\2/\\1/\\3″,$date);</div>
</blockquote>
<p>Thanks to <a href="http://www.last-child.com/convert-american-date-format-to-european-and-vice-versa">last-child.com</a> for the Snippet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2007/10/16/php-convert-american-to-european-date-format/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A new Zune</title>
		<link>http://www.graysunderground.com/2007/10/03/a-new-zune/</link>
		<comments>http://www.graysunderground.com/2007/10/03/a-new-zune/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 17:26:58 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[Zune]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/?p=10</guid>
		<description><![CDATA[Well looks like Microsoft is taking another swing at an mp3 player. Hopefully it will do much better. I do like the fact that the first gen Zunes are getting all of the features of the new zunes. Score one for Microsoft.
&#160;
From Engadget:
Hard drive Zunes

It&#8217;s called the Zune 80 and, shockingly enough, it has 80GB [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Well looks like Microsoft is taking another swing at an mp3 player. Hopefully it will do much better. I do like the fact that the first gen Zunes are getting all of the features of the new zunes. Score one for Microsoft.</p>
<p align="left">&nbsp;</p>
<p align="left">From <a href="http://www.engadget.com/2007/10/02/microsofts-new-zunes-officially-in-80-8-and-4gb-sizes/" target="_blank">Engadget:</a></p>
<p align="left"><strong>Hard drive Zunes</strong></p>
<ul>
<li>It&#8217;s called the Zune 80 and, shockingly enough, it has 80GB of storage.</li>
<li>Uses the new Zune Pad &#8212; four way touch-sensitive d-pad (with up, down, left, and right buttons).</li>
<li>It will sell for $250 (with &#8220;premium&#8221; headphones).</li>
<li>Available only in black (to start).</li>
<li>Screen size has increased to 3.2-inches (from 3-inches). As far as we know the resolution is still QVGA.</li>
<li>Dimensions are 61.1 x 108.2 x 12.9mm (2.4 x 4.25 x 0.5-inches), some 1/3rd smaller than the classic Zune.</li>
<li>The classic Zune will now be known as the Zune 30 &#8212; it&#8217;s not going anywhere. More on that in a sec.</li>
</ul>
<p><strong>New flash Zunes</strong></p>
<ul>
<li>Zune 8 and Zune 4 are the names for the 8 and 4GB flash based models.</li>
<li>Also uses the Zune Pad.</li>
<li>These will sell for $200 and $150 respectively.</li>
<li>Both will be available in pink, green, black, and red.</li>
<li>It will feature a 1.8-inch screen (compare to the nano&#8217;s 2-inch screen).</li>
<li>Dimensions are 41.4 x 91.5 x 8.5mm (1.6 x 3.6 x 0.33-inches) &#8212; compare to the new iPod nano, at 69.8 x 52.3 x 6.5mm (2.75 x 2.0 x 0.26-inches).</li>
</ul>
<p><strong>Everything else</strong></p>
<ul>
<li>New Zunes ship in November, date not yet announced.</li>
<li>All Zunes (including the Zune 30) will have a new, redesigned interface and feature parity. In other words, <strong>early Zune 30 adopters will have all the same software features</strong> as new Zune 80, 8, and 4 users.</li>
<li>Additional native video codecs for h.264 and MPEG-4 &#8212; users no longer need transcode those file types to WMV.</li>
<li>Zune can FINALLY sync video from your Media Center PC! Jeez, took you friggin long enough, guys!</li>
<li>WiFi sync to host computer! Includes moving over music, movies, photos, podcasts, etc.</li>
<li>Podcast support! (Sorry, no over the air downloads &#8212; sync only.) Podcasts can also be shared via WiFi.</li>
<li>The 3&#215;3 song sharing DRM has had its three day restriction removed, but users can still only play files three times.</li>
<li>There is still NO wireless music store.</li>
<li>The Zune software is all new and rewritten, and is supposed to actually be more than a rebadge of WMP10 now. Friggin finally.</li>
<li>The Zune music store is going DRM-free, with over 1m MP3 tracks being made available for download. Other details (like which labels, whether there is a DRM-free upgrade path is for users who&#8217;ve bought music with DRM, price differences, etc.) are not yet revealed.</li>
</ul>
<object height="350" width="425">
<param name="movie" value="http://www.youtube.com/v/Rm-kSGE_g4w"></param>
<param name="wmode" value="transparent"></param>
<p><ibed type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></ibed></p>
</object>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2007/10/03/a-new-zune/feed/</wfw:commentRss>
		</item>
		<item>
		<title>National Broadband Strategy</title>
		<link>http://www.graysunderground.com/2007/10/01/national-broadband-strategy/</link>
		<comments>http://www.graysunderground.com/2007/10/01/national-broadband-strategy/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 17:27:32 +0000</pubDate>
		<dc:creator>Gray</dc:creator>
		
		<category><![CDATA[General Tech]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://www.graysunderground.com/?p=8</guid>
		<description><![CDATA[When you think about the world today, do you see most shopping and services are done in brick and mortar shops. It has always been done this way, but things are changing. Today we have global marketplaces with global reach via the internet, but why then is the US slipping in the world on broadband [...]]]></description>
			<content:encoded><![CDATA[<p>When you think about the world today, do you see most shopping and services are done in brick and mortar shops. It has always been done this way, but things are changing. Today we have global marketplaces with global reach via the internet, but why then is the US slipping in the world on broadband penetration into our country?</p>
<p>For lack of a better reason it appears to be apathy, our lawmakers, our people are getting more and more apathetic. We just don&#8217;t care to see beyond out little lives and how it affects the big picture. We are a nation always on the leading edge of technology and revolutionary new ways of doing things, so being 11th in the world on broadband penetration seems like we are dropping the ball on technology.  At least now we have a few FCC commissioners willing to go before the senate and spout the virtues of building a plan and executing. They are talking about gathering useful data and then spurring competition in the broadband market by giving tax credits and investment subsidies, this will get us part way to where we need to be but the other part is you.</p>
<p>Well not you particularly, because if your reading my blog there is a good chance your on broadband, what I mean is us the people demanding more, and better service.  When we know technology is out there and could make things better we living in a market economy should demand what we want. If you want something, there is a good chance there is someone willing to sell it to you.</p>
<p>Without the push for a broader national broadband strategy, how much farther are we willing to fall behind in technology?<br />
<a href="http://arstechnica.com/news.ars/post/20070927-fcc-commissioners-us-in-dire-need-of-national-broadband-strategy.html">Ars Technica</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.graysunderground.com/2007/10/01/national-broadband-strategy/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
