<?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>Cory Collier &#187; tech</title>
	<atom:link href="http://corycollier.com/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://corycollier.com</link>
	<description>Web Developer and System Administrator in Orlando, FL</description>
	<lastBuildDate>Mon, 12 Jul 2010 02:16:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>What I Use</title>
		<link>http://corycollier.com/2009/04/what-i-use/</link>
		<comments>http://corycollier.com/2009/04/what-i-use/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 19:14:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=467</guid>
		<description><![CDATA[It occurred to me recently, that there&#8217;s a bit of variance in what developers use. For many folks not used to writing code, the availability of software to help write software can be a bit overwhelming. For that reason, I&#8217;m writing the stuff that makes me tick. A disclaimer: I primarily use Mac OS X (Leopard). I [...]]]></description>
			<content:encoded><![CDATA[<p>It occurred to me recently, that there&#8217;s a bit of variance in what developers use. For many folks not used to writing code, the availability of software to help write software can be a bit overwhelming. For that reason, I&#8217;m writing the stuff that makes me tick.</p>
<p>A disclaimer: I primarily use <a href="http://www.apple.com/macosx/">Mac OS X (Leopard)</a>. I love using <a href="http://www.ubuntu.com/">Ubuntu</a>, but it&#8217;s not where I get the bulk of my work done. So, here&#8217;s my Mac apps:</p>
<h3>Coding:</h3>
<p><a href="http://eclipse.org/pdt"><img class="alignleft size-full wp-image-474" title="Eclipse PDT" src="http://corycollier.com/wp-content/uploads/2009/04/82286-eclipse_icon_2.png" alt="Eclipse PDT" width="128" height="128" /></a><strong>Eclipse PDT</strong>. I write primarily in PHP, and there&#8217;s just no better app out there for big PHP development. Something to note about Eclipse though, don&#8217;t use more than what comes out of the box. Eclipse can be buggy as hell, so don&#8217;t add all the plugins you can find to it. Eclipse is for writing code, not for committing SVN updates. Remember that, and you&#8217;ll love Eclipse as much as me.<br />
<strong><a href="http://macromates.com/"><img class="alignleft size-full wp-image-475" title="TextMate" src="http://corycollier.com/wp-content/uploads/2009/04/textmate-logo.png" alt="TextMate" width="128" height="123" /></a>TextMate</strong>. After having said all of that, there&#8217;s some times when I want a text editor that&#8217;s light, and gets the code updated quickly. Eclipse is a memory beast, and if you&#8217;re strapped for RAM, you won&#8217;t be able to run Photoshop, Illustrator, AND Eclipse at the same time. For that reason, TextMate is awesome.<br />
<strong><a href="http://www.vim.org/"><img class="alignleft size-full wp-image-476" title="vim" src="http://corycollier.com/wp-content/uploads/2009/04/vim_logo.png" alt="vim" width="128" height="128" /></a>vim</strong>. Finally, the most lean of all editors is vi. I use vim, since it has a few extra things I really appreciate. The learning curve on vim is hell, but once you&#8217;re used to it you won&#8217;t look back.</p>
<h3>Graphics:</h3>
<p><strong><a href="http://www.adobe.com/"><img class="alignleft size-full wp-image-486" title="Illustrator" src="http://corycollier.com/wp-content/uploads/2009/04/adobe_illustrator_cs4.png" alt="Illustrator" width="128" height="127" /></a>Adobe CS 4</strong>. I&#8217;ve tried all of the substitutes out there. But none of them hold a candle to Adobe&#8217;s mismanaged, bloated, overpriced Creative Suite. Photoshop and Illustrator are indispensable tools if you&#8217;re doing web graphics (or any other graphics for that matter)</p>
<h3>Communication:</h3>
<p><strong><a href="http://adiumx.com/"><img class="alignleft size-full wp-image-477" title="Adium" src="http://corycollier.com/wp-content/uploads/2009/04/adium_logo-300x300.png" alt="Adium" width="128" height="128" /></a>Adium</strong>. I don&#8217;t know of an IM client that comes close to Adium. I can be logged into all of the social networks I use at one time, in one window, and it doesn&#8217;t cost me anything to do it. That beats the hell out of anything else out there. Hopefully, there will be some challenges to this in the future. But for now, this Mac-only app is the definitive way to do IM.<br />
<strong><a href="http://www.tweetdeck.com/beta/"><img class="alignleft size-full wp-image-478" title="TweetDeck" src="http://corycollier.com/wp-content/uploads/2009/04/tweet_deck.png" alt="TweetDeck" width="128" height="128" /></a>TweetDeck</strong>. Twitter is definitely mainstream these days. TweetDeck lets me create groups out of the people I follow, see replies to me (public and direct), search terms, and see whats trending on Twitter, all in the same window. That&#8217;s pretty awesome too. **NOTE** I&#8217;m starting to try out Seesmic, and it&#8217;s pretty good too. Both of these apps are built on Adobe&#8217;s AIR platform, so everyone can get a taste.<br />
<a href="http://www.apple.com/macosx/features/mail.html"><img class="alignleft size-full wp-image-479" title="Apple Mail" src="http://corycollier.com/wp-content/uploads/2009/04/21152_scr.png" alt="Apple Mail" width="128" height="128" /></a><strong>Apple Mail</strong>. This might seem a bit obvious, but I wanted to give Apple some credit here. Apple Mail is an awesome mail client that meets almost every need I have, out of the box. I use the <a href="http://www.daneharnett.com/widemail/">WideMail</a> app to give it just the right tweaking I need out of it.</p>
<h3>Local Server Software:</h3>
<p><a href="http://www.macports.org/"><img class="alignleft size-full wp-image-480" title="MacPorts" src="http://corycollier.com/wp-content/uploads/2009/04/macports-logo-top.png" alt="MacPorts" width="183" height="70" /></a>MacPorts. I tend to need some esoteric stuff from my LAMP environment, so I use MacPorts as a package manager to customize the variables of my development environment to my liking. With MacPorts its usually a trivial issue to install Memcache, Apache, MySQL, PostgreSQL, PHP, etc.. I&#8217;ll usually even change the version of rsync and vim using the MacPorts package manager. If you don&#8217;t know about MacPorts, you&#8217;re definitely missing out.</p>
<h3>Miscelaneous:</h3>
<p><strong><a href="http://blacktree.com/"><img class="alignleft size-full wp-image-481" title="Quicksilver" src="http://corycollier.com/wp-content/uploads/2009/04/icn_quicksilver_128.png" alt="Quicksilver" width="128" height="128" /></a>Quicksilver</strong>. Whenever I setup my Mac, Quicksilver is always the very first thing I install. Once you&#8217;ve got a mind for using the shortcuts in Quicksilver, you will never ever ever go back to the old school hunt-and-peck way of lanching apps, and performing tasks.<br />
<a href="http://blacktree.com/"><strong>Visor</strong></a>. Another gem from Blacktree: Visor allows the terminal to always be quickly available to me, but also not intrude on the desktop. A lot of times, I don&#8217;t even change the default terminal theme (just change the font to Monaco 12pt Anti-Aliased).<br />
<strong><a href="http://www.transmissionbt.com/"><img class="alignleft size-full wp-image-482" title="Transmission" src="http://corycollier.com/wp-content/uploads/2009/04/transmission-logo-new.png" alt="Transmission" width="128" height="128" /></a>Transmission</strong>. Transmission is the greatest bit-torrent application around. It&#8217;s light and gets to the point. Other apps try to push content and channels. Transmission just downloads the torrents. Awesome.</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2009/04/what-i-use/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH Without Password</title>
		<link>http://corycollier.com/2009/01/ssh-without-password/</link>
		<comments>http://corycollier.com/2009/01/ssh-without-password/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 13:15:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[keygen]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network administrator]]></category>
		<category><![CDATA[remote]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=352</guid>
		<description><![CDATA[I used to always refer to a different site when I wanted to remember how to setup a machine to use SSH without a password. That site (I don&#8217;t recall what it is) isn&#8217;t around anymore. So, I guess I have to post the tutorial here. SSH is one of the major tools in what [...]]]></description>
			<content:encoded><![CDATA[<p>I used to always refer to a different site when I wanted to remember how to setup a machine to use SSH without a password. That site (I don&#8217;t recall what it is) isn&#8217;t around anymore. So, I guess I have to post the tutorial here.</p>
<p>SSH is one of the major tools in what I do. For any developers out there who don&#8217;t know about it, you&#8217;re missing out. Long gone are the days of requiring screen sharing or remote desktop to manage another computer. SSH is the bomb, and it&#8217;s been around for a long time.</p>
<p>Here&#8217;s how to use it, without needing to enter your password when you make a connection to a remote machine:</p>
<ul>
<li>On the computer you&#8217;re making a connection from (i.e. your home computer)</li>
<li>
<ul>
<li>If you do not have a ~/.ssh folder already, create one.</li>
<li>
<pre>ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ''</pre>
</li>
<li>
<pre>scp ~/.ssh/id_dsa.pub &lt;username&gt;@&lt;servername&gt;:~</pre>
</li>
<li>Make an old-skool connection to the server you just copied your public key to (i.e. your public webhost)</li>
</ul>
</li>
<li>on that server:</li>
<li>
<ul>
<li>
<pre>cat id_dsa.pub &gt;&gt; ~/.ssh/authorized_keys2</pre>
</li>
<li>
<pre>chmod 0600 ~/.ssh/authorized_keys2</pre>
</li>
</ul>
</li>
</ul>
<p>That&#8217;s it. Keep in mind, that you&#8217;ll still need to specify your username when connecting to the host (if it&#8217;s different than your username on your local machine). If you want to get around that, you&#8217;ll need to setup an SSH config file (future tutorial?).</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2009/01/ssh-without-password/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Reader and Zend_Http_Client Saves Time</title>
		<link>http://corycollier.com/2008/11/google-reader-and-zend_http_client-saves-time/</link>
		<comments>http://corycollier.com/2008/11/google-reader-and-zend_http_client-saves-time/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 22:24:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[reader]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend_http_client]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=281</guid>
		<description><![CDATA[I&#8217;ve been working a lot on Florida Death Metal lately. Part of that means that I need to know news, as it happens, from a lot of different sources. That can be difficult (and a pain in the ass) to keep track of. The last thing I want to do, is visit 50 different sites [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working a lot on <a title="Florida Death Metal" href="http://floridadeathmetal.com">Florida Death Metal</a> lately. Part of that means that I need to know news, as it happens, from a lot of different sources. That can be difficult (and a pain in the ass) to keep track of. The last thing I want to do, is visit 50 different sites every 15 minutes to see if there&#8217;s any news I should know about.</p>
<p>The first thing I did, to filter input, was to setup a <a title="Google Reader" href="http://google.com/reader">Google Reader</a> account for Florida Death Metal. At least this allowed me to see updates from a variety of other sites in a single place. This also allows me to search through those new listings for keywords to bands and events I think are important to know about.</p>
<p>This still requires me to visit Google Reader, and parse through a lot of stuff (routinely over 1000 new items) to find out what&#8217;s going on in the world. The real dilemma I was having, was trying to implement an active alert system to news going on around me. The active part, was me actively searching through Google Reader for information relevant to Florida Death Metal. </p>
<p>Needless to say, this started to suck. I have a great full time job, a wonderful wife, and a million other things I like to do with my spare time. Spending my days and nights on Google Reader, struggling to keep up with news for a project blew.</p>
<p>I love Florida Death Metal. I&#8217;ve never been involved in something that means so much to me. However, there are only so many days in the week, and so much time in each of those days. I need a way to passively keep up with relevant news and events. I needed some automation, so I could spend time hanging drapes for Melissa, or having a beer with Rob.</p>
<p>Enter <a title="Zend Http Client" href="http://framework.zend.com/manual/en/zend.http.html">Zend_Http_Client</a> &#8230;.</p>
<p>One of my favorite programming tricks is breaking down requests to servers, and finding a way to do them programatically. So, I got to thinking about how I could parse through all of my stuff in Google Reader. For each of the views in Google Reader, there is an associated RSS feed. Well, that makes things simple enough. I could just grab the RSS feed and parse it. </p>
<p>One minor detail, the RSS feeds aren&#8217;t publicly available. You have to be logged in to use them. This makes sense. I imagine Google doesn&#8217;t want to be used as an aggregator of RSS feeds to be used as a proxy to other sites. Sorry :/</p>
<p>So, here&#8217;s a breakdown of what I needed to write a script to do:</p>
<ol>
<li>Login to Google</li>
<li>Grab the RSS Feed for &#8216;All Items&#8217;</li>
<li>Parse the RSS Feed for keywords relevant to Florida Death Metal</li>
<li>Email me alerts (if there are matches)</li>
</ol>
<p>Not too bad. So, Here&#8217;s the script I came up with. I hope you like it :</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #00ff00; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">/*
Description: Script to parse through a google reader aggregation of content for keywords
Version: 1.0
Author: Cory Collier
Author URI: http://corycollier.com/
*/</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Define the constants required for the script</span>
<span style="color: #00ff00;">define</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">'GOOGLE_PASSWORD'</span><span style="color: #ffff00;">,</span> 	<span style="color: #00ffff;">'&lt;your password here&gt;'</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
<span style="color: #00ff00;">define</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">'GOOGLE_RSS_URI'</span><span style="color: #ffff00;">,</span> 		<span style="color: #00ffff;">'&lt;the url for your google reader rss feed&gt;'</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
<span style="color: #00ff00;">define</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">'GOOGLE_LOGIN_URI'</span><span style="color: #ffff00;">,</span>		<span style="color: #00ffff;">'https://www.google.com/accounts/ServiceLoginAuth?service=reader'</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
<span style="color: #00ff00;">define</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">'GOOGLE_LOGIN_EMAIL'</span><span style="color: #ffff00;">,</span> 	<span style="color: #00ffff;">'&lt;your gmail account username / email&gt;'</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
<span style="color: #00ff00;">define</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">'MAILER_FROM_ADDR'</span><span style="color: #ffff00;">,</span>		<span style="color: #00ffff;">'&lt;where the email should come from&gt;'</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
<span style="color: #00ff00;">define</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">'MAILER_TO_ADDR'</span><span style="color: #ffff00;">,</span>		<span style="color: #00ffff;">'&lt;where the email should go to&gt;'</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
<span style="color: #00ff00;">define</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">'MAILER_SUBJECT'</span><span style="color: #ffff00;">,</span>		<span style="color: #00ffff;">'Google Reader Parsing'</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
* a Zend Framework Installation _MUST_ be located on the include path for PHP
*/</span>
<span style="color: #ffff00;">require</span> <span style="color: #00ffff;">'Zend/Loader.php'</span><span style="color: #ffff00;">;</span>
Zend_Loader<span style="color: #ffff00;">::</span><span style="color: #ffffff;">registerAutoload</span><span style="color: #ff00ff;">&#40;</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Instantiate a new Zend_Http_Client, with the google login url</span>
<span style="color: #00ffff;">$client</span> <span style="color: #ffff00;">=</span> <span style="color: #00ff00; font-weight: bold;">new</span> Zend_Http_Client<span style="color: #ff00ff;">&#40;</span>GOOGLE_LOGIN_URI<span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
 * Set the client cookie jar ...
 * Set the method to POST ..
 * Set the parameters to post with
 */</span>
<span style="color: #00ffff;">$client</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">setCookieJar</span><span style="color: #ff00ff;">&#40;</span><span style="color: #ff00ff;">&#41;</span>
	<span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">setMethod</span><span style="color: #ff00ff;">&#40;</span>Zend_Http_Client<span style="color: #ffff00;">::</span><span style="color: #ffffff;">POST</span><span style="color: #ff00ff;">&#41;</span>
	<span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">setParameterPost</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ff00;">array</span><span style="color: #ff00ff;">&#40;</span>
		<span style="color: #00ffff;">'continue'</span>		<span style="color: #ffff00;">=&gt;</span> GOOGLE_RSS_URI<span style="color: #ffff00;">,</span>
		<span style="color: #00ffff;">'service'</span>		<span style="color: #ffff00;">=&gt;</span> <span style="color: #00ffff;">'reader'</span><span style="color: #ffff00;">,</span>
		<span style="color: #00ffff;">'niu'</span>			<span style="color: #ffff00;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #ffff00;">,</span>
		<span style="color: #00ffff;">'hl'</span>			<span style="color: #ffff00;">=&gt;</span> <span style="color: #00ffff;">'en'</span><span style="color: #ffff00;">,</span> 
		<span style="color: #00ffff;">'Email'</span>		<span style="color: #ffff00;">=&gt;</span> GOOGLE_LOGIN_EMAIL<span style="color: #ffff00;">,</span>
		<span style="color: #00ffff;">'Passwd'</span>		<span style="color: #ffff00;">=&gt;</span> GOOGLE_PASSWORD<span style="color: #ffff00;">,</span>
		<span style="color: #00ffff;">'PersistentCookie'</span>	<span style="color: #ffff00;">=&gt;</span> <span style="color: #00ffff;">'yes'</span><span style="color: #ffff00;">,</span>
		<span style="color: #00ffff;">'asts'</span>			<span style="color: #ffff00;">=&gt;</span> <span style="color: #00ffff;">''</span>
<span style="color: #ff00ff;">&#41;</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//make the login request, and store the response in the $response variable ...</span>
<span style="color: #00ffff;">$response</span> <span style="color: #ffff00;">=</span> <span style="color: #00ffff;">$client</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">request</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">'POST'</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//If the response was successful, change the uri value for the client object</span>
<span style="color: #666666; font-style: italic;">// to the appropriate rss file for parsing</span>
<span style="color: #00ffff;">$client</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">setUri</span><span style="color: #ff00ff;">&#40;</span>GOOGLE_RSS_URI<span style="color: #ff00ff;">&#41;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">//Change the request method to GET</span>
		<span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">setMethod</span><span style="color: #ff00ff;">&#40;</span>Zend_Http_Client<span style="color: #ffff00;">::</span><span style="color: #ffffff;">GET</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span> 
&nbsp;
<span style="color: #666666; font-style: italic;">//send the request, and store the results of it</span>
<span style="color: #00ffff;">$response</span> <span style="color: #ffff00;">=</span> <span style="color: #00ffff;">$client</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">request</span><span style="color: #ff00ff;">&#40;</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Initialize an array of keywords to look for</span>
<span style="color: #00ffff;">$keywords</span> <span style="color: #ffff00;">=</span> <span style="color: #00ff00;">array</span> <span style="color: #ff00ff;">&#40;</span>
	<span style="color: #666666; font-style: italic;">//Whatever your keywords are you're looking for</span>
<span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//SimpleXML is great!</span>
<span style="color: #00ffff;">$sx</span> <span style="color: #ffff00;">=</span> simplexml_load_string <span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">$response</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">getBody</span><span style="color: #ff00ff;">&#40;</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Iterate through each of the retrieved entries</span>
<span style="color: #ffff00;">foreach</span> <span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">$sx</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">entry</span> <span style="color: #ffff00;">as</span> <span style="color: #00ffff;">$entry</span> <span style="color: #ff00ff;">&#41;</span> 
<span style="color: #ff00ff;">&#123;</span>	<span style="color: #666666; font-style: italic;">//Now, iterate through each of the defined keywords / keyphrases</span>
    <span style="color: #ffff00;">foreach</span> <span style="color: #ff00ff;">&#40;</span> <span style="color: #00ffff;">$keywords</span> <span style="color: #ffff00;">as</span> <span style="color: #00ffff;">$keyword</span> <span style="color: #ff00ff;">&#41;</span> 
    <span style="color: #ff00ff;">&#123;</span>	<span style="color: #666666; font-style: italic;">//First, check to see if the title contains a keyword / keyphrase</span>
        <span style="color: #ffff00;">if</span> <span style="color: #ff00ff;">&#40;</span> <span style="color: #00ff00;">stristr</span><span style="color: #ff00ff;">&#40;</span><span style="color: #ff00ff;">&#40;</span>string<span style="color: #ff00ff;">&#41;</span><span style="color: #00ffff;">$entry</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">title</span><span style="color: #ffff00;">,</span> <span style="color: #00ffff;">$keyword</span><span style="color: #ff00ff;">&#41;</span> <span style="color: #ff00ff;">&#41;</span> 
        <span style="color: #ff00ff;">&#123;</span>	<span style="color: #666666; font-style: italic;">//Append any matches to the matches arrays</span>
            <span style="color: #00ffff;">$matches</span><span style="color: #ff00ff;">&#91;</span><span style="color: #ff00ff;">&#93;</span> <span style="color: #ffff00;">=</span> <span style="color: #ff00ff;">&#40;</span>string<span style="color: #ff00ff;">&#41;</span><span style="color: #00ffff;">$entry</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">link</span><span style="color: #ff00ff;">&#91;</span><span style="color: #00ffff;">'href'</span><span style="color: #ff00ff;">&#93;</span><span style="color: #ffff00;">;</span>
        <span style="color: #ff00ff;">&#125;</span>
    	<span style="color: #666666; font-style: italic;">//Next, check to see if there are any matches in the summary</span>
        <span style="color: #ffff00;">if</span> <span style="color: #ff00ff;">&#40;</span> <span style="color: #00ff00;">stristr</span><span style="color: #ff00ff;">&#40;</span><span style="color: #ff00ff;">&#40;</span>string<span style="color: #ff00ff;">&#41;</span><span style="color: #00ffff;">$entry</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">summary</span><span style="color: #ffff00;">,</span> <span style="color: #00ffff;">$keyword</span><span style="color: #ff00ff;">&#41;</span> <span style="color: #ff00ff;">&#41;</span> 
        <span style="color: #ff00ff;">&#123;</span>	<span style="color: #666666; font-style: italic;">//same deal: If there are matches, add them to the stack</span>
            <span style="color: #00ffff;">$matches</span><span style="color: #ff00ff;">&#91;</span><span style="color: #ff00ff;">&#93;</span> <span style="color: #ffff00;">=</span> <span style="color: #ff00ff;">&#40;</span>string<span style="color: #ff00ff;">&#41;</span><span style="color: #00ffff;">$entry</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">link</span><span style="color: #ff00ff;">&#91;</span><span style="color: #00ffff;">'href'</span><span style="color: #ff00ff;">&#93;</span><span style="color: #ffff00;">;</span>
        <span style="color: #ff00ff;">&#125;</span>
    <span style="color: #ff00ff;">&#125;</span> <span style="color: #666666; font-style: italic;">//END keyword iteration</span>
&nbsp;
<span style="color: #ff00ff;">&#125;</span> <span style="color: #666666; font-style: italic;">// END posting iteration</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//IF matches were found, send an email</span>
<span style="color: #ffff00;">if</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ff00;">count</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">$matches</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ff00ff;">&#41;</span> 
<span style="color: #ff00ff;">&#123;</span>	<span style="color: #666666; font-style: italic;">//Initialize a variable to store a mesage in</span>
    <span style="color: #00ffff;">$message</span> <span style="color: #ffff00;">=</span> <span style="color: #00ffff;">''</span><span style="color: #ffff00;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Iterate through each of the matches</span>
    <span style="color: #ffff00;">foreach</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">$matches</span> <span style="color: #ffff00;">as</span> <span style="color: #00ffff;">$match</span><span style="color: #ff00ff;">&#41;</span>
    <span style="color: #ff00ff;">&#123;</span>	<span style="color: #666666; font-style: italic;">//For each of the matches, append them to the message string, separated </span>
    	<span style="color: #666666; font-style: italic;">// by newlines</span>
        <span style="color: #00ffff;">$message</span> <span style="color: #ffff00;">.=</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #ffff00;">.</span>  <span style="color: #00ffff;">$match</span><span style="color: #ffff00;">;</span>  
    <span style="color: #ff00ff;">&#125;</span>
    <span style="color: #666666; font-style: italic;">//Initialize a new Zend_Mail object </span>
    <span style="color: #00ffff;">$mail</span> <span style="color: #ffff00;">=</span> <span style="color: #00ff00; font-weight: bold;">new</span> Zend_Mail<span style="color: #ffff00;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Set the parameters necessary to send a message </span>
    <span style="color: #00ffff;">$mail</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">addTo</span><span style="color: #ff00ff;">&#40;</span>MAILER_TO_ADDR<span style="color: #ff00ff;">&#41;</span>
        <span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">setFrom</span><span style="color: #ff00ff;">&#40;</span>MAILER_FROM_ADDR<span style="color: #ff00ff;">&#41;</span>
        <span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">setSubject</span><span style="color: #ff00ff;">&#40;</span>MAILER_SUBJECT<span style="color: #ff00ff;">&#41;</span>
        <span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">setBodyText</span><span style="color: #ff00ff;">&#40;</span><span style="color: #00ffff;">$message</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//I never trust email, so wrap the email execution in a try/catch statement</span>
    try  
    <span style="color: #ff00ff;">&#123;</span>	<span style="color: #666666; font-style: italic;">//Send the mail</span>
        <span style="color: #00ffff;">$mail</span><span style="color: #ffff00;">-&gt;</span><span style="color: #ff00ff;">send</span><span style="color: #ff00ff;">&#40;</span><span style="color: #ff00ff;">&#41;</span><span style="color: #ffff00;">;</span>   
    <span style="color: #ff00ff;">&#125;</span> catch <span style="color: #ff00ff;">&#40;</span>Exception <span style="color: #00ffff;">$e</span> <span style="color: #ff00ff;">&#41;</span><span style="color: #ff00ff;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//Do something here</span>
    <span style="color: #ff00ff;">&#125;</span>
<span style="color: #ff00ff;">&#125;</span></pre></div></div>

<p>Wrapping all of this up, I stuck this script on a spare <a title="Debian, The Most Awesome Linux Distribution Ever!" href="http://www.debian.org/">debian</a> box at my house, and setup a cronjob to run the script every 15 minutes. It saves me a lot of time. I&#8217;d love to hear some feedback from y&#8217;all about how I got this done. I&#8217;m a script guy at heart. So, this stuff is super fun for me.</p>
</pre>
<p>Wrapping all of this up, I stuck this script on a spare <a title="Debian, The Most Awesome Linux Distribution Ever!" href="http://www.debian.org/">debian</a> box at my house, and setup a cronjob to run the script every 15 minutes. It saves me a lot of time. I'd love to hear some feedback from y'all about how I got this done. I'm a script guy at heart. So, this stuff is super fun for me.</p>
<p>I know I should have checked the success of the initial login attempt before assuming the second request would get anything at all. Keep in mind though, this is a script I use to make my own life easier. Exceptions being thrown here cause me no harm. If I don't get anything, I can check my error logs for issues. Not a perfect solution, but it's working pretty well for me now. <img src='http://corycollier.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2008/11/google-reader-and-zend_http_client-saves-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Red Hat vs PDO vs PCRE vs Zend Lucene Search</title>
		<link>http://corycollier.com/2008/10/red-hat-vs-pdo-vs-pcre-vs-zend-lucene-search/</link>
		<comments>http://corycollier.com/2008/10/red-hat-vs-pdo-vs-pcre-vs-zend-lucene-search/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 01:37:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[pcre]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=236</guid>
		<description><![CDATA[Recently while working at my new job at Hydra Studio, my buddy Rob and I came across an issue that was killing us:  &#8220;Invalid parameter number: no parameters were bound&#8221;  When people used our search feature on our site, a few specific search terms would result in un-caught exceptions. Of course, this ONLY happened on [...]]]></description>
			<content:encoded><![CDATA[<p>Recently while working at my new job at <a title="Hydra Studio, a web design and development studio in Orlando, FL" rel="co-worker" href="http://hydrastudio.com">Hydra Studio</a>, my buddy <a title="Rob Ziener, a brilliant web developer in Orlando, FL" rel="friend co-worker&lt;br &gt;&lt;/a&gt;" href="http://robzienert.com/">Rob</a> and I came across an issue that was killing us: </p>
<blockquote><p>&#8220;Invalid parameter number: no parameters were bound&#8221;</p></blockquote>
<p> When people used our search feature on our site, a few specific search terms would result in un-caught exceptions. Of course, this ONLY happened on the client&#8217;s server. Nothing like saying a project is solid, only to find out there&#8217;s something &#8216;special&#8217; about the production environment.</p>
<p>The first thing we did, was to list out what was unique about the client&#8217;s server. The client was using a Media Temple box running CentOS 5.2. For the un-initiated, CentOS is the free version of Red Hat Enterprise Server. We run Macs in the office, and our staging server is a Mac too. Other than the OS, the normal &#8216;LAMP&#8217; stuff pretty much matched verbatim. </p>
<p>So, we started digging into the differences between the compiled versions of PHP between the development and production environments, and one thing popped out at us:</p>
<p>PCRE</p>
<p>The version that&#8217;s supported on Red Hat / CentOS is 6.6. That&#8217;s horrible. 6.6 came out nearly 3 years ago, and the version the client was running had no support for unicode at all. A little research, and we found out that Zend Search Lucene (what we built the search functionality on top of) requires unicode for the way it stores search indexes.</p>
<p>With that, we figured we were done. The client had a limitation on their server, they needed to address it, and the problem would fix itself when they did. Not quite so fast &#8230;</p>
<p>I was testing some of the searching on my iMac, when the same issue happened on my own computer. Disaster! Could it be that something in our own code was the culprit? What half-reproducible error was causing this? </p>
<p>After <em>hours</em> of searching for an answer on the googlez, I came across some help on the <a href="http://framework.zend.com/issues/browse/ZF-1343">Zend Issue Tracker</a>. It turns out, that PDO was failing when it was trying to prepare a statement, when that statement contained a question mark. When I switched my SQL adapter to Mysqli, the problem was solved. Both the production and the development environments were bug free after the change.</p>
<p>It turns out, that our search indexes would return fields that either contained question marks, because they actually existed in the document (as was the case locally), or because the document had encoding errors when the search index was built (as was the case on the production servers). The ORM we used would grab the documents, and grab relevant data from the database by querying with the fields stored in the index.</p>
<p>The SQL that was being prepared, would then look something like this:</p>
<blockquote><p>&#8216;SELECT id FROM folks WHERE first_name LIKE &#8216;Jo?hnny&#8217;</p></blockquote>
<p>The question marks would be interpreted by PDO as variable markers, which rightfully didn&#8217;t exist.</p>
<p>So, the real solution wound up being a little bit of a mix between the client&#8217;s problem, and our own. Granted, we needed to catch question marks being stored in db before they got there. That improves the longevity of our own code. However, the search functionality will still return results that <em>may</em> have question marks in them, thus causing the same issue. That issue is resolved by using Mysqli, but that feels more like a hack, than a solution.</p>
<p>Anyways, I spent a long time trying to search the answer to this and found nothing except the one mention in the issue tracker. For those of you using Zend Lucence Search on Red Hat / CentOS servers. Make sure you use Mysql if you&#8217;re using the Zend ORM to populate models based on results returned from the index. </p>
<p>Oh yeah, and make sure you filter your input too, Mr. Bobby Tables&#8230;..</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2008/10/red-hat-vs-pdo-vs-pcre-vs-zend-lucene-search/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XP Logs Off Automatically</title>
		<link>http://corycollier.com/2008/07/xp-logs-off-automatically/</link>
		<comments>http://corycollier.com/2008/07/xp-logs-off-automatically/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 01:39:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[review]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[issue]]></category>
		<category><![CDATA[logoff]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[registry]]></category>
		<category><![CDATA[userinit]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=187</guid>
		<description><![CDATA[So I got a call from a client today regarding a few issues they were having. Most of the problems weren&#8217;t all that difficult to solve, save one&#8230;. The boss&#8217;s computer would immediately log off after he tried to logon. While this might sound funny (in other circumstances, it really is), the client (who is [...]]]></description>
			<content:encoded><![CDATA[<p>So I got a call from a client today regarding a few issues they were having. Most of the problems weren&#8217;t all that difficult to solve, save one&#8230;.</p>
<p>The boss&#8217;s computer would immediately log off after he tried to logon. While this might sound funny (in other circumstances, it really is), the client (who is a really cool guy, whom I respect a lot) did not think it was funny at all.</p>
<p>So, I dived into the Google to find out the issue. The short version; there was a bad registry setting. Basically, when this sort of thing happens, the first thing you should check is the registry. Now, you can&#8217;t connect to the registry locally, since you can&#8217;t logon to the computer with this issue.</p>
<p>So, the first thing you need to do, is logon to a computer on the same network as a user who has administrative rights on the computer concerned. Once you&#8217;ve gotten that far, you&#8217;ll need to open regedit. Something like this:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/run-regedit.png"><img class="alignnone size-full wp-image-188" title="Run Regedit" src="http://corycollier.com/wp-content/uploads/2008/07/run-regedit.png" alt="" width="361" height="233" /></a></p>
<p>After that, you&#8217;ll need to connect to the computer in question. That&#8217;s easy, check the following pics:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/registry-network-menu.png"><img class="alignnone size-full wp-image-189" title="registry network menu" src="http://corycollier.com/wp-content/uploads/2008/07/registry-network-menu.png" alt="" width="233" height="228" /></a></p>
<p>then&#8230; </p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/remote-registry.png"><img class="alignnone size-full wp-image-190" title="remote registry" src="http://corycollier.com/wp-content/uploads/2008/07/remote-registry.png" alt="" width="465" height="303" /></a></p>
<p>The following key is what you should be looking for:</p>
<p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon</p>
<p>That key should contain a string value for &#8216;Userinit&#8217;. If you&#8217;re confused, you should see something like the following:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/userinit-registry-key.png"><img class="alignnone size-full wp-image-191" title="userinit registry key" src="http://corycollier.com/wp-content/uploads/2008/07/userinit-registry-key.png" alt="" width="500" height="262" /></a></p>
<p>Well, you probably shouldn&#8217;t see the green box, but you should see the string value for Userinit. If you don&#8217;t see that value in the root of key Winlogon, then you&#8217;ll need to create it. </p>
<p>That&#8217;s not too bad either. First, right click the right hand pane of the registry editor:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/picture-4.png"><img class="alignnone size-full wp-image-192" title="right click menu of registry" src="http://corycollier.com/wp-content/uploads/2008/07/picture-4.png" alt="" width="331" height="139" /></a></p>
<p>Select the &#8216;String Value&#8217; item in the right click menu. Once you&#8217;ve gotten that done, you&#8217;ll have a new string value in the right hand pane, awaiting you to name it. It&#8217;ll look something like: </p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/picture-6.png"><img class="alignnone size-full wp-image-193" title="New Registry string value" src="http://corycollier.com/wp-content/uploads/2008/07/picture-6.png" alt="" width="310" height="49" /></a></p>
<p>Name the string Userinit. After you&#8217;ve done that, right click the entry and select &#8216;Modify&#8217;. Make sure that the value for the key is:</p>
<p>c:\windows\system32\userinit.exe</p>
<p>Again, here&#8217;s a picture:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/picture-8.png"><img class="alignnone size-full wp-image-194" title="Userinit Default String Value" src="http://corycollier.com/wp-content/uploads/2008/07/picture-8.png" alt="" width="383" height="169" /></a></p>
<p>And that&#8217;s it. If you have any issues after you&#8217;ve gotten this done, I recommend an ERD disk or formatting your HD. Those are extreme options, I know. However, I don&#8217;t think you want to tool around with your computer for hours on end ( or maybe you do ).</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2008/07/xp-logs-off-automatically/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Social Media Programs Worth Something</title>
		<link>http://corycollier.com/2008/07/social-media-programs-worth-something/</link>
		<comments>http://corycollier.com/2008/07/social-media-programs-worth-something/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 07:29:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[opinion]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[adium]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[flock]]></category>
		<category><![CDATA[magnolia]]></category>
		<category><![CDATA[pownce]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[twhirl]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=148</guid>
		<description><![CDATA[So, as  a follow up to my rant about the lack of value in most social networks that clog the arteries of the internet these days; I thought it&#8217;d be a good idea to follow up with some thoughts on networks and programs that I do like, and why I think they&#8217;re cool. [Networks - [...]]]></description>
			<content:encoded><![CDATA[<p>So, as  a follow up to my rant about the <a title="Most Social Networks Suck!" href="http://corycollier.com/2008/07/social-media-is-social-waste/">lack of value in most social networks</a> that clog the arteries of the internet these days; I thought it&#8217;d be a good idea to follow up with some thoughts on networks and programs that I do like, and why I think they&#8217;re cool.</p>
<h3>[Networks - The places online for social media]</h3>
<hr /> </p>
<p> </p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/twitter-logo.jpg"><img class="size-full wp-image-149 alignleft" title="Twitter" src="http://corycollier.com/wp-content/uploads/2008/07/twitter-logo.jpg" alt="Twitter" width="200" height="74" /></a></p>
<p>1. <strong><a title="Twitter" href="http://twitter.com">Twitter</a></strong> &#8211; Probably not a surprise to most tech folks out there. For those of you who don&#8217;t know (geez), twitter offers a sort of &#8216;micro-blogging&#8217; platform. It&#8217;s kinda like blogging for people who don&#8217;t have time to blog. With a max post length of 140 characters (not words), you can&#8217;t say too much. However, it&#8217;s a great way to keep up to date with your friends, or important people, like <a title="Tim O'Reilly" href="http://twitter.com/timoreilly">Tim O&#8217;Reilly</a>. </p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/pownce-logo.jpg"><img class="size-full wp-image-150 alignleft" title="Pownce" src="http://corycollier.com/wp-content/uploads/2008/07/pownce-logo.jpg" alt="Pownce" width="200" height="73" /></a></p>
<p>1.a.<strong> </strong><strong><a title="Pownce" href="http://pownce.com">Pownce</a></strong> &#8211; For all the same as Twitter, but a different network (with more features too). This is Kevin Rose&#8217;s (Founder of Digg) Twitter Clone. </p>
<p> </p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/delicious-logo.jpg"><img class="size-full wp-image-151 alignleft" title="Delicious" src="http://corycollier.com/wp-content/uploads/2008/07/delicious-logo.jpg" alt="Delicious" width="200" height="59" /></a></p>
<p>2. <strong><a title="Delicious" href="http://del.icio.us">Delicious</a></strong> &#8211; I can&#8217;t begin to say how much I like Delicious. The actual site (again, for those of you who are scratching your heads right now) is del.icio.us. The idea is to have a place online where you can store your bookmarks. That way, you never have to worry about not being able to find that one video online, when you&#8217;re at your mom&#8217;s house or something.</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/magnolia-logo.jpg"><img class="alignleft size-full wp-image-152" title="Magnolia" src="http://corycollier.com/wp-content/uploads/2008/07/magnolia-logo.jpg" alt="" width="199" height="97" /></a>2.a.<strong> </strong><strong><a title="Magnolia" href="http://ma.gnolia.com">Magnolia</a></strong>. &#8211; For all the same reasons as Delicious. Magnolia is just a different interface to the same idea as Delicious. </p>
<p> </p>
<p> </p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/flickr-logo.jpg"><img class="alignleft size-full wp-image-153" title="Flickr" src="http://corycollier.com/wp-content/uploads/2008/07/flickr-logo.jpg" alt="" width="200" height="100" /></a>3. <strong><a title="Flickr" href="http://flickr.com">Flickr</a></strong> &#8211; Hands down, nobody has online photo sharing down like Flickr. The amount of things you can do to your photos with Flickr is nothing short of obscene. To top it off, the developers are a pretty eclectic group of characters. Call me an idealist, but I like the idea of nutty dudes (and dudettes) writing software that really does something for the world.</p>
<h3>[Software - The stuff on your computer that helps _you_ out]</h3>
<hr /> </p>
<p> </p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/twhirl-logo.jpg"><img class="alignleft size-full wp-image-154" title="Twhirl" src="http://corycollier.com/wp-content/uploads/2008/07/twhirl-logo.jpg" alt="" width="200" height="85" /></a>1. <strong><a title="Twhirl" href="http://www.twhirl.org">Twhirl</a></strong> &#8211; I use Twhirl pretty much exclusively for &#8216;tweeting&#8217; these days. Twhirl runs off of Adobe AIR, a sort of intermediary between a program, and it&#8217;s operating system. This means that if you&#8217;re running Windows (XP, or whatever Vista variant), Linux (within reason), or OSX; you will be running the same program. That makes for easy support. Anyways, Twhirl is awesome because it doesn&#8217;t always give me the &#8216;too many requests&#8217; errors of twitteriffic, AND it posts to Pownce for me too.</p>
<p> </p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/flock-logo.jpg"><img class="alignleft size-full wp-image-155" title="Flock" src="http://corycollier.com/wp-content/uploads/2008/07/flock-logo.jpg" alt="" width="150" height="149" /></a>2. <strong><a title="Flock" href="http://flock.com">Flock</a></strong> &#8211; Flock is a browser that&#8217;s built on top of Firefox. It makes keeping up with Social Media sites pretty easy. Some of the features of flock (like the top media bar, displaying photos and videos) are equally awesome, and cumbersome. Despite some of it&#8217;s shortcomings, Flock is still a really cool app that does a good job of combining a web browser with a social media dashboard.</p>
<p> </p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/07/adium-logo.jpg"><img class="alignleft size-full wp-image-156" title="Adium" src="http://corycollier.com/wp-content/uploads/2008/07/adium-logo.jpg" alt="" width="128" height="128" /></a>3. <strong><a title="Adium" href="http://www.adiumx.com">Adium</a></strong> &#8211; Now, some of you might not think of instant messaging as a type of social network. No websites, no pictures, no birthdays, no etc&#8230; However, IM was really the first type of social network, and it was well beyond it&#8217;s time. These days, if you&#8217;re not on IM, you don&#8217;t talk much to me. Seriously, my wife has to get on IM to chat with me, when we&#8217;re in the house together. IM is king, and Adium makes using IM a breeze.</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2008/07/social-media-programs-worth-something/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Mac Bad For Business?</title>
		<link>http://corycollier.com/2008/06/is-mac-bad-for-business/</link>
		<comments>http://corycollier.com/2008/06/is-mac-bad-for-business/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 13:33:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[review]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[pc]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=81</guid>
		<description><![CDATA[I recently read an article, referred to me from Digg, about &#8216;Why Macs Still Arent Right For Business&#8216;, as written by Jonathan Blum. Being a Mac Convert, I feel a certain ownership of this issue. I see people argue over this sort of thing all of the time. There are some key arguments in favor [...]]]></description>
			<content:encoded><![CDATA[<p>I recently read an article, referred to me from <a href="http://digg.com" target="_blank">Digg</a>, about &#8216;<a href="http://money.cnn.com/2008/05/29/smallbusiness/macs_small_biz.fsb/" target="_blank">Why Macs Still Arent Right For Business</a>&#8216;, as written by Jonathan Blum. Being a <a href="http://corycollier.com/2007/04/eat-crow/">Mac Convert</a>, I feel a certain ownership of this issue. I see people argue over this sort of thing all of the time. There are some key arguments in favor of PCs, but not many.</p>
<p>This guy had some intial transition issues, and turned it into an excuse to write about the &#8216;flaws&#8217; of switching to Mac. His company uses lame software that was specifically designed for windows, and complains about Mac not working for it. It&#8217;s a weird argument, &#8217;cause he prefixes all of this by saying he&#8217;s been a Mac user for years. The issues he complains about are largely encountered by newbs. Either he&#8217;s a liar, or he&#8217;s playing &#8216;Devils Advocate&#8217; for the inevitable issues new Mac converts will face.</p>
<p>While it is mega-lame, it does give some validity to his argument. Many small business ARE using terrible software, and would be faced with serious costs if they chose to change software and hardware at the same time. Remember, most business users don&#8217;t like computers. They&#8217;re a tool for doing a job they don&#8217;t want to do.</p>
<p>So the issue here really is, &#8216;Do you like your job&#8217;? because if you do, then you would want to use the best possible equipment to get it done. You would want to be as efficient at your job as you possibly could. If your job sucks however, then you probably just want to get it done and get out.</p>
<p>That&#8217;s sort of the &#8220;State Of Business&#8221; for much of corporate America. There&#8217;s a reason why everyone you meet loves &#8216;Office-Space&#8217;. It&#8217;s because most people have shitty jobs. It might seem like a stretch, but I think there&#8217;s a real correlation between Mac / PC users and folks with good / bad jobs.</p>
<p>Figure it like this: if your employer doesn&#8217;t want to fork an extra thousand bucks on a computer that works more efficiently for you, do you think they&#8217;re gonna provide any other incentives?</p>
<p>Doubt it.</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2008/06/is-mac-bad-for-business/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Check For Valid Email With Telnet</title>
		<link>http://corycollier.com/2008/05/check-for-valid-email-with-telnet/</link>
		<comments>http://corycollier.com/2008/05/check-for-valid-email-with-telnet/#comments</comments>
		<pubDate>Thu, 22 May 2008 01:58:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[telnet]]></category>
		<category><![CDATA[validate]]></category>
		<category><![CDATA[validation]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=64</guid>
		<description><![CDATA[Often, I get asked by folks why an e-mail didn&#8217;t reach someone. People get an email that has some cryptic message about why their email didn&#8217;t reach it&#8217;s intended recipient. While there are an untold number of reasons as to why that could happen, there are a few things you can do to narrow down [...]]]></description>
			<content:encoded><![CDATA[<p>Often, I get asked by folks why an <a href="http://corycollier.com/2008/05/google-saves-e-mail/">e-mail</a> didn&#8217;t reach someone. People get an <a href="http://corycollier.com/2008/05/google-saves-e-mail/">email</a> that has some cryptic message about why their email didn&#8217;t reach it&#8217;s intended recipient. While there are an untold number of reasons as to why that could happen, there are a few things you can do to narrow down why it failed.</p>
<p>Regardless, the first thing I always do, is check that the email address is valid. It might sound funny, but just like that hot girl might have given you a phony number, you might have the wrong email address. This happens a lot more often then you might think.</p>
<p>So, how do you check the email? Enter Telnet to the rescue. Don&#8217;t worry, Telnet is cross platform. If you have Linux, Mac, or Windows (geez), you can use Telnet to figure out if the e-mail address you&#8217;re trying to reach is valid. It&#8217;s one of the few things that seem to work on damn near any operating system you can think of.</p>
<p><span id="more-64"></span>Sooo go ahead and fire up Terminal (or Command Prompt). Once you&#8217;ve gotten that done, you&#8217;ll need to type in &#8216;telnet&#8217;. You&#8217;ll see a window, something similar to the one below:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/picture-1.png"><img class="alignnone size-full wp-image-65" title="picture-1" src="http://corycollier.com/wp-content/uploads/2008/05/picture-1.png" alt="" width="500" height="185" /></a></p>
<p>Now, you&#8217;ll need to get the domain name of the mail server you&#8217;re trying to check the email address against. This is not as easy as just checking the domain name itself. Nearly always, the mail server for a domain is mail.domain.com. So, if you&#8217;re checking the valid email address for JoeBalls@physics.org, then the mail server is probably mail.physics.org. It&#8217;s a much bigger topic than I&#8217;ve got to cover here. I&#8217;ll get to that later. So let&#8217;s just say the right email server is mail.physics.org. </p>
<p>So, type in &#8216;open mail.physics.org smtp&#8217; in the command prompt. In case you&#8217;re a little confused, it should look like the following:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/picture-2.png"><img class="alignnone size-full wp-image-66" title="picture-2" src="http://corycollier.com/wp-content/uploads/2008/05/picture-2.png" alt="" width="500" height="185" /></a></p>
<p>So, after you enter this, you&#8217;ll see the telnet program try to connect to an IP address. If it works, then you&#8217;ll get a message about an escape character, as well as the mail server&#8217;s welcome message. If you&#8217;ve gotten here, then pat yourself on the back. You&#8217;ve at least gotten a valid mail server. We&#8217;ll assume for now, it&#8217;s the right one.</p>
<p>The next thing to do, is type in the following command: &#8216;HELO mail.example.com&#8217;. It&#8217;s probably more effective to use a valid mail server for this, but this is supposed to be a simple tutorial. So anyways, after you type in &#8216;HELO &#8230;&#8217;, you&#8217;ll see something similar to the following:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/picture-3.png"><img class="alignnone size-full wp-image-67" title="picture-3" src="http://corycollier.com/wp-content/uploads/2008/05/picture-3.png" alt="" width="500" height="206" /></a></p>
<p>This is kinda like saying &#8216;Hi, I&#8217;m Cory&#8217;. Ehh, don&#8217;t worry about it. Now, you&#8217;ll have to enter who this test email is from. Usually can use anything that looks like a valid email address. I usually use dude@example.com. So, here it is:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/picture-4.png"><img class="alignnone size-full wp-image-68" title="picture-4" src="http://corycollier.com/wp-content/uploads/2008/05/picture-4.png" alt="" width="500" height="206" /></a></p>
<p> </p>
<p>So, the way to check the validity of the email (That&#8217;s right, we&#8217;re at the climax &#8230;. drumroll please &#8230;.), is to type &#8216;RCPT TO:&#8217; and the email address you want to check. I&#8217;m using Gmail as a mail proxy these days, so I don&#8217;t mind handing out my email address: corycollier@corycollier.com. Go ahead and spam me, I dare you. <img src='http://corycollier.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Yeah, so go ahead and test that email. So, it looks like &#8216;RCPT TO: corycollier@corycoller.com&#8217;, and a visual representation looks like:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/picture-5.png"><img class="alignnone size-full wp-image-69" title="picture-5" src="http://corycollier.com/wp-content/uploads/2008/05/picture-5.png" alt="" width="500" height="206" /></a></p>
<p>Wait, it didn&#8217;t tell me anything??!?</p>
<p>Ahhh, but yes it did. This mail server returned a number, before it returned anything else. That number, is ALWAYS a three digit number. 2xx, 3xx, 4xx, or 5xx. 2xx indicates success. So, the 250 blah blah blah, basically means that the email address is valid. Sorta anti-climatic? Maybe, but what&#8217;s the end result? You&#8217;ve just made sure that an email address is valid. Give yourself another pat on the back.</p>
<p>So, just in case you were wondering, I wrote this tutorial on Melissa&#8217;s MacBook. Thanks honey for volunteering your computer long enough for me to write this. Then again, you&#8217;re watching American Idol, so I doubt you need the computer right now. And, since this is a tech tutorial, I doubt you&#8217;ve read this far.</p>
<p> <img src='http://corycollier.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2008/05/check-for-valid-email-with-telnet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Saves E-Mail!</title>
		<link>http://corycollier.com/2008/05/google-saves-e-mail/</link>
		<comments>http://corycollier.com/2008/05/google-saves-e-mail/#comments</comments>
		<pubDate>Wed, 21 May 2008 01:36:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[pop3]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=54</guid>
		<description><![CDATA[I use email a lot. I&#8217;m sure many of you do as well. So why not have a super-safe way to keep all of your email (from as many accounts as you might have) in one place, and get some virus protection to boot? Sound too good to be true? It&#8217;s available to you right [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://corycollier.com/wp-content/uploads/2008/05/gmail-for-you.jpg"><img class="alignleft size-full wp-image-63" title="gmail-for-you" src="http://corycollier.com/wp-content/uploads/2008/05/gmail-for-you.jpg" alt="" width="180" height="115" /></a>I use email a lot. I&#8217;m sure many of you do as well. So why not have a super-safe way to keep all of your email (from as many accounts as you might have) in one place, and get some virus protection to boot?</p>
<p>Sound too good to be true? It&#8217;s available to you right now. Thanks god, errr&#8230;. google&#8230;..</p>
<p><strong>Get Google To Store All Your Email</strong></p>
<p>First, login to gmail (yeah, you have to login first :/ ). Next, find the &#8216;Settings&#8217; link in the top right of your browser.<span id="more-54"></span><a href="http://corycollier.com/wp-content/uploads/2008/05/gmail-1.jpg"><img class="alignnone size-full wp-image-55" title="gmail-1" src="http://corycollier.com/wp-content/uploads/2008/05/gmail-1.jpg" alt="" width="500" height="206" /></a></p>
<p>Once you&#8217;ve clicked on that, you&#8217;ll see the settings page, with some options in the top. You&#8217;ll want to click the &#8216;Accounts&#8217; link in the top left</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/gmail-2.jpg"><img class="alignnone size-full wp-image-56" title="gmail-2" src="http://corycollier.com/wp-content/uploads/2008/05/gmail-2.jpg" alt="" width="499" height="309" /></a></p>
<p>After you&#8217;ve gotten there, notice the region (towards the bottom of the page) that says &#8216;Get mail from other accounts&#8217;.</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/gmail-3.jpg"><img class="alignnone size-full wp-image-57" title="gmail-3" src="http://corycollier.com/wp-content/uploads/2008/05/gmail-3.jpg" alt="" width="500" height="123" /></a></p>
<p>This is where you&#8217;ll add email accounts from. Go ahead and click the &#8216;Add account&#8217; link. After you do this, you should be presented with a pop-up window that will ask you for the email address you wish to replicate on google. It looks like this:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/gmail-5.jpg"><img class="alignnone size-full wp-image-58" title="gmail-5" src="http://corycollier.com/wp-content/uploads/2008/05/gmail-5.jpg" alt="" width="438" height="187" /></a></p>
<p>Go ahead and enter whatever email address you want to use, and click &#8216;Next Step&#8217;. After you&#8217;ve gotten that accomplished, you&#8217;ll be presented with something slightly more involved. Don&#8217;t worry it&#8217;s not too tough to get through.</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/gmail-6.jpg"><img class="alignnone size-full wp-image-59" title="gmail-6" src="http://corycollier.com/wp-content/uploads/2008/05/gmail-6.jpg" alt="" width="500" height="432" /></a></p>
<p>So, the first thing you enter is your username. Most of the time, that will be your full email address. Your password is, well, your password. The POP server is something for you to figure out. Usually, it&#8217;s mail.your-domain.com. So, if your email address is joeballs@physics.org, then the POP server is probably mail.physics.org. Sometimes it&#8217;s pop.physics.org, or pop3.physics.org.</p>
<p>Anyways, once you figure that out, and get it in there, you have a few choices to make.</p>
<p>The checkbox that allows you to leave a copy of the retrieved message on the server can be important. I think I speak for sys admins accross the internet when I say &#8216;Dont check this box!&#8217;. The reason: if you leave this box unchecked, google will remove a message from your server once google downloads it. That&#8217;s great for disk space, and since google seems to be growing hard drives on trees, they might as well do all the storing.</p>
<p>The next option you have, is to use SSL when connecting to your POP server. If your POP server supports this option, do it. While it&#8217;s not likely, it is possible for someone to see your emails as Google downloads them from your mail server. Since e-mail is usually personal, you probably don&#8217;t want this to happen.</p>
<p>After that, there&#8217;s the option to label incoming messages. I really recommend you do this, especially if you&#8217;re using more than one email account here. It really helps to distinguish which email was sent to which address.</p>
<p>Finally, you have the option to Archive incoming messages, so they never hit your inbox. I never use this option, so I can&#8217;t really speak to why you&#8217;d want to. I&#8217;m sure some of you have a reason, so try that one at your own leisure.</p>
<p><strong>Get Google To Send Mail For You</strong></p>
<p>Having Google store all of your mail is only half the battle. The next part, is having google send mail for you too. Back in the &#8216;Accounts&#8217; tab of the &#8216;Settings&#8217; page, find the area for &#8216;Send mail as:&#8217;</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/gmail-7.jpg"><img class="alignnone size-full wp-image-60" title="gmail-7" src="http://corycollier.com/wp-content/uploads/2008/05/gmail-7.jpg" alt="" width="500" height="269" /></a></p>
<p>You have the option to add an email address here. Go ahead and click this. Once you do, another pop-up window will appear that will look like this:</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/gmail-8.jpg"><img class="alignnone size-full wp-image-61" title="gmail-8" src="http://corycollier.com/wp-content/uploads/2008/05/gmail-8.jpg" alt="" width="500" height="359" /></a></p>
<p>You&#8217;ll be prompted for your name and email address. You even have the option to specifiy a different reply-to email address. Go ahead and fill those 2 fields out, then click &#8216;Next Step&#8217;. Then, you&#8217;ll be presented with another window :</p>
<p><a href="http://corycollier.com/wp-content/uploads/2008/05/gmail-9.jpg"><img class="alignnone size-full wp-image-62" title="gmail-9" src="http://corycollier.com/wp-content/uploads/2008/05/gmail-9.jpg" alt="" width="500" height="359" /></a></p>
<p>This is a prompt to let you know an email will be sent to the email address you&#8217;re trying to send as. This helps prevent other people from sending mail on your behalf without you knowing about it. Go ahead and click the &#8216;Send Verification&#8217; button. Google will now send you an email verifying that you actually have a right to send mail as that email. When you get the email, click the link in it, and you&#8217;re done.</p>
<p><strong>Wrapping Up &#8230;</strong></p>
<p>Google has an awesome ability to filter spam and viruses from email. Using Gmail as a proxy for your email cuts down on the spam you recieve, and the likelyhood you&#8217;ll get a virus from your buddy. Even better, you get to use gmail&#8217;s awesome web interface for all of your email.</p>
<p>Currently Gmail supports IMAP integration as well, so your email client (or iPhone) can use IMAP to replicate folders (labels) in GMail. I&#8217;ve heard that&#8217;s a little buggy right now, but I&#8217;m sure fixes are on the way.</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2008/05/google-saves-e-mail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Macbook &amp; Leopard Woes</title>
		<link>http://corycollier.com/2007/11/macbook-leopard-woes/</link>
		<comments>http://corycollier.com/2007/11/macbook-leopard-woes/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 05:27:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[review]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[troubleshoot]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=12</guid>
		<description><![CDATA[A while ago, I replaced a broken screen on my macbook. It was a difficult thing to do, and after I was done, I noticed I wasn&#8217;t able to use the CD / DVD drive any longer. I didn&#8217;t really care too much about the problem, until I got Leopard, and wanted to get it [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, <a href="http://tweakosx.com/index.php/2007/11/19/replace-macbook-screen-a-tutorial/">I replaced a broken screen on my macbook</a>. It was a difficult thing to do, and after I was done, I noticed I wasn&#8217;t able to use the CD / DVD drive any longer. I didn&#8217;t really care too much about the problem, until I got Leopard, and wanted to get it installed on the machine.</p>
<p>So, I got some tools from my buddy Derek, and got to work on it tonight. Taking apart a macbook is a delicate thing to do, and should be taken seriously. I laughed when my wife suggested I just screws into a bag so I didn&#8217;t lose them. Ideally, one should have a clean white surface to place screws that mimics the placement of them in the actual computer.</p>
<p>Anyways, after about an hour of disassembly and inspection, I figured out the issue. One of the brackets that sit above the CD / DVD drive was lodged underneath the CD / DVD player. I fixed the issue and re-assembled the computer in about 10 minutes. Not bad if I may say so myself.</p>
<p>Then I went to <a href="../leopard-was-worth-the-wait">install Leopard</a> .</p>
<p>The first time I attempted the install, I got everything started and left the machine alone. When I went to check on it about a half hour later, I saw a large notification that the install had failed. I tried to restart the machine to re-attempt the install a few times. Each time however, the installer couldn&#8217;t find the HD to install to.</p>
<p>Finally, I got a notification that the HD was formatted in a way that was incompatible for Leopard. If I proceeded with the install, I was going to have to wipe the HD clean. That was a bit daunting to hear, since my wife is the primary user of the computer. If I lose something she cares about, well, I don&#8217;t have to tell you the horrors I&#8217;d face then.</p>
<p>So, I got out my handy-dandy external HD. It&#8217;s really just a shell with an old 120GB IDE thrown in there, but it does the job well. I got everything I could figure she might want off of the computer, and re-started the install process.</p>
<p>When the computer asked where to install Leopard, I recieved the same prompt as before, but this time I went ahead with the install, knowing that I was formatting the hard drive.</p>
<p>After the format was complete, the installer proceeded. I left the machine alone, figuring that I had a while before I needed to do anything with it. About another half hour later I checked on it, only to see another &#8220;Install Failed&#8221; screen. Now I was in a serious bind: would my wife be without a computer at all?</p>
<p>Well, <a href="../upgrading-software-can-be-hell">I&#8217;ve always been one to keep trying until something gives up and works for me</a> . So, I re-started the install again. This time however, I was happy to see that it worked! I went through the typical post-install steps, and was delighted to see my wife&#8217;s macbook successfully running Leopard.</p>
<p>The one issue that did come up afterwards however, was all my iLife apps were gone. I suppose I can&#8217;t complain too much about it. I didn&#8217;t pay for the original iLife apps, so I&#8217;m not out any money. But still, It&#8217;d be really nice to not have to buy soemthing I already had on here.</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2007/11/macbook-leopard-woes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leopard Was Worth The Wait</title>
		<link>http://corycollier.com/2007/11/leopard-was-worth-the-wait/</link>
		<comments>http://corycollier.com/2007/11/leopard-was-worth-the-wait/#comments</comments>
		<pubDate>Sat, 03 Nov 2007 19:20:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[review]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=3</guid>
		<description><![CDATA[The new Apple OS X has finally arrived, and I can tell you one thing: Leopard was definitely worth the wait. A few months ago many of us were enlightened to the new features to be unleashed upon us. Even then, it was apparent that the wait would be worth while. Well, I&#8217;ve recently been [...]]]></description>
			<content:encoded><![CDATA[<p>The <strong>new</strong> Apple OS X has finally arrived, and I can tell you one thing: Leopard was definitely worth the wait. A few months ago many of us were enlightened to the <strong>new</strong> features to be unleashed upon us. Even then, it was apparent that the <a title="WWDC 2007" href="../wwdc2007">wait would be worth while</a>.  Well, I&#8217;ve recently been testing the <strong>new</strong> release out, and here&#8217;s what I have:</p>
<p><strong>The Install was easy! </strong>To install Leopard, insert the DVD provided, and run the installer. You&#8217;re prompted to be sure if you want to install, and upon confirmation, your machine is restarted. After the restart, an optional disk consistency runs. You can cancel this at any time, but I let the whole thing go. It took about an hour. After the consistency, the install itself runs. I was initially prompted that it would take 1 hour and 38 minutes. However, the actual install was done in under 45 minutes.</p>
<p>Once I started my using the <strong>new</strong> OS, it was clear that all of my previous settings had been preserved. I ran all of my critical applications, and all work fine.</p>
<p> </p>
<p>For those of you comparing, here&#8217;s my current setup:</p>
<p><strong>new</strong> 24&#8243; iMac</p>
<p><img class="alignnone" title="My 24 iMac Specs" src="/img/my-imac-specs.png" alt="" width="321" height="393" /><br />
And the Apps I run (not all, just the most necessary)</p>
<ul>
<li>Zend Studio 5.5</li>
<li>CS3 Premium</li>
<li>Firefox, Sunbird,  &amp; Thunderbird</li>
<li>iWork &#8217;08</li>
<li>Coda</li>
<li>Transmit</li>
<li>Adium &amp; Skype</li>
</ul>
<p><strong>The <strong>new</strong> Dock is awesome!</strong></p>
<p><img class="alignnone" title="New Leopard Dock" src="/img/leopard-dock.png" alt="" width="660" height="56" /></p>
<p>I&#8217;m a huge fan of the stack concepts that have been implemented into the <strong>new</strong> dock. The default stacks are &#8216;Documents; and &#8216;Downloads&#8217;. This is great for cleaning up your desktop. I however, don&#8217;t like having all of my commonly accessed programs stuck in the dock, so I added my own stack, &#8216;Applications&#8217;. Adding your own stack is as easy as dragging the folder to the Stack area.</p>
<p><span style="text-decoration: underline;"><img class="alignnone" title="New Leopard Dock Fan View" src="/img/dock-fan-view.png" alt="" width="188" height="598" /></span></p>
<p><img class="alignnone" title="New Leopard Dock Grid View" src="/img/dock-grid-view.png" alt="" width="759" height="667" /></p>
<p>The old marker that signified a running application has been replaced by a nicer, though much less obvious, light underneath the icon. You can change this icon if you like, and there are several tutorials on how to do this already.</p>
<p>Overall, the Dock is much prettier than it used to be. All icons have shadows behind them, and the Dock itself reflects windows near it.</p>
<p><strong>The <strong>new</strong> Finder is awesome! </strong>For those of you who don&#8217;t already know, the <strong>new</strong> Finder allows you to view files with the &#8216;Cover Flow&#8217; view system. This is great for pre-viewing files before opening them. What&#8217;s even better; you can now open many files for even closer preview, without actually opening their default applications! This is a great time saver for those of you with limited system resource, who don&#8217;t want to open very photoshop file in a directory to see which one you want.</p>
<p><img class="alignnone" title="New Leopard Finder" src="/img/new-finder.png" alt="" width="501" height="358" /></p>
<p><img class="alignnone" title="New Quick Look" src="/img/quick-look.png" alt="" width="490" height="527" /></p>
<p>Much of the <strong>new</strong> look of finder is quite similar to iTunes. So mounted drives appear on the left much like an iPod appears on iTunes. Furthermore, unmounted, networked computers now appear the same, just without the option to &#8216;Eject&#8217;. Finding files and folders is cake with Finder&#8217;s great indexing capacities.</p>
<p><span style="text-decoration: underline;"><br />
</span></p>
<p><strong>Apple Mail, is now my mail client.</strong> I&#8217;ve been an ardent user of <a href="http://www.mozilla.com/en-US/thunderbird/">Thunderbird</a> for a couple years now. So I doubted that I would use the <strong>new</strong> Apple Mail, despite all the buzz about it. After trying it out however, it&#8217;s a really fun mail program. The program itself loads quickly, and keeps everything simple. There&#8217;s also a built in RSS reader (nothing <strong>new</strong>). Though I would prefer that iCal be embedded into the program, Mail&#8217;s integration with iCal is certainly good enough.</p>
<p><img class="alignnone" title="New Apple Mail" src="/img/apple-mail.png" alt="" width="514" height="371" /></p>
<p>The one thing I might miss, is the tons of available plugins that are available for Thunderbird. Apple has a weird way of not directly promoting additions to it&#8217;s software.</p>
<p><strong>iChat, is now my IM client. </strong>I&#8217;ve been a big supporer of <a href="http://www.adiumx.com/">Adium</a> for a while now. However, iChat is a great IM client. iChat allows for multiple accounts, which was largely why I used Adium for so long. What&#8217;s more, video and audio chats are a snap. All you have to do is click one of the available buttons while selected on a buddy, and you initiate that form of chat.</p>
<p><img class="alignnone" title="New Leopard iChat" src="/img/ichat.png" alt="" width="162" height="376" /></p>
<p>The only thing I wish that iChat had, was the ability to send notifications to Growl. I&#8217;m a huge fan of Growl for notifications of program events, and anything that integrates with it, I always check out.</p>
<p><strong>Photo Booth is awesome! </strong>Photo Booth has always been one of my favorite Apple programs that come standard on macs. That&#8217;s how I got those candid shots of <a href="../bender-sleeping-on-the-job">Bender sleeping on the job</a> ! With the <strong>new</strong> Photo Booth, custom backgrounds are introduced. All that&#8217;s necessary is to activate the video background, then step out of the picture. Once your background is detected, you can re-enter the photo and voila, you&#8217;re in France!</p>
<p><img class="alignnone" title="New Leopard Photo Booth" src="/img/photo-booth.png" alt="" width="432" height="457" /></p>
<p>As you can see from the picture here, the background detection isn&#8217;t perfect, and could still use some work.</p>
<p><strong>Spaces is alright. </strong>I&#8217;ve heard a lot of buzz about the <strong>new</strong> &#8216;Spaces&#8217; feature for Leopard. I&#8217;m a little less than impressed however. Video card vendors manufacturers have been providing this type of service for a long time now. So, I&#8217;m not all to sure why there&#8217;s been such hype about the feature. Don&#8217;t get me wrong, Spaces is cool. It is a clean way of having more than one desktop at a time. However, this is not breakthrough by any means.</p>
<hr size="2" />There are quite a few features that I have yet to try out.</p>
<p> </p>
<p> </p>
<p><strong>Time Machine</strong> &#8211; I know, I know. This is supposed to be an amazing <strong>new</strong> feature for OS X, and certainly worth the cost of the OS itself. There are well known bugs however, about trying to use Time Machine without an external HD already set up. What&#8217;s more, the external HD should be a large one, as Time Machine is not light on space. I&#8217;m a little pressed for cash right now, so I&#8217;ll have to try this one out later.</p>
<p><strong>Parental Controls</strong> &#8211; Hey, I don&#8217;t have kids. It might still be a good idea to keep my wife from viewing inappropriate websites, but I don&#8217;t think she&#8217;d like that to much.</p>
<p><strong>Boot Camp</strong> &#8211; I&#8217;m already running Parallels, so I don&#8217;t feel the need to use this. Parallels does everything I need for running multiple OS&#8217;s on the same machine.</p>
<h2>Conclusion</h2>
<p>As is quite evident, I&#8217;m thoroughly happy with Apple&#8217;s <strong>new</strong> OS X release. There are a few features that I wish were available, but as a software developer, I recognize the need to release a product without some features is greater than waiting infinitely to release the &#8216;Perfect Product&#8217;.</p>
<p>As always, I welcome your comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2007/11/leopard-was-worth-the-wait/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Analytics is Down!</title>
		<link>http://corycollier.com/2007/07/google-analytics-is-down/</link>
		<comments>http://corycollier.com/2007/07/google-analytics-is-down/#comments</comments>
		<pubDate>Mon, 30 Jul 2007 22:33:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[outage]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=29</guid>
		<description><![CDATA[Google Analytics is Down! That&#8217;s the worst news any webmaster can hear. I&#8217;ve already received phone calls from clients wondering why they&#8217;ve lost traffic to their site. It appears that people can still use their account, but recent visits aren&#8217;t showing up. The official story is the data isn&#8217;t lost. It&#8217;s still being collected. It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Google Analytics is Down! That&#8217;s the worst news any webmaster can hear. I&#8217;ve already received phone calls from clients wondering why they&#8217;ve lost traffic to their site. It appears that people can still use their account, but recent visits aren&#8217;t showing up.</p>
<p>The official story is the data isn&#8217;t lost. It&#8217;s still being collected. It&#8217;s just taking a while for google to fix their issue and get the recent traffic data out to the public.</p>
<p>The exact cause of the outage has yet to be released. However, there is a lot of speculation that it&#8217;s due to the &#8216;upgrade&#8217; that the reporting service received in May. That upgrade caused a similar, but less severe outage, back then as well.</p>
<p>There&#8217;s a good thread going about this <a title="Google Analytics is down, forum" href="http://groups.google.com/group/analytics-help-basics/browse_thread/thread/d65e41aceb928966/bc210e129dde1de6#bc210e129dde1de6">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2007/07/google-analytics-is-down/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safari 3 Poses New Opportunities, Challenges For Web Developers</title>
		<link>http://corycollier.com/2007/06/safari-3-poses-new-opportunities-challenges-for-web-developers/</link>
		<comments>http://corycollier.com/2007/06/safari-3-poses-new-opportunities-challenges-for-web-developers/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 23:22:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[review]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=18</guid>
		<description><![CDATA[Today Apple announced the immediately available Safari 3 Beta. It&#8217;s also available for Windows users. This is a huge development for Apple, which seems to enjoy invading Microsoft&#8217;s space every chance they can get. There are other new features, which bear good reason to talk about. First, there are all of the announced changes from [...]]]></description>
			<content:encoded><![CDATA[<p>Today Apple announced the immediately available Safari 3 Beta. It&#8217;s also available for Windows users. This is a huge development for Apple, which seems to enjoy invading Microsoft&#8217;s space every chance they can get. There are other new features, which bear good reason to talk about.</p>
<p>First, there are all of the announced changes from Apple:</p>
<ol>
<li>Blazing Performance</li>
<li>Elegant User Interface</li>
<li>Easy Bookmarks</li>
<li>Pop-up Blocking</li>
<li>Inline Find</li>
<li>Tabbed Browsing</li>
<li>SnapBack</li>
<li>Forms AutoFill</li>
<li>Built-in RSS</li>
<li>Resizable Text Fields</li>
<li>Private Browsing</li>
<li>Security</li>
</ol>
<p>These are all debatable, especially the &#8216;Blazing Performance&#8217;, but a few of these really stand out.</p>
<p>Namely, Resizable Text Fields. I checked on this, and sure enough, users can resize textarea elements in a form. Your layouts will be critical now, that the user can change the size of the containing element(s) well after your page has rendered. I wonder how many AJAX apps are going to be broken because of this.</p>
<p>Also, all of the form elements can be styled now! That&#8217;s a big departure from previous versions of Safari. I&#8217;m glad the &#8216;Safari form elements are perfect&#8217; snobbery has been replaced with an attitude more conscientious the of needs of web developers</p>
<p>The next big development is the find feature. Typing in the find area dynamically pops up results on the page, as they&#8217;re found. The UI for this is amazing, and really shows the talent at Apple.</p>
<p>Of course the big question on everyone&#8217;s mind is, &#8216;How is all of this going to work on Windows?!&#8217;</p>
<p>Well the executive summary is: It does work, and it works well.</p>
<p><a title="Safari Windows Installer" href="../files/Picture%201_0.png"> <img title="Safari Windows Installer" src="../files/Picture%201_0.png" alt="Safari Windows Installer" width="161" height="129" align="right" /> </a></p>
<p>Tom and I loaded up Safari 3 though Parallels 3.0 on his machine running Windows XP Pro. The installer was typical Windows stuff. We were prompted to install the Bonjour Service and Apple Software Update Service for Windows.</p>
<p><a title="Safari Installer Options" href="../files/Picture%202.png"> <img title="Safari Installer Options" src="../files/Picture%202.png" alt="Safari Installer Options" hspace="5" vspace="5" width="160" height="125" align="left" /> </a>This is another big development that I don&#8217;t think a lot of other people have mentioned yet. Bonjour is a great program for Mac, that now will be available for Windows too!?! Apple Software Update will also run on Windows?!? We&#8217;re going to be talking about this for a long time.</p>
<p>After we installed Safari, we encountered our first problem. For some reason (we don&#8217;t know why yet), after we installed Safari, the network adapter for Windows stopped working. We used Parallels to specify the shared adapter, and everything worked again.</p>
<p><a title="Safari Installer Options" href="../files/Picture%202.png"> </a></p>
<p>The <a title=" Windows With Safari" href="../files/Picture%205.png"> <img title="Windows With Safari" src="../files/Picture%205.png" alt="Windows With Safari" hspace="5" vspace="5" width="165" height="116" align="right" /> </a>app itself looks great on windows. It&#8217;s not bound by the typical Windows frame. Safari 3 basically looks the same as iTunes already does.<a title=" Windows With Safari" href="../files/Picture%205.png"> </a> <a title=" Windows With Safari" href="../files/Picture%205.png"> </a></p>
<p>It was really strange to see Safari as an option in the Start Menu:</p>
<p><a href="../files/Picture%204.png"> <img title="Safari In Start Menu" src="../files/Picture%204.png" alt="Safari In Start Menu" width="487" height="304" /> </a></p>
<p>One thing that is still frustratingly still an issue is HTTP_AUTH between Safari and Microsoft IIS servers. Even if this is a problem with Microsoft, I think the developers could figure some type of workaround for this.</p>
<p>Another problem I have with Safari, is lack of code-coloring in the view source window. I have yet to see a developer toolbar built for Safari (I live by Firebug), and until there is one, I&#8217;m not leaving Firefox.</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2007/06/safari-3-poses-new-opportunities-challenges-for-web-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alternative PHP Cache Problems</title>
		<link>http://corycollier.com/2007/05/alternative-php-cache-problems/</link>
		<comments>http://corycollier.com/2007/05/alternative-php-cache-problems/#comments</comments>
		<pubDate>Thu, 31 May 2007 18:32:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[troubleshoot]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=28</guid>
		<description><![CDATA[Recently, Derek and I were running into problems with CGI errors on our development server for NFI Studios. We had recently upgraded our PHP install from 5.0 to 5.2, so we started looking for differences between the two. After a brief search on Google, I came up with a German forum with a potential solution: [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, <a href="http://derekgallo.com/">Derek</a> and I were running into problems with CGI errors on our development server for <a href="http://nfistudios.com/">NFI Studios</a>. We had recently upgraded our PHP install from 5.0 to 5.2, so we started looking for differences between the two.</p>
<p>After a brief search on Google, I came up with a German forum with a potential solution: APC (Alternative PHP Cache). It turns out that Caching for PHP 5.2 is different than for PHP 5.0. So, I turned of APC (by editing the php.ini file).</p>
<p>For all of you coders out there, just an FYI.</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2007/05/alternative-php-cache-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Published Javascript Errors</title>
		<link>http://corycollier.com/2007/05/published-javascript-errors/</link>
		<comments>http://corycollier.com/2007/05/published-javascript-errors/#comments</comments>
		<pubDate>Tue, 15 May 2007 02:22:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[tech]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[errata]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://corycollier.com/?p=20</guid>
		<description><![CDATA[Recently, I had to write some javascript for field validation of a form. I wanted to be able to create a div element to cover the entire page, then display a modal window above that describing the user&#8217;s error. This required me to know the existing dimensions of the user&#8217;s browser window. That&#8217;s not handled [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I had to write some javascript for field validation of a form. I wanted to be able to create a div element to cover the entire page, then display a modal window above that describing the user&#8217;s error. This required me to know the existing dimensions of the user&#8217;s browser window.</p>
<p>That&#8217;s not handled the same from browser to browser. The most notable difficulty is handling users with Internet Explorer (very common problem). I wrote all of the field validation and message creating myself, and I relied on a piece of code from <a href="http://davidflanagan.com/javascript5">David Flanagan&#8217;s Javascript 5</a> for determining window sizes.</p>
<p>Everything was working fine, until someone used IE6 to test. Of course, my code failed. I went through everything, looking for the culprit behind my disdain. Eventually, <a href="http://derekgallo.com/">Derek</a> got involved and we started checking the code out line by line.</p>
<p>It turns out, the error wasn&#8217;t mine. The error belongs to <a href="http://davidflanagan.com/">David Flanagan</a>, a well respected and published software author! The root of all evil lied in his code for determining the coordinates of the browser on the users screen.</p>
<p>Examine the code below:</p>
<pre><span style="color: #333399;">var</span> Geometry = {};

<span style="color: #333399;">if</span> (<span style="color: #800080;">window</span>.screenLeft) { // IE and others
    Geometry.getWindowX = function() { <span style="color: #333399;">return</span> <span style="color: #800080;">window</span>.screenLeft; };
    Geometry.getWindowY = function() { <span style="color: #333399;">return</span> <span style="color: #800080;">window</span>.screenTop; };
}
<span style="color: #333399;">else if</span> (<span style="color: #800080;">window</span>.screenX) { // Firefox and others
    Geometry.getWindowX = function() { <span style="color: #333399;">return</span> <span style="color: #800080;">window</span>.screenX; };
    Geometry.getWindowY = function() { <span style="color: #333399;">return</span> <span style="color: #800080;">window</span>.screenY; };
}</pre>
<p>What happens when the window position (top or left) is zero? Think about that for a minute before you answer. In Javascript, the number 0 has more than one meaning, doesn&#8217;t it?</p>
<pre>Then..</pre>
<pre>function() { <span style="color: #333399;">return</span> <span style="color: #800080;">window</span>.screenLeft; };</pre>
<pre>function() { <span style="color: #333399;">return</span> <span style="color: #800080;">0</span>; };</pre>
<pre>which is equal to...</pre>
<pre>function(){ <span style="color: #333399;">false</span>;}</pre>
<p>So when I was trying to access Geometry.getWindowX(), I get &#8220;<span class="objectBox objectBox-errorMessage hasTwisty hasBreakSwitch opened">Geometry.getWindowX is not a function&#8221;.</span></p>
<p>Here come the naysayers with their proof positive of why a loosely typed language is a bad idea. I hear what you guys are saying, and I still think you&#8217;re wrong. There&#8217;s a fix to this:</p>
<pre><span style="color: #333399;">if</span> (<span style="color: #33cccc;">typeof<span style="color: #000000;">(</span></span>window.screenLeft) <span style="color: #0000ff;">== 'number'</span>) { // IE and others
	Geometry.getWindowX 			= function() { <span style="color: #333399;">return</span> <span style="color: #800080;">window</span>.screenLeft; };
	Geometry.getWindowY 			= function() { <span style="color: #333399;">return</span> <span style="color: #800080;">window</span>.screenTop; };
}</pre>
<p>Notice how I merely prefix the javascript function &#8216;typeof&#8217; to my if statement? That function returns a string describing the type of argument passed to it. Just by adding that function, my code was working. It sort of &#8216;hints&#8217; to javascript what type to expect from the window and document objects. It&#8217;s not typecasting, but it&#8217;s just enough to make sure that Javascript is interpreting the number 0 as a number and not a boolean false.</p>
<p>For you developers out there, it&#8217;s worth your while to look around and see where you&#8217;re creating eventhandlers or callbacks where your return type might not be what you want it to be.</p>
<p>I checked David Flanagan&#8217;s site for any listing of errata, and came up with nothing. I know this is wrong, since I&#8217;ve seen a listing of known errors before. I didn&#8217;t see a way to contact him regarding the error, so I can only assume he&#8217;s aware of it, and doesn&#8217;t care about nit-pickers like me.</p>
<p>That&#8217;s fine with me.</p>
]]></content:encoded>
			<wfw:commentRss>http://corycollier.com/2007/05/published-javascript-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
