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

<channel>
	<title>RobertBolton.com</title>
	<link>http://www.robertbolton.com</link>
	<description>A lot to do about nothing</description>
	<pubDate>Thu, 17 Jul 2008 17:49:22 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.2</generator>
	<language>en</language>

		<item>
		<title>Export RSS Feeds from Outlook and Import Into Google Reader</title>
		<link>http://www.robertbolton.com/export-rss-feeds-from-outlook-and-import-into-google-reader</link>
		<comments>http://www.robertbolton.com/export-rss-feeds-from-outlook-and-import-into-google-reader#comments</comments>
		<pubDate>Thu, 17 Jul 2008 17:44:44 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
	<category>How To</category>
		<guid>http://www.robertbolton.com/export-rss-feeds-from-outlook-and-import-into-google-reader</guid>
		<description><![CDATA[	Exporting your Feeds out of Outlook
	

Select the file menu from Outlook
	Choose Import and Export
	Choose Export RSS Feeds to an OPML file
	Click Next
	Choose the RSS feeds you wish to export, or hit Select All to select all the feeds.
	Click Next
	Click the Browse button to find the location where you want to save the OPML file, type [...]]]></description>
			<content:encoded><![CDATA[	<h2>Exporting your Feeds out of Outlook</h2>
	<p><img src='/wp-content/opml1.jpg' alt='Export RSS Feed from Outlook' />
<ol>
<li>Select the file menu from Outlook</li>
	<li>Choose Import and Export</li>
	<li>Choose Export RSS Feeds to an OPML file</li>
	<li>Click Next</li>
	<li>Choose the RSS feeds you wish to export, or hit Select All to select all the feeds.</li>
	<li>Click Next</li>
	<li>Click the Browse button to find the location where you want to save the OPML file, type in the name you wish the file to have and hit Save</li>
	<li>Click Next and the file will be saved to the location you selected in the previous step</li>
</ol>
	<p><img src='/wp-content/opml2.jpg' alt='Select RSS Feed to Export' /><br />
<h2>Importing into Google Reader</h2>
	<p>Whether or not you use Google Reader or another service, you will simply need to upload the OPML file to the program of your choice. For Google Reader, do the following from the main page in Google Reader:
<ol>
<li>Click on the Manage Subscriptions link in the lower left hand corner</li>
	<li>Click on the Import/Export link towards the top of the page</li>
	<li>Click the Browse button to search your computer for the OPML file you saved earlier</li>
	<li>Click the Upload button to upload the file and add the feeds to Google Reader</li>
</ol>
<br />
<img src='/wp-content/gReader1.jpg' alt='Manage Google Reader Subscriptions' /><br />
<img src='/wp-content/gReader2.jpg' alt='Upload OPML file' align='left' />
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/export-rss-feeds-from-outlook-and-import-into-google-reader/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Technorati API Down?</title>
		<link>http://www.robertbolton.com/technorati-api-down</link>
		<comments>http://www.robertbolton.com/technorati-api-down#comments</comments>
		<pubDate>Sun, 15 Jun 2008 15:36:46 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>PHP</category>
	<category>Zend Framework</category>
		<guid>http://www.robertbolton.com/technorati-api-down</guid>
		<description><![CDATA[	
	I have been working with a couple of web services lately (see prior post on Zend framework and Gdata), and upon deploying my application found out the technorati part of my site wasn&#8217;t working. I ran my unit tests, and multiple errors occured, saying the script wasn&#8217;t able to connect to the url:
	Fatal error: Uncaught [...]]]></description>
			<content:encoded><![CDATA[	<p><!--adsense--></p>
	<p>I have been working with a couple of web services lately (see prior post on <a href="/zend-framework-and-youtube-api">Zend framework and Gdata</a>), and upon deploying my application found out the technorati part of my site wasn&#8217;t working. I ran my unit tests, and multiple errors occured, saying the script wasn&#8217;t able to connect to the url:</p>
	<p>Fatal error: Uncaught exception &#8216;Zend_Http_Client_Adapter_Exception&#8217; with message &#8216;Unable to Connect to tcp://api.technorati.com:80. Error #110:<br />
Connection timed out&#8217;</p>
	<p>This happened last night, and again this morning. I tried to access the API straight through the browser (http://api.technorati.com/search?key=[apikey]&#038;query=[words]), and the service is unavailable.  So fairly sure it isn&#8217;t a result of the Zend Framework or my code. Can&#8217;t find any info on the web, so not sure what is going on&#8230; I&#8217;ll have to check in another day or two and see if it is back up or any other info is available.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/technorati-api-down/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Zend Framework and Youtube API</title>
		<link>http://www.robertbolton.com/zend-framework-and-youtube-api</link>
		<comments>http://www.robertbolton.com/zend-framework-and-youtube-api#comments</comments>
		<pubDate>Wed, 07 May 2008 23:57:09 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>PHP</category>
	<category>Zend Framework</category>
		<guid>http://www.robertbolton.com/zend-framework-and-youtube-api</guid>
		<description><![CDATA[	
	I have been messing around with the different Zend_Service components available in the framework, and in general am very pleased with the ease of use and functionality. However, Zend_Gdata seems somewhat complicated. Now I must admit that I have not spent much time with classes, and I am sure the structure is set up to [...]]]></description>
			<content:encoded><![CDATA[	<p><!--adsense--></p>
	<p>I have been messing around with the different Zend_Service components available in the framework, and in general am very pleased with the ease of use and functionality. However, Zend_Gdata seems somewhat complicated. Now I must admit that I have not spent much time with classes, and I am sure the structure is set up to accommodate the large amount of services that Google provides, but there is very little documentation and the API doesn&#8217;t seem easily comprehensible, atleast compared to the Yahoo and Technorati APIs. </p>
	<p>It appears that Google staff wrote the code, and I guess that is why it breaks with the naming convention - i.e. all the other Services fall under Zend_Services_***, while Google&#8217;s is Zend_Gdata. I am interested in the Youtube API, and it was easy to construct the query and get the result set back, but I found the result set to contain a lot of information (most of which was extraneous from my point of view), with many classes in it. Again, I was quickly trying to get it working and not at all interested in spending a lot of time learning the ins and outs of Google&#8217;s API&#8217;s. I am sure it will all click as I learn the other parts of Zend_Gdata, but for now, it is a pain.</p>
	<p>For example, using the <a href="http://framework.zend.com/manual/en/zend.gdata.youtube.html#zend.gdata.youtube.videos">code from the documentation</a>, when you grab a result set and iterate through it, how do you grab the <i>src</i> for the flash movie? Digging through the code, I found it was $videoEntry->mediaGroup->content[0]->getUrl(). That&#8217;s not to difficult, but then I noticed some of the results didn&#8217;t have any data for $videoEntry->mediaGroup->content. Is that a fluke, or by design? What do the values in the content object mean? I can guess what isDefault means and most of them are obvious, but the comments in the code are completely worthless (well not completely, as it does tell me that the channels property of the MediaContent object is a integer&#8230;). What&#8217;s the deal with the array of values - is the first value in the thumbnail array the preferable image, or just the first frame from the movie? I tried looking at the <a href="http://code.google.com/apis/youtube/reference.html">Google API docs</a>, but that surprisingly didn&#8217;t seem to shed much light either. </p>
	<p>I guess I should get off my ass, learn the API and contribute to the documentation. But its just so much easier to complain. Anyways, here is what I have quickly worked out. Once I start playing with the other Google services and have a better understanding of how all the classes fit together, I&#8217;ll let you know&#8230;</p>
	<div id="phpizer_div_1" class="code">
<code><span style="color: #000000"><br />
<span style="color: #0000BB">&lt;?php<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$yt&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">Zend_Gdata_YouTube</span><span style="color: #007700">();<br />
</span><span style="color: #0000BB">$query&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$yt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newVideoQuery</span><span style="color: #007700">();<br />
</span><span style="color: #0000BB">$query</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">videoQuery&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">&#8216;cat&#8217;</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">$query</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">startIndex&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">10</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">$query</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">maxResults&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">20</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">$query</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">orderBy&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">&#8216;viewCount&#8217;</span><span style="color: #007700">;</p>
	<p>echo&nbsp;</span><span style="color: #0000BB">$query</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">queryUrl&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">&#8220;n&#8221;</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">$videoFeed&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$yt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getVideoFeed</span><span style="color: #007700">(</span><span style="color: #0000BB">$query</span><span style="color: #007700">);&nbsp;</p>
	<p>foreach&nbsp;(</span><span style="color: #0000BB">$videoFeed&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$videoEntry</span><span style="color: #007700">)&nbsp;{<br />
&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">&#8220;&#8212;&#8212;&#8212;VIDEO&#8212;&#8212;&#8212;-n&#8221;</span><span style="color: #007700">;<br />
&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">&#8220;Title:&nbsp;&#8221;&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$videoEntry</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">mediaGroup</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">title</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">&#8220;n&#8221;</span><span style="color: #007700">;<br />
&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">&#8220;Description:&#8221;&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$videoEntry</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">mediaGroup</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">description</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">text&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">&#8220;n&#8221;</span><span style="color: #007700">;<br />
&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">&#8220;Url&nbsp;to&nbsp;the&nbsp;Youtube&nbsp;page:&nbsp;&#8221;&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$videoEntry</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">mediaGroup</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">player</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]-&gt;</span><span style="color: #0000BB">getUrl</span><span style="color: #007700">()&nbsp;.&nbsp;</span><span style="color: #DD0000">&#8220;n&#8221;</span><span style="color: #007700">;<br />
&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">&#8220;Thumbnail&nbsp;image&nbsp;of&nbsp;the&nbsp;video:&nbsp;&#8221;&nbsp;</span><span style="color: #007700">.&nbsp;&nbsp;</span><span style="color: #0000BB">$videoEntry</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">mediaGroup</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">thumbnail</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]-&gt;</span><span style="color: #0000BB">getUrl</span><span style="color: #007700">()&nbsp;.&nbsp;</span><span style="color: #DD0000">&#8220;n&#8221;</span><span style="color: #007700">;<br />
&nbsp;&nbsp;if(!empty(</span><span style="color: #0000BB">$videoEntry</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">mediaGroup</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">content</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">&#8220;Src&nbsp;to&nbsp;the&nbsp;video&nbsp;:&nbsp;&#8221;&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$videoEntry</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">mediaGroup</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">content</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]-&gt;</span><span style="color: #0000BB">getUrl</span><span style="color: #007700">()&nbsp;.&nbsp;</span><span style="color: #DD0000">&#8220;n&#8221;</span><span style="color: #007700">;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">&#8220;nnn&#8221;</span><span style="color: #007700">;<br />
}<br />
<br /></span><span style="color: #0000BB">?&gt;<br /></span><br />
</span><br />
</code></div>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/zend-framework-and-youtube-api/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Yahoo Opens Up</title>
		<link>http://www.robertbolton.com/yahoo-opens-up</link>
		<comments>http://www.robertbolton.com/yahoo-opens-up#comments</comments>
		<pubDate>Thu, 24 Apr 2008 20:58:41 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
	<category>Online Advertising</category>
		<guid>http://www.robertbolton.com/yahoo-opens-up</guid>
		<description><![CDATA[	
	An article talks about the opening up of Yahoo, both its embrace of open source and the company’s desire to open its platform to 3rd party developers. I have seen a lot of good things come out of Yahoo in the past couple of years, from Yahoo Site Explorer to Yahoo Pipes to Yahoo’s contributions [...]]]></description>
			<content:encoded><![CDATA[	<p><!--adsense--></p>
	<p><a href="http://kara.allthingsd.com/20080418/open-season-at-yahoo/">An article</a> talks about the opening up of Yahoo, both its embrace of open source and the company’s desire to open its platform to 3rd party developers. I have seen a lot of good things come out of Yahoo in the past couple of years, from <a href="http://siteexplorer.search.yahoo.com/">Yahoo Site Explorer</a> to <a href="http://pipes.yahoo.com/pipes/">Yahoo Pipes</a> to Yahoo’s contributions to PHP, especially Unicode support in PHP 6.</p>
	<p>The <a href="http://www.techcrunch.com/2008/04/24/yahoo-open-search-platform-launches-into-private-beta/">Search Monkey</a> initiative looks very promising, and gives developers a lot of latitude in how they present their sites in the search results. Of course it will require individual users downloading your customizations, but for websites with dedicated users who also use Yahoo, I would think it would be fairly easy to get people to install your app. </p>
	<p>I am interested to see what else Yahoo has up its sleeves. Sounds like the MS acquisition ballyhoo hasn’t stopped innovation at Yahoo; in fact, it may have done the opposite, as Yahoo sees the need to rapidly launch new products and increase the amount eyesballs and time spent on their site.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/yahoo-opens-up/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>AdCenter Analytics</title>
		<link>http://www.robertbolton.com/adcenter-analytics</link>
		<comments>http://www.robertbolton.com/adcenter-analytics#comments</comments>
		<pubDate>Tue, 22 Apr 2008 21:47:21 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Google Analytics</category>
		<guid>http://www.robertbolton.com/adcenter-analytics</guid>
		<description><![CDATA[	
	I finagled access to Microsoft’s AdCenter Analytics and spent an hour going through the UI and checking out the functionality. It contains the standard functionality found in free analytics package, with the ability to track marketing campaigns and report on revenue. You can set up goals in case reporting on revenue isn’t you thing, and [...]]]></description>
			<content:encoded><![CDATA[	<p><!--adsense--></p>
	<p>I finagled access to Microsoft’s AdCenter Analytics and spent an hour going through the UI and checking out the functionality. It contains the standard functionality found in free analytics package, with the ability to track marketing campaigns and report on revenue. You can set up goals in case reporting on revenue isn’t you thing, and AdCenter Analytics also supports setting up funnels to determine pain points in your site. </p>
	<p>I had heard a year ago that Microsoft was including some slick new visualization tools in the offering. The app contains a tree view, which is a visualization of traffic stats and I found it mildly interesting, but probably not something I would use that often.  It also offers a number of different graphs. For example, the visitors stats are represented by three different graphs, one in monthly increments, one if weekly increments and one in daily increments. You can click on the increment to limit the data to that specific date range. Again, this is something that is interesting, but not a feature that would make me want to sign up for the account. </p>
	<p>The one interesting feature I encountered was the ability to automatically install the script on your site via a connection to your FTP server. I’m not sure how it works – does it open all your html files and insert the script in the bottom? I guess that would be useful for small sites. </p>
	<p>There is a fairly intuitive tool to exclude query string parameters for dynamic urls and also exclude IP addresses. This seems easier but less flexible than Google Analytic’s filters. The IP address exclusion allows you to exclude C and B address blocks by using &#8220;*&#8221;, but it doesn’t support regular expressions, which is fine for most people. But that could become an issue if you needed to block a subset of IP addresses. </p>
	<p>All in all it is a decent offering, but I didn’t see anything there that would make me want to switch or even sign up in addition to the current web analytics programs I use. As a new entrant to the field, I would have thought they would have some killer feature to gain traction. But that doesn’t appear to be the case. </p>
	<p><img src='/wp-content/AdCenter1.jpg' alt='Adcenter Pic' /> <br />
<img src='/wp-content/AdCenter2.jpg' alt='Adcenter Pic 2' />
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/adcenter-analytics/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Book Review : Zend Framework in Action</title>
		<link>http://www.robertbolton.com/book-review-zend-framework-in-action</link>
		<comments>http://www.robertbolton.com/book-review-zend-framework-in-action#comments</comments>
		<pubDate>Thu, 10 Apr 2008 16:02:13 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>PHP</category>
	<category>Book Review</category>
	<category>Zend Framework</category>
		<guid>http://www.robertbolton.com/book-review-zend-framework-in-action</guid>
		<description><![CDATA[	
	I signed up for the Manning early access program for Zend Framework in Action to get information on the ACL functionality in the framework and the book provided some useful examples. I was a bit underwhelmed by the content in the first release, but I guess that is to be expected when viewing a rough [...]]]></description>
			<content:encoded><![CDATA[	<p><!--adsense--></p>
	<p>I signed up for the Manning early access program for <a href=" http://www.manning.com/allen/">Zend Framework in Action</a> to get information on the ACL functionality in the framework and the book provided some useful examples. I was a bit underwhelmed by the content in the first release, but I guess that is to be expected when viewing a rough cut.</p>
	<p>This release (the 2nd) is a vast improvement, and the book is really starting to come together.  I like how the authors go into detail about testing, showing not only how to test your models, but also how to test controllers, and showing some common set up steps. It doesn’t cover all the details of testing, nor should it, but the book provides a solid background to build upon. This is refreshing compared to most books which simply mention testing and say whole books have been written about it. </p>
	<p>The book does a good job of logically building upon previous examples, and I felt the flow was good when introducing more complex topics like Plugins and ActionHelpers. This version was updated to include Zend_Layout, including info on partials and ActionStack plugin, but the chapter on forms is not complete yet – looking forward to reading that when it comes out.  </p>
	<p>I thought the AJAX chapter was a little shaky. Maybe it’s me, but I felt the authors spent too much time going over a general ajax request sans the framework. By the time they work the framework into the equation, they are using an include file in a controller action to bring in some procedural code written earlier. And that procedural code lives in the models folder – it just doesn’t seem right to me. I think this would have been a good opportunity to use Zend_Filter, although it is used in later in the book when discussing Zend_Search_Lucene (the chapter on this is very thorough and easy to understand). Also, they recommend using separate controllers/actions for Ajax requests and not rendering the view in each action method. That’s fine, but I would also like to have seen using a Plugin in the dispatch loop to detect an Ajax request and automatically turn off Zend_View/Zend_Layout.  </p>
	<p>I like how the authors occasionally work in design patters, such as the registry, and the observer pattern in the search chapter. The authors describe using the observer pattern with hooks in the DB class (hooks which I didn’t know existed) to update the search index.</p>
	<p>The chapter on deployment was good; most books don’t seem to tackle this. My only quibble is when discussing setting up virtual hosts, they say to make sure to enable AllowOverride to use .htaccess. I don’t have any problem with this, but since the book is talking about Virtual Hosts, they should recommend putting the redirects in the httpd.conf file, rather than relying on .htaccess, as it is more efficient due to the fact that Apache doesn’t need to read a file on every request. </p>
	<p>At times I felt like there may be too much ancillary topics covered, however, after finishing the book, I felt overall it was good that topics such as testing, deployment, and version control were covered. While there isn’t enough information to provide in depth coverage, it exposures the reader to these topics and provides enough information to get started, rather than just briefly mentioning it. And the coverage of the different components with the Zend Framework is comprehensive and understandable. If you are looking at working with the Zend Framework, I would definitely recommend this book.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/book-review-zend-framework-in-action/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>24% Percent of Users Can&#8217;t Find Google</title>
		<link>http://www.robertbolton.com/24-percent-of-users-cant-find-google</link>
		<comments>http://www.robertbolton.com/24-percent-of-users-cant-find-google#comments</comments>
		<pubDate>Fri, 28 Mar 2008 22:43:03 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://www.robertbolton.com/24-percent-of-users-cant-find-google</guid>
		<description><![CDATA[	Over on usability guru Jakon Nielsen&#8217;s blog, he throws out a statistic that 24% of users in a recent study couldn&#8217;t navigate to google to perform a search - they either went to a different search engine or just failed.  How you fail at that task is beyond me. Do you look at the [...]]]></description>
			<content:encoded><![CDATA[	<p>Over on usability guru <a href="http://www.useit.com/alertbox/designer-user-differences.html">Jakon Nielsen&#8217;s blog</a>, he throws out a statistic that 24% of users in a recent study couldn&#8217;t navigate to google to perform a search - they either went to a different search engine or just failed.  How you fail at that task is beyond me. Do you look at the browser, throw up your hands, and scream &#8220;I don&#8217;t know how to use the damn thing!!&#8221;. </p>
	<p>I generally try not to be critical of non-tech savvy people, as I spend way too much time online and its only normal that things that make perfect sense to me can baffle other people. A couple of years ago a friend handed me a socket wrench when I asked for help on my car. He was amazed that I had no idea what to do with it - but hey, I had never done any work on a car engine, let alone even change the oil. It&#8217;s all perspective I guess. The scary thing about the study is this quote &#8220;Also, for this round of research we&#8217;re deliberately recruiting above-average users, so the success rate across all Internet users is probably lower than our finding.&#8221; If 24% of above average users can&#8217;t navigate to Google, then my perception of the web is way out of wack with the general population. I would have guessed in 1% to 2% range&#8230;
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/24-percent-of-users-cant-find-google/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Loading Zend Config file for a Cron Job</title>
		<link>http://www.robertbolton.com/loading-zend-config-file-for-a-cron-job</link>
		<comments>http://www.robertbolton.com/loading-zend-config-file-for-a-cron-job#comments</comments>
		<pubDate>Sun, 23 Mar 2008 17:27:18 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>PHP</category>
	<category>Zend Framework</category>
		<guid>http://www.robertbolton.com/loading-zend-config-file-for-a-cron-job</guid>
		<description><![CDATA[	The other day I talked about using Apache Environment variables to determine which section of a config file to use for a Zend Framework website. That works swimmingly, however, I had a cron job that was running for the same site, and since it was piped directly to php, Apache Environment variables were not an [...]]]></description>
			<content:encoded><![CDATA[	<p>The other day I talked about using <a href="/deploying-the-zend-framework-with-apache-environment-variables">Apache Environment variables</a> to determine which section of a config file to use for a Zend Framework website. That works swimmingly, however, I had a cron job that was running for the same site, and since it was piped directly to php, Apache Environment variables were not an option. Fortunately, PHP has the function php_uname(&#8217;n') which will output the hostname of the computer. You can then load the appropriate config section based on that:</p>
	<div id="phpizer_div_1" class="code">
<code><span style="color: #000000"><br />
<span style="color: #0000BB">&lt;?php<br />$environment&nbsp;</span><span style="color: #007700">=&nbsp;(</span><span style="color: #0000BB">php_uname</span><span style="color: #007700">(</span><span style="color: #DD0000">&#8216;n&#8217;</span><span style="color: #007700">)&nbsp;==&nbsp;</span><span style="color: #DD0000">&#8216;rlbolton-desktop&#8217;</span><span style="color: #007700">)&nbsp;?&nbsp;</span><span style="color: #DD0000">&#8216;development&#8217;&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">&#8216;production&#8217;</span><span style="color: #007700">;<br />
</span><span style="color: #0000BB">$config&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">Zend_Config_Ini</span><span style="color: #007700">(</span><span style="color: #0000BB">APP_PATH&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">&#8216;configs/config.ini&#8217;</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$environment</span><span style="color: #007700">);<br />
<br /></span><span style="color: #0000BB">?&gt;<br /></span><br />
</span><br />
</code></div>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/loading-zend-config-file-for-a-cron-job/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Traits for PHP</title>
		<link>http://www.robertbolton.com/traits-for-php</link>
		<comments>http://www.robertbolton.com/traits-for-php#comments</comments>
		<pubDate>Mon, 17 Mar 2008 22:55:10 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>PHP</category>
	<category>Zend Framework</category>
		<guid>http://www.robertbolton.com/traits-for-php</guid>
		<description><![CDATA[	Via blog, found a link to a proposal for Traits in PHP. I wasn&#8217;t familiar with the practice, but as I read the proposal it struck a cord with me. I have been grappling with how to reuse certain functionality throughout disparate classes. 
	I looked at Mixins, which I also have been playing around with [...]]]></description>
			<content:encoded><![CDATA[	<p>Via blog, found a link to a proposal for <a href="http://news.php.net/php.internals/35562">Traits in PHP</a>. I wasn&#8217;t familiar with the practice, but as I read the proposal it struck a cord with me. I have been grappling with how to reuse certain functionality throughout disparate classes. </p>
	<p>I looked at <a href="http://en.wikipedia.org/wiki/Mixin">Mixins</a>, which I also have been playing around with in JavaScript. Problem is, how do you combine a couple of mixins together. Say I am using the Zend Framework, and I have some classes that inherit from the Zend_Db_Table_Row and I want a couple to use some Mixin classes. Do I extend the Zend class for my Mixin, and extend my other classes off the Mixin? What happens if some of the classes need other functionality found in a different Mixin? Needless to say, it doesn&#8217;t seem like a great solution.</p>
	<p>Lets jump into an example. I have a number of classes extending Zend_Db_Table_Row, and they all have a user entered attribute, like title or name, which gets turned into a SEO friendly url and saved to the database. Additionally, I don&#8217;t want the url to change, so there has to be code from preventing another developer from updating the url.For example,<br />
<div id="phpizer_div_1" class="code">
<code><span style="color: #000000"><br />
<span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">Article&nbsp;</span><span style="color: #007700">extends&nbsp;</span><span style="color: #0000BB">Zend_Db_Table_Row<br />
</span><span style="color: #007700">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">insert</span><span style="color: #007700">()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_createUrl</span><span style="color: #007700">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">insert</span><span style="color: #007700">()<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</p>
	<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;function&nbsp;</span><span style="color: #0000BB">_createUrl</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//code&nbsp;to&nbsp;create&nbsp;the&nbsp;url&nbsp;-&nbsp;remove&nbsp;spaces,&nbsp;etc&#8230;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">$url<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">}<br />
}<br />
<br /></span><span style="color: #0000BB">?&gt;<br /></span><br />
</span><br />
</code></div>
	<p>How do I share that functionality across multiple classes, without using inheritance??
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/traits-for-php/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Data conversion Failed on MS SQL Import</title>
		<link>http://www.robertbolton.com/data-conversion-failed-on-ms-sql-import</link>
		<comments>http://www.robertbolton.com/data-conversion-failed-on-ms-sql-import#comments</comments>
		<pubDate>Sat, 23 Feb 2008 16:37:35 +0000</pubDate>
		<dc:creator>Administrator</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://www.robertbolton.com/data-conversion-failed-on-ms-sql-import</guid>
		<description><![CDATA[	
	The database was upgraded to MS SQL 9 and required me to use 2005 SQL Server Management Studio instead of Enterprise Manager. While trying to import a .csv file, I ran into a number of errors and spent awhile trying to figure out what the problem was. If you get a similar error, the problems [...]]]></description>
			<content:encoded><![CDATA[	<p><!--adsense--></p>
	<p>The database was upgraded to MS SQL 9 and required me to use 2005 SQL Server Management Studio instead of Enterprise Manager. While trying to import a .csv file, I ran into a number of errors and spent awhile trying to figure out what the problem was. If you get a similar error, the problems seems (I say seem, because I am not a database guy and am simply guessing. Further exacerbating the problem is my extremely limited use of MS SQL) to be that the import tool isn’t allocating enough room for the strings going into certain columns.  I.e it looks at the first 100 rows to determine how much space a typical field needs, and if a value goes way over that, it truncates the string and errors. This is the error message I got:</p>
	<p>Error 0xc02020a1: Data Flow Task: Data conversion failed. The data conversion for column &#8220;ClickThroughURLValue&#8221; returned status value 4 and status text &#8220;Text was truncated or one or more characters had no match in the target code page.&#8221;.<br />
 (SQL Server Import and Export Wizard)</p>
	<p>I tried to alter the values in the destination table, but that didn’t help at all. It turns out; you need to alter the OutputColumnWidth on the first screen. Since space and performance weren’t an issue for me, I just made the nvarchar quadruple the size it needed to be, so it could accommodate the random large string. One of the problems with the tool is it will error and fail on the insert when it encounters too big of a value, rather than just truncating and logging. This doesn’t seem like a huge issue, until you have a 15 gig .csv with over 4 million rows and it errors after 2 hours of importing… Below is a screenshot showing where the change needs to be made. Doing this will also alter the size of the column in the destination table and prevented the error for me.</p>
	<p><img src='/wp-content/MSSQL_PIC.png' alt='MS SQL Error' />
</p>
]]></content:encoded>
			<wfw:commentRSS>http://www.robertbolton.com/data-conversion-failed-on-ms-sql-import/feed/</wfw:commentRSS>
	</item>
	</channel>
</rss>
